Πίνακας περιεχομένων:
- Βήμα 1: Απαιτούμενα εξαρτήματα
- Βήμα 2: Συναρμολόγηση του ρομπότ
- Βήμα 3: Δημιουργήστε το δικό σας λαβύρινθο - Προαιρετικό
- Βήμα 4: Ρύθμιση του περιβάλλοντος
- Βήμα 5: Προγραμματισμός του GiggleBot - Μέρος Ι
- Βήμα 6: Προγραμματισμός του τηλεχειριστηρίου - Μέρος II
- Βήμα 7: Ερμηνεία της απομακρυσμένης οθόνης
Βίντεο: Φτιάξτε ένα ρομπότ με καθοδήγηση Lidar με το GiggleBot: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Σε αυτό το σεμινάριο, κάνουμε το GiggleBot να αντιμετωπίσει τις δυσκολίες ενός λαβυρίνθου.
Τοποθετούμε ένα σερβο στο GiggleBot στο οποίο συνδέουμε έναν αισθητήρα απόστασης. Ενώ λειτουργεί, το σερβο θα περιστρέφεται μπρος -πίσω έτσι ώστε ο αισθητήρας απόστασης να μπορεί να μετρήσει την απόσταση μέχρι κάθε εμπόδιο. Αυτό λειτουργεί σαν αισθητήρας LIDAR που είναι συνήθως πολύ πιο ακριβός.
Ταυτόχρονα, το GiggleBot στέλνει αυτά τα δεδομένα σε ένα απομακρυσμένο μικροσκόπιο του BBC: bit που εμφανίζει στη μήτρα 5 προς 5 των LEDs τη σχετική του θέση στα εμπόδια.
Η δουλειά σας είναι να μπορείτε να πλοηγηθείτε στο GiggleBot μόνο κοιτάζοντας αυτό που εμφανίζεται στο άλλο μικρόβιο του BBC: bit. Για τον έλεγχο του GiggleBot, χρησιμοποιούνται τα κουμπιά στο απομακρυσμένο μικρόφωνο BBC: bit.
Αυτό ακούγεται διασκεδαστικό! Ας ασχοληθούμε με αυτό, έτσι δεν είναι;
Βήμα 1: Απαιτούμενα εξαρτήματα
Θα χρειαστούμε:
- Ένα GiggleBot.
- Μπαταρία για το BBC micro: bit. Έρχεται μαζί με ένα μικροσκόπιο BBC: bit στο πακέτο του.
- x3 μπαταρίες AA για το GiggleBot.
- Καλώδιο Grove για σύνδεση του αισθητήρα απόστασης στο GiggleBot.
- Ένα σερβο σετ από την DexterIndustries.
- x3 BBC micro: bits. Ένα για το GiggleBot και ένα για τον έλεγχο του ρομπότ από μακριά.
- Αισθητήρας απόστασης από την DexterIndustries.
Αποκτήστε το ρομπότ GiggleBot για το μικρόφωνο του BBC: λίγο εδώ!
Βήμα 2: Συναρμολόγηση του ρομπότ
Για να κάνουμε το GiggleBot έτοιμο για προγραμματισμό, πρέπει να το συναρμολογήσουμε, αν και δεν χρειάζεται να γίνει πολύ.
Τοποθετήστε τις 3 μπαταρίες ΑΑ στο διαμέρισμα του κάτω από το GiggleBot.
Συναρμολογήστε το σερβο πακέτο. Στον περιστρεφόμενο βραχίονα του σερβο, χρησιμοποιήστε την τελευταία τρύπα του για να στερεώσετε το σερβο στα μπροστινά βύσματα του GiggleBot. Μπορείτε να χρησιμοποιήσετε μια βίδα και/ή κάποιο σύρμα για να το κάνετε πιο σταθερό στη θέση του. Or μπορείτε να το κολλήσετε ζεστά στον πίνακα. Στην περίπτωσή μου, χρησιμοποίησα μια βίδα και ένα κοντό σύρμα για να συνδέσω τον βραχίονα σερβο στην πλακέτα GiggleBot.
Κατά την τοποθέτηση του βραχίονα σερβο σερβο, βεβαιωθείτε ότι ο σερβο έχει ήδη ρυθμιστεί στη θέση 80. Μπορείτε να το κάνετε αυτό καλώντας το gigglebot.set_servo (gigglebot. RIGHT, 80). Μπορείτε να διαβάσετε περισσότερα για αυτό εδώ.
Στη συνέχεια, τοποθετήστε τον αισθητήρα απόστασης στην μπροστινή πλευρά του servo πακέτου και διορθώστε τον όπως στο παραπάνω παράδειγμα.
Τέλος, συνδέστε τον αισθητήρα απόστασης με ένα καλώδιο Grove σε οποιαδήποτε από τις 2 θύρες I2C και το σερβοκινητήρα στη δεξιά θύρα που βρίσκεται στο GiggleBot - η σωστή θύρα αναφέρεται σε αυτό.
Βήμα 3: Δημιουργήστε το δικό σας λαβύρινθο - Προαιρετικό
Σε αυτήν την περίπτωση, έχω χρησιμοποιήσει ένα σωρό κουτιά για να δημιουργήσω ένα κομμάτι κλειστού βρόχου, παρόμοιο με αυτό του NASCAR.
Σε αυτό το βήμα, μπορείτε να γίνετε πραγματικά δημιουργικοί και να το κάνετε όσο εσείς θέλετε ή να το κάνετε πολύ μακρύ γιατί εξαρτάται πραγματικά από εσάς.
Or αν δεν θέλετε καθόλου ένα κομμάτι, μπορείτε να βάλετε το GiggleBot σε μια κουζίνα ή ένα σαλόνι για παράδειγμα - αυτό θα πρέπει να είναι αρκετά καλό γιατί υπάρχουν πολλοί τοίχοι και εμπόδια που πρέπει ακόμα να αποφύγετε.
Βήμα 4: Ρύθμιση του περιβάλλοντος
Για να μπορέσετε να προγραμματίσετε το BBC micro: bit στο MicroPython, πρέπει να ρυθμίσετε έναν επεξεργαστή για αυτό (το Mu Editor) και να ορίσετε τον χρόνο εκτέλεσης του GiggleBot MicroPython ως χρόνου εκτέλεσης. Για αυτό, πρέπει να ακολουθήσετε τις οδηγίες σε αυτήν τη σελίδα. Από εκείνη τη στιγμή, χρησιμοποιείται η έκδοση v0.4.0 του χρόνου εκτέλεσης.
Βήμα 5: Προγραμματισμός του GiggleBot - Μέρος Ι
Αρχικά, ας ρυθμίσουμε το σενάριο του GiggleBot. Αυτό το σενάριο θα κάνει το GiggleBot να περιστρέφει τον σερβοκινητήρα του 160 μοίρες (80 μοίρες σε κάθε κατεύθυνση), ενώ ταυτόχρονα λαμβάνει 10 ενδείξεις από τον αισθητήρα απόστασης ανά στροφή.
Όταν είναι ενεργοποιημένο, το GiggleBot θα παραμείνει σε κατάσταση αναμονής μέχρι να λάβει μια εντολή από το τηλεχειριστήριο. Μπορεί να υπάρχουν μόνο 3 εντολές: προχωρήστε προς τα εμπρός, προς τα αριστερά ή προς τα δεξιά.
Σημείωση: Το ακόλουθο σενάριο μπορεί να έχει κενά κενά και αυτό φαίνεται να οφείλεται σε κάποιο πρόβλημα στην εμφάνιση των GitHub Gists. Κάντε κλικ στην ουσία για να μεταφερθείτε στη σελίδα του GitHub, όπου μπορείτε να αντιγράψετε-επικολλήσετε τον κώδικα.
Τηλεχειριζόμενο GiggleBot με βάση το LIDAR
από εισαγωγή gigglebot* |
από distance_sensor εισαγωγή DistanceSensor |
από ύπνο εισαγωγής microbit |
από utime import ticks_us, sleep_us |
εισαγωγή ustruct |
εισαγωγή ραδιοφώνου |
# σταματήστε το ρομπότ αν κινείται ήδη |
να σταματήσει() |
# ενεργοποίηση ραδιοφώνου |
radio.on () |
# αντικείμενο αισθητήρα απόστασης |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0,7# μετρημένο σε δευτερόλεπτα |
rotate_span = 160# μετρημένο σε μοίρες |
rotate_steps = 10 |
overhead_compensation = 1,05# ορίζεται σε ποσοστά |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
ραντάρ = bytearray (rotate_steps) |
servo_rotate_direction = 0# 0 για ανοδική πορεία (0-> 160) και 1 αλλιώς |
radar_index = 0 |
set_servo (ΔΕΞΙΑ, 0) |
ενώ Αλήθεια: |
# διαβάστε από το ραντάρ |
εάν ticks_us () - last_read_time> time_per_step: |
# ανάγνωση από τον αισθητήρα απόστασης |
ραντάρ [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
εκτύπωση (radar_index) |
# κάντε τη λογική για περιστροφή του σερβο από αριστερά προς τα δεξιά |
εάν radar_index == rotate_steps -1και servo_rotate_direction == 0: |
set_servo (ΔΕΞΙΑ, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0και servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
αλλού: |
radar_index += 1αν servo_rotate_direction == 0else-1 |
# και στείλτε τις τιμές του ραντάρ |
radio.send_bytes (ραντάρ) |
προσπαθήστε: |
# διαβάστε εντολές ρομπότ |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# και ενεργοποιήστε τους κινητήρες εάν υπάρχουν ληφθείσες εντολές |
set_speed (lmotor, rmotor) |
οδηγώ() |
εκτόςTypeError: |
πέρασμα |
προβολή rawgigglebot_lidar_robot.py που φιλοξενείται με ❤ από το GitHub
Βήμα 6: Προγραμματισμός του τηλεχειριστηρίου - Μέρος II
Αυτό που μένει να γίνει είναι ο προγραμματισμός του 2ου μικροφώνου BBC: bit που λειτουργεί ως τηλεχειριστήριο.
Το τηλεχειριστήριο χρησιμοποιείται για να εμφανίσει στην οθόνη του 5 με 5 εικονοστοιχεία τη σχετική απόσταση από τα εμπόδια. Το πολύ, θα είναι ενεργοποιημένα 10 pixel.
Ταυτόχρονα, το τηλεχειριστήριο σάς δίνει τις δυνατότητες για τον τηλεχειρισμό του GiggleBot πατώντας τα 2 κουμπιά του: προχωρήστε προς τα εμπρός, προς τα αριστερά και προς τα δεξιά.
Σημείωση: Το ακόλουθο σενάριο μπορεί να έχει κενά κενά και αυτό φαίνεται να οφείλεται σε κάποιο πρόβλημα στην εμφάνιση των GitHub Gists. Κάντε κλικ στην ουσία για να μεταφερθείτε στη σελίδα του GitHub, όπου μπορείτε να αντιγράψετε-επικολλήσετε τον κώδικα.
Τηλεχειριζόμενο GiggleBot με βάση το LIDAR - Απομακρυσμένος κώδικας
από ύπνο εισαγωγής microbit, οθόνη, κουμπί_α, κουμπί_β |
εισαγωγή ustruct |
εισαγωγή ραδιοφώνου |
εισαγωγή μαθηματικών |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# σε μοίρες |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# σε εκατοστά |
side_length_leds = 3 # μετρημένο στο # εικονοστοιχείων |
ραντάρ = bytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
Save_xar = bytearray (rotate_steps) |
save_yar = bytearray (rotate_steps) |
ταχύτητα_κινητήρα = 50 |
ενώ Αλήθεια: |
κατάσταση = radio.receive_bytes_into (ραντάρ) |
αν η κατάσταση δεν είναι Καμία: |
# display.clear () |
για το c, val inenumerate (ραντάρ): |
αν ραντάρ [c] <= max_distance: |
# υπολογίστε 2δ συντεταγμένες κάθε απόστασης |
γωνία = rotate_steps / (rotate_steps -1) * rotate_step * c |
γωνία += (180- rotate_span) /2.0 |
x_c = math.cos (γωνία * math.pi /180.0) * ραντάρ [c] |
y_c = math.sin (γωνία * math.pi /180.0) * ραντάρ [c] |
# κλιμακώστε τις αποστάσεις που ταιριάζουν στην οθόνη 5x5 microbit |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# συντεταγμένες επανατοποθέτησης |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# round συντεταγμένες ακριβώς εκεί που βρίσκονται τα LED |
αν x_c - math.floor (x_c) <0,5: |
x_c = math.floor (x_c) |
αλλού: |
x_c = math.ceil (x_c) |
αν y_c - math.floor (y_c) <0,5: |
y_c = math.floor (y_c) |
αλλού: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
αλλού: |
xar [c] = 0 |
γιάρ [γ] = 0 |
display.clear () |
για x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# εκτύπωση (λίστα (zip (xar, yar, ραντάρ))) |
κατάστασηA = button_a.s_pressed () |
κατάστασηB = button_b.is_pressed () |
εάν κατάστασηA και stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
εκτύπωση ('εμπρός') |
εάν κατάστασηΑ και όχι κατάστασηΒ: |
radio.send_bytes (ustruct.pack ("bb", motor_speed, -motor_speed)) |
εκτύπωση («αριστερά») |
ifnot κατάστασηA και stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
εκτύπωση ("δεξιά") |
εάν δεν είναι κατάσταση και δεν είναι κατάσταση Β: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
εκτύπωση ("διακοπή") |
προβολή rawgigglebot_lidar_remote.py που φιλοξενείται με ❤ από το GitHub
Βήμα 7: Ερμηνεία της απομακρυσμένης οθόνης
"loading =" lazy "ελέγξτε το GiggleBot, έχετε τις ακόλουθες επιλογές:
- Πατήστε τα κουμπιά A και B για να μετακινήσετε το GiggleBot προς τα εμπρός.
- Πατήστε το κουμπί A για να περιστρέψετε το GiggleBot προς τα αριστερά.
- Πατήστε το κουμπί B για να περιστρέψετε το GiggleBot προς τα δεξιά.
Για να δείτε σε ποια κατεύθυνση εντοπίζονται τα πλησιέστερα εμπόδια, απλώς κοιτάξτε την οθόνη του τηλεχειριστηρίου (το απομακρυσμένο μικροσκόπιο BBC: bit που κρατάτε). Θα πρέπει να μπορείτε να ελέγχετε το GiggleBot από μακριά χωρίς να το κοιτάτε.
Συνιστάται:
Φτιάξτε ένα χορευτικό ρομπότ χωρίς τρισδιάστατο εκτυπωτή και Arduino/#smartcreativity: 11 βήματα (με εικόνες)
Φτιάξτε ένα χορευτικό ρομπότ χωρίς τρισδιάστατο εκτυπωτή και Arduino/#smartcreativity: Γεια σας φίλοι, σε αυτό το σεμινάριο θα σας δείξω πώς να φτιάξετε ένα ρομπότ που χορεύει στο σπίτι χωρίς τρισδιάστατο εκτυπωτή και χωρίς Arduino. Αυτό το ρομπότ είναι σε θέση να χορεύει, να εξισορροπεί αυτόματα, να παράγει μουσική και να περπατά. Και ο σχεδιασμός του Robot φαίνεται επίσης πολύ δροσερός
Φτιάξτε ένα φτηνό ρομπότ πυρόσβεσης στο σπίτι .: 6 βήματα
Φτιάξτε ένα φθηνό ρομπότ πυρόσβεσης στο σπίτι: Θέλετε να δημιουργήσετε ένα έργο ασφάλειας για την υποβολή του κολλεγίου σας ή ίσως για προσωπική σας χρήση; Στη συνέχεια, το Fire Fighting Robot είναι μια εξαιρετική επιλογή! Έφτιαξα αυτό το πρωτότυπο ως έργο του τελευταίου έτους σε περίπου 50 δολάρια ΗΠΑ (3500 INR). Δείτε το βίντεο επίδειξης παραπάνω. Αυτό το ρομπότ λειτουργεί
Ρομπότ εξισορρόπησης / ρομπότ 3 τροχών / ρομπότ STEM: 8 βήματα
Ρομπότ εξισορρόπησης / ρομπότ 3 τροχών / ρομπότ STEM: Έχουμε δημιουργήσει ένα συνδυασμένο ρομπότ εξισορρόπησης και 3 τροχών για εκπαιδευτική χρήση σε σχολεία και εκπαιδευτικά προγράμματα μετά το σχολείο. Το ρομπότ βασίζεται σε ένα Arduino Uno, μια προσαρμοσμένη ασπίδα (παρέχονται όλες οι λεπτομέρειες κατασκευής), μια μπαταρία ιόντων λιθίου (όλα κατασκευασμένα
Φτιάξτε ένα ηλιακό ρομπότ σφάλματος: 9 βήματα (με εικόνες)
Φτιάξτε ένα ηλιακό ρομπότ σφαλμάτων: Αυτά τα ρομπότ μπορεί να είναι μικρά και κάπως απλά, αλλά η εύκολη κατασκευή, η μοναδική μετακίνηση και η περίεργη προσωπικότητά τους τα καθιστούν υπέροχα ως έργο ρομποτικής για πρώτη φορά. Σε αυτό το έργο θα δημιουργήσουμε ένα απλό ρομπότ που μοιάζει με σφάλμα που θα
Φτιάξτε ένα πολύ μικρό ρομπότ: Φτιάξτε το μικρότερο ρομπότ στον κόσμο με ροδάκι: 9 βήματα (με εικόνες)
Κατασκευάστε ένα πολύ μικρό ρομπότ: Φτιάξτε το μικρότερο ρομπότ στον κόσμο με ροδάκι: Φτιάξτε ένα ρομπότ 1/20 κυβικών ιντσών με μια λαβή που μπορεί να παραλάβει και να μετακινήσει μικρά αντικείμενα. Ελέγχεται από μικροελεγκτή Picaxe. Αυτή τη στιγμή, πιστεύω ότι αυτό μπορεί να είναι το μικρότερο ρομπότ με τροχούς στον κόσμο με λαβή. Αυτό αναμφίβολα θα κάνει