Πίνακας περιεχομένων:

Δημιουργήστε το δικό σας ρομπότ Turtlebot!: 7 βήματα
Δημιουργήστε το δικό σας ρομπότ Turtlebot!: 7 βήματα

Βίντεο: Δημιουργήστε το δικό σας ρομπότ Turtlebot!: 7 βήματα

Βίντεο: Δημιουργήστε το δικό σας ρομπότ Turtlebot!: 7 βήματα
Βίντεο: Τα 5 καλύτερα παιχνίδια STEM για παιδιά το 2024 2024, Ιούλιος
Anonim
Φτιάξτε το δικό σας ρομπότ Turtlebot!
Φτιάξτε το δικό σας ρομπότ Turtlebot!
Φτιάξτε το δικό σας ρομπότ Turtlebot!
Φτιάξτε το δικό σας ρομπότ Turtlebot!
Φτιάξτε το δικό σας ρομπότ Turtlebot!
Φτιάξτε το δικό σας ρομπότ Turtlebot!

ΕΠΕΞΕΡΓΑΣΙΑ:

Περισσότερες πληροφορίες σχετικά με το λογισμικό και τον έλεγχο είναι διαθέσιμες σε αυτόν τον σύνδεσμο:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Ο άμεσος σύνδεσμος προς τον κώδικα είναι:

github.com/MattMgn/foxbot_core

Γιατί αυτό το έργο;

Το Turtlebot 3 είναι η τέλεια πλατφόρμα για βαθιά ηλεκτρονική, ρομποτική και ακόμη και τεχνητή νοημοσύνη! Σας προτείνω να φτιάξετε το δικό σας turtlebot βήμα-βήμα με προσιτά εξαρτήματα χωρίς να θυσιάζετε τα χαρακτηριστικά και την απόδοση. Με ένα πράγμα στο μυαλό: κρατώντας το καλύτερο από το αρχικό ρομπότ, την αρθρωτότητά του, την απλότητα και τον τεράστιο αριθμό πακέτων για αυτόνομη πλοήγηση και AI από την κοινότητα ανοιχτού κώδικα.

Αυτό το έργο είναι μια ευκαιρία για αρχάριους να αποκτήσουν έννοιες ηλεκτρονικής, μηχανικής και επιστήμης υπολογιστών και για τους πιο έμπειρους να αποκτήσουν μια ισχυρή πλατφόρμα για να δοκιμάσουν και να αναπτύξουν αλγόριθμους τεχνητής νοημοσύνης.

Τι θα ανακαλύψετε σε αυτό το έργο;

Πρόκειται να ανακαλύψετε ποια βασικά μηχανικά και ηλεκτρονικά μέρη πρέπει να φυλάσσονται από το αρχικό bot για να εγγυηθείτε πλήρη συμβατότητα.

Ολόκληρη η διαδικασία κατασκευής θα είναι λεπτομερής: από την εκτύπωση τρισδιάστατων τμημάτων, τη συναρμολόγηση και τα διάφορα εξαρτήματα, τη συγκόλληση και την ενσωμάτωση ηλεκτρονικών συσκευών μέχρι την τελική σύνταξη κώδικα στο Arduino. Αυτό το διδακτικό θα ολοκληρωθεί σε ένα παράδειγμα «γεια στον κόσμο» για να σας εξοικειώσει με το ROS. Εάν κάτι φαίνεται ασαφές, μη διστάσετε να κάνετε μια ερώτηση!

Προμήθειες

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ:

1 x Υπολογιστής Single Board για εκτέλεση ROS, θα μπορούσε να είναι ένα Raspberry Pi ή ένα Jetson Nano για παράδειγμα

1 x Arduino ΛΟΓΩ, μπορείτε επίσης να χρησιμοποιήσετε ένα UNO ή ένα MEGA

1 x Proto-board που ταιριάζει στο Arduino DUE pin-out είναι διαθέσιμο εδώ

2 x 12V DC κινητήρες με κωδικοποιητές (επιλογή 100 RPM)

1 x οδηγός κινητήρα L298N

2 x 5V ρυθμιστής

1 x Μπαταρία (3S/4S LiPo μπαταρία για παράδειγμα)

2 x διακόπτες ON/OFF

2 x LED

2 αντιστάσεις 470kOhm

3 x 4 ακίδες JST συνδετήρες

1 x καλώδιο USB (τουλάχιστον ένα μεταξύ του SBC και του Arduino)

Αισθητήρες:

1 x Αισθητήρας ρεύματος (προαιρετικό)

1 x 9 Βαθμοί Ελευθερίας IMU (προαιρετικό)

1 x LIDAR (προαιρετικό)

Σασί:

16 x αρθρωτές πλάκες Turtlebot (οι οποίες μπορούν επίσης να εκτυπωθούν 3D)

2 x Τροχοί διαμέτρου 65mm (επιλογή πλάτους 6mm)

4 x νάιλον αποστάτες 30mm (προαιρετικά)

20 x ένθετα M3 (προαιρετικά)

Οι υπολοιποι:

Καλώδια

Βίδες και ένθετα M2.5 και M3

Τρισδιάστατος εκτυπωτής ή κάποιος που μπορεί να εκτυπώσει τα εξαρτήματα για εσάς

Ένα τρυπάνι χειρός με ένα σετ τρυπάνι όπως αυτό

Βήμα 1: Περιγραφή

Περιγραφή
Περιγραφή
Περιγραφή
Περιγραφή

Αυτό το ρομπότ είναι μια απλή διαφορική κίνηση που χρησιμοποιεί 2 τροχούς απευθείας τοποθετημένους στον κινητήρα τους και ένα ρολό που τοποθετείται στο πίσω μέρος για να αποτρέψει την πτώση του ρομπότ. Το ρομπότ χωρίζεται σε δύο στρώματα:

το κατώτερο στρώμα: με την ομάδα πρόωσης (μπαταρία, ελεγκτή κινητήρα και κινητήρες) και τα ηλεκτρονικά «χαμηλού επιπέδου»: μικροελεγκτής Arduino, ρυθμιστής τάσης, διακόπτες…

το ανώτερο στρώμα: με το ηλεκτρονικό «υψηλού επιπέδου», δηλαδή τον υπολογιστή ενός πίνακα και το LIDAR

Αυτά τα στρώματα συνδέονται με τυπωμένα μέρη και βίδες για να διασφαλιστεί η στιβαρότητα της δομής.

Ηλεκτρονικό σχηματικό

Το σχηματικό μπορεί να φαίνεται λίγο ακατάστατο. Είναι ένα σχηματικό σχέδιο και δεν αντιπροσωπεύει όλα τα καλώδια, τους συνδετήρες και τον πρωτο-πίνακα, αλλά μπορεί να διαβαστεί ως εξής:

Μια μπαταρία 3S Litihum Ion Polymer με χωρητικότητα 3000mAh τροφοδοτεί το πρώτο κύκλωμα, τροφοδοτεί τόσο την πλακέτα ελεγκτή κινητήρα (L298N) όσο και έναν πρώτο ρυθμιστή 5V για κωδικοποιητές κινητήρων και Arduino. Αυτό το κύκλωμα ενεργοποιείται μέσω ενός διακόπτη με LED που υποδεικνύει την κατάσταση ON/OFF.

Η ίδια μπαταρία τροφοδοτεί ένα δεύτερο κύκλωμα, η τάση εισόδου μετατρέπεται σε 5V για να τροφοδοτήσει τον υπολογιστή ενός πίνακα. Και εδώ, το κύκλωμα ενεργοποιείται μέσω διακόπτη και LED.

Πρόσθετοι αισθητήρες όπως ένα LIDAR ή μια κάμερα μπορούν στη συνέχεια να προστεθούν απευθείας στο Raspberry Pi μέσω USB ή θύρας CSI.

Μηχανικός σχεδιασμός

Το πλαίσιο του ρομπότ αποτελείται από 16 όμοια μέρη που σχημάτισαν 2 τετράγωνα στρώματα (πλάτος 28εκ.). Οι πολλές οπές επιτρέπουν την τοποθέτηση πρόσθετων εξαρτημάτων όπου το χρειάζεστε και προσφέρουν έναν πλήρη αρθρωτό σχεδιασμό. Για αυτό το έργο, αποφάσισα να πάρω τα πρωτότυπα πιάτα TurtleBot3, αλλά μπορείτε επίσης να τα εκτυπώσετε 3D καθώς ο σχεδιασμός τους είναι ανοιχτού κώδικα.

Βήμα 2: Συναρμολόγηση μπλοκ κινητήρα

Συναρμολόγηση μπλοκ κινητήρα
Συναρμολόγηση μπλοκ κινητήρα
Συναρμολόγηση μπλοκ κινητήρα
Συναρμολόγηση μπλοκ κινητήρα
Συναρμολόγηση μπλοκ κινητήρα
Συναρμολόγηση μπλοκ κινητήρα

Προετοιμασία κινητήρα

Το πρώτο βήμα είναι να προσθέσετε ταινία αφρού πάχους 1mm γύρω από κάθε κινητήρα για να αποφύγετε κραδασμούς και θόρυβο όταν ο κινητήρας περιστρέφεται.

Τυπωμένα ανταλλακτικά

Ο κάτοχος του κινητήρα έχει ως αποτέλεσμα δύο μέρη που πιάνουν τον κινητήρα σαν βίτσιο. Επιτυγχάνονται 4 βίδες για να σφίξετε τον κινητήρα στη βάση.

Κάθε στήριγμα αποτελείται από πολλές οπές που φιλοξενούν ένθετα Μ3 για να τοποθετηθούν στη δομή. Υπάρχουν περισσότερες οπές από ό, τι πραγματικά χρειάζονταν, οι επιπλέον τρύπες θα μπορούσαν τελικά να χρησιμοποιηθούν για την τοποθέτηση επιπλέον εξαρτήματος.

Ρυθμίσεις εκτυπωτή 3D: όλα τα μέρη εκτυπώνονται με τις ακόλουθες παραμέτρους

  • Ακροφύσιο διαμέτρου 0,4mm
  • 15% γέμισμα υλικού
  • Στρώμα ύψους 0,2 mm

Ρόδα

Οι επιλεγμένοι τροχοί είναι καλυμμένοι με καουτσούκ για να μεγιστοποιήσουν την πρόσφυση και να εξασφαλίσουν συνθήκες κύλισης χωρίς ολίσθηση. Μια βίδα σύσφιξης διατηρεί τον τροχό τοποθετημένο στον άξονα του κινητήρα. Η διάμετρος του τροχού πρέπει να είναι αρκετά μεγάλη ώστε να διασχίζει την παρατυπία μικρού σκαλοπατιού και εδάφους (αυτοί οι τροχοί έχουν διάμετρο 65mm).

Στερέωση

Όταν τελειώσετε με ένα μπλοκ κινητήρα, επαναλάβετε τις προηγούμενες λειτουργίες και στη συνέχεια απλώς στερεώστε τις στο στρώμα με βίδες Μ3.

Βήμα 3: Διακόπτες και προετοιμασία καλωδίου

Διακόπτες και προετοιμασία καλωδίου
Διακόπτες και προετοιμασία καλωδίου
Διακόπτες και προετοιμασία καλωδίου
Διακόπτες και προετοιμασία καλωδίου
Διακόπτες και προετοιμασία καλωδίου
Διακόπτες και προετοιμασία καλωδίου

Προετοιμασία καλωδίου κινητήρα

Γενικά, ο κωδικοποιητής κινητήρα συνοδεύεται από ένα καλώδιο που περιλαμβάνει στη μία πλευρά έναν σύνδεσμο 6 ακίδων που συνδέει το πίσω μέρος του PCB κωδικοποιητή και γυμνά καλώδια από την άλλη πλευρά.

Έχετε τη δυνατότητα να τα κολλήσετε απευθείας στον πρωτο-πίνακα ή ακόμα και στο Arduino σας, αλλά σας συνιστώ να χρησιμοποιήσετε αντ 'αυτού γυναικείες κεφαλίδες καρφιτσών και συνδέσμους JST-XH. Έτσι, μπορείτε να τα συνδέσετε/αποσυνδέσετε στον πρωτο-πίνακα και να κάνετε τη συναρμολόγησή σας ευκολότερη.

Συμβουλές: μπορείτε να προσθέσετε επεκτάσιμη πλεξούδα μανικιών γύρω από τα καλώδια σας και κομμάτια συρρικνωμένου σωλήνα κοντά σε συνδέσμους, κάνοντας έτσι ένα «καθαρό» καλώδιο.

Διακόπτης και LED

Για να ενεργοποιήσετε τα δύο κυκλώματα τροφοδοσίας, ετοιμάστε 2 καλώδια LED και διακόπτες: κολλήστε αρχικά μια αντίσταση 470kOhm σε έναν από τους πείρους LED και, στη συνέχεια, συγκολλήστε το LED σε έναν πείρο διακόπτη. Εδώ επίσης, μπορείτε να χρησιμοποιήσετε ένα κομμάτι συρρικνωμένου σωλήνα για να κρύψετε την αντίσταση στο εσωτερικό. Προσέξτε να κολλήσετε το LED στη σωστή κατεύθυνση! Επαναλάβετε αυτήν τη λειτουργία για να αποκτήσετε δύο καλώδια διακόπτη/led.

Συνέλευση

Συναρμολογήστε τα προηγούμενα καλώδια στο αντίστοιχο τρισδιάστατο τμήμα. Χρησιμοποιήστε ένα παξιμάδι για να διατηρήσετε τον διακόπτη, τα LED δεν απαιτούν κόλλα, απλώς πιέζετε αρκετά ώστε να χωρέσει στην τρύπα.

Βήμα 4: Καλωδίωση ηλεκτρονικών πινάκων

Ηλεκτρονικές πλακέτες καλωδίωση
Ηλεκτρονικές πλακέτες καλωδίωση
Ηλεκτρονικές πλακέτες καλωδίωση
Ηλεκτρονικές πλακέτες καλωδίωση
Ηλεκτρονικές πλακέτες καλωδίωση
Ηλεκτρονικές πλακέτες καλωδίωση

Διάταξη πινάκων

Ένας πρωτο-πίνακας που προσαρμόζει τη διάταξη του πίνακα Arduino χρησιμοποιείται για τη μείωση του αριθμού των καλωδίων. Στην κορυφή του πρωτο-πίνακα, το L298N είναι στοιβασμένο με γυναικεία κεφαλίδα Dupont (οι Dupont είναι κεφαλίδες "Arduino like").

Παρασκεύασμα L298N

Αρχικά, ο πίνακας L298N δεν συνοδεύεται από την αντίστοιχη αρσενική κεφαλίδα Dupont, πρέπει να προσθέσετε μια σειρά 9 ακίδων κάτω από τον πίνακα. Πρέπει να πραγματοποιήσετε 9 οπές με τρυπάνι διαμέτρου 1mm παράλληλα με τις υπάρχουσες οπές, όπως μπορείτε να δείτε στην εικόνα. Στη συνέχεια, συνδέστε τους αντίστοιχους πείρους των 2 σειρών με υλικά συγκόλλησης και κοντά καλώδια.

L298N pin-out

Το L298N αποτελείται από 2 κανάλια που επιτρέπουν τον έλεγχο ταχύτητας και κατεύθυνσης:

κατεύθυνση μέσω 2 ψηφιακών εξόδων, που ονομάζονται IN1, IN2 για το πρώτο κανάλι και IN3 και IN4 για το δεύτερο

ταχύτητα μέσω 1 ψηφιακών εξόδων, που ονομάζεται ENA για το πρώτο κανάλι και ENB για το δεύτερο

Διάλεξα το ακόλουθο pin-out με το Arduino:

αριστερός κινητήρας: IN1 στον πείρο 3, IN2 στον πείρο 4, ENA στον πείρο 2

δεξί μοτέρ: IN3 στον πείρο 5, IN4 στον πείρο 6, ENB στον πείρο 7

Ρυθμιστής 5V

Ακόμα κι αν το l298N είναι κανονικά σε θέση να παρέχει 5V, εξακολουθώ να προσθέτω έναν μικρό ρυθμιστή. Τροφοδοτεί το Arduino μέσω της θύρας VIN και τους 2 κωδικοποιητές στους κινητήρες. Μπορείτε να παραλείψετε αυτό το βήμα χρησιμοποιώντας απευθείας τον ενσωματωμένο ρυθμιστή L298N 5V.

Συνδέσεις JST και κωδικοποιητής pin-out

Χρησιμοποιήστε θηλυκούς προσαρμογείς σύνδεσης JST-XH 4 ακίδων, κάθε σύνδεσμος στη συνέχεια συνδέεται με:

  • 5V από τον ρυθμιστή
  • ένα έδαφος
  • δύο ψηφιακές θύρες εισόδου (για παράδειγμα: 34 και 38 για τον δεξιό κωδικοποιητή και 26 και 30 για τον αριστερό)

Επιπλέον I2C

Όπως ίσως έχετε παρατηρήσει, υπάρχει ένας πρόσθετος σύνδεσμος JST 4 πείρων στον πρωτο-πίνακα. Χρησιμοποιείται για τη σύνδεση συσκευών I2C όπως IMU, μπορείτε να κάνετε το ίδιο και ακόμη και να προσθέσετε τη δική σας θύρα.

Βήμα 5: Motor Group και Arduino στο κάτω στρώμα

Motor Group και Arduino στο κάτω στρώμα
Motor Group και Arduino στο κάτω στρώμα
Motor Group και Arduino στο κάτω στρώμα
Motor Group και Arduino στο κάτω στρώμα
Motor Group και Arduino στο κάτω στρώμα
Motor Group και Arduino στο κάτω στρώμα

Στερέωση μπλοκ κινητήρων

Μόλις το κάτω στρώμα συναρμολογηθεί με τις πλάκες των 8 Turtlebot, απλώς χρησιμοποιήστε 4 βίδες Μ3 απευθείας στα ένθετα για να διατηρήσετε τα μπλοκ κινητήρα. Στη συνέχεια, μπορείτε να συνδέσετε τα καλώδια τροφοδοσίας κινητήρα στις εξόδους L298N και τα καλώδια που είχαν κατασκευαστεί προηγουμένως στους συνδέσμους JST του πρωτο-πίνακα.

Διανομή ισχύος

Η διανομή ισχύος πραγματοποιείται απλά με ένα τερματικό μπλοκ φραγμού. Στη μία πλευρά του φράγματος, βιδώνεται ένα καλώδιο με θηλυκό βύσμα XT60 για σύνδεση με μπαταρία LiPo. Από την άλλη πλευρά, τα δύο καλώδια LED/διακόπτη που έχουμε κολλήσει στο παρελθόν είναι βιδωμένα. Έτσι, κάθε κύκλωμα (Motor και Arduino) θα μπορούσε να ενεργοποιηθεί με το δικό του διακόπτη και το αντίστοιχο πράσινο LED.

Διαχείριση καλωδίων

Γρήγορα θα πρέπει να αντιμετωπίσετε πολλά καλώδια! Για να μειώσετε την ακατάστατη όψη, μπορείτε να χρησιμοποιήσετε τον «πίνακα» που είχε εκτυπωθεί προηγουμένως σε 3D. Στο τραπέζι, διατηρήστε τους ηλεκτρονικούς πίνακες με ταινία διπλής όψης και κάτω από το τραπέζι αφήστε τα καλώδια να ρέουν ελεύθερα.

Συντήρηση μπαταρίας

Για να αποφύγετε την εκτόξευση της μπαταρίας όταν οδηγείτε το ρομπότ σας, μπορείτε απλά να χρησιμοποιήσετε μια ελαστική ταινία μαλλιών.

Ρόλερ

Όχι στην πραγματικότητα ένα ρολό, αλλά μια απλή μισή σφαίρα στερεωμένη με 4 βίδες στο κάτω στρώμα. Αρκεί να διασφαλιστεί η σταθερότητα του ρομπότ.

Βήμα 6: Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα

Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα
Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα
Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα
Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα
Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα
Υπολογιστής μονής πλακέτας και αισθητήρες στο επάνω στρώμα

Ποιον υπολογιστή με έναν πίνακα να επιλέξω;

Δεν χρειάζεται να σας παρουσιάσω το περίφημο Raspberry Pi, ο αριθμός των περιπτώσεων χρήσης του υπερβαίνει σε μεγάλο βαθμό τον τομέα της ρομποτικής. Υπάρχει όμως ένας πολύ πιο ισχυρός αμφισβητίας για το Raspberry Pi που μπορεί να αγνοήσετε. Πράγματι, το Jetson Nano της Nvidia ενσωματώνει μια ισχυρή κάρτα γραφικών 128 πυρήνων εκτός από τον επεξεργαστή του. Η συγκεκριμένη κάρτα γραφικών έχει αναπτυχθεί για να επιταχύνει υπολογιστικά δαπανηρές εργασίες, όπως επεξεργασία εικόνας ή συμπεράσματα νευρωνικών δικτύων.

Για αυτό το έργο επέλεξα το Jetson Nano και μπορείτε να βρείτε το αντίστοιχο τρισδιάστατο μέρος μεταξύ των συνημμένων αρχείων, αλλά αν θέλετε να πάτε με το Raspberry Pi υπάρχουν πολλές θήκες για εκτύπωση εδώ.

Ρυθμιστής 5V

Όποια πλακέτα και να αποφασίσετε να φέρετε στο ρομπότ σας, χρειάζεστε έναν ρυθμιστή 5V. Το πιο πρόσφατο Raspberry Pi 4 απαιτεί μέγιστο 1,25Α, αλλά ο Jetson Nano απαιτεί έως και 3Α στο άγχος, οπότε επέλεξα το Pololu 5V 6A να έχει αποθεματικό ισχύος για μελλοντικά εξαρτήματα (αισθητήρες, φώτα, βηματιστές…), αλλά κάθε φθηνό 5V 2A πρέπει να το κάνει η εργασία. Το Jetson χρησιμοποιεί ένα βαρέλι DC 5,5 mm και το Pi ένα micro USB, πιάστε το αντίστοιχο καλώδιο και κολλήστε το στην έξοδο του ρυθμιστή.

Διάταξη LIDAR

Το LIDAR που χρησιμοποιείται εδώ είναι το LDS-01, υπάρχουν διάφορα άλλα 2D LIDAR που θα μπορούσαν να χρησιμοποιηθούν όπως το RPLidar A1/A2/A3, το YDLidar X4/G4 ή ακόμα και το Hokuyo LIDAR. Η μόνη απαίτηση είναι ότι πρέπει να συνδεθεί μέσω USB και να τοποθετηθεί στο κέντρο πάνω από τη δομή. Πράγματι, εάν το LIDAR δεν είναι καλά κεντραρισμένο, ο χάρτης που δημιουργείται από τον αλγόριθμο SLAM μπορεί να μετατοπίσει την εκτιμώμενη θέση των τοίχων και των εμποδίων από την πραγματική τους θέση. Επίσης, εάν κάποιο εμπόδιο από το ρομπότ διασχίσει τη δέσμη λέιζερ, θα μειώσει το εύρος και το οπτικό πεδίο.

Τοποθέτηση LIDAR

Το LIDAR είναι τοποθετημένο σε ένα τρισδιάστατο τυπωμένο τμήμα που ακολουθεί το σχήμα του, το ίδιο το μέρος κρατιέται σε μια ορθογώνια πλάκα (στην πραγματικότητα σε κόντρα πλακέ στην εικόνα, αλλά θα μπορούσε επίσης να εκτυπωθεί και 3D). Στη συνέχεια, ένα τμήμα προσαρμογέα επιτρέπει στο σύνολο να στερεωθεί στην επάνω πλάκα του turtlebot με νάιλον αποστάτες.

Κάμερα ως πρόσθετος αισθητήρας ή αντικατάσταση LIDAR

Εάν δεν θέλετε να ξοδέψετε πολλά χρήματα σε ένα LIDAR (το οποίο κοστίζει περίπου 100 $), επιλέξτε μια κάμερα: υπάρχουν επίσης αλγόριθμοι SLAM που λειτουργούν μόνο με μια μονοφθάλμια κάμερα RGB. Και οι δύο SBC δέχονται κάμερα USB ή CSI.

Επιπλέον, η κάμερα θα σας επιτρέψει να εκτελέσετε δέσμες ενεργειών υπολογιστή και ανίχνευσης αντικειμένων!

Συνέλευση

Πριν κλείσετε το ρομπότ, περάστε καλώδια από τις μεγαλύτερες τρύπες στην επάνω πλάκα:

  • το αντίστοιχο καλώδιο από τον ρυθμιστή 5V στο SBC σας
  • το καλώδιο USB από τη θύρα προγραμματισμού του Arduino DUE (το πλησιέστερο στο βαρέλι DC) σε μια θύρα USB του SBC σας

Στη συνέχεια, κρατήστε τη πάνω πλάκα στη θέση της με δώδεκα βίδες. Το ρομπότ σας είναι τώρα έτοιμο για προγραμματισμό, μπράβο!

Βήμα 7: Κάντε το να κινηθεί

Συγκεντρώστε το Arduino

Ανοίξτε το αγαπημένο σας Arduino IDE και εισαγάγετε το φάκελο του έργου που ονομάζεται own_turtlebot_core και, στη συνέχεια, επιλέξτε τον πίνακα και την αντίστοιχη θύρα, μπορείτε να ανατρέξετε σε αυτό το εξαιρετικό σεμινάριο.

Προσαρμόστε τις βασικές ρυθμίσεις

Το έργο αποτελείται από δύο αρχεία και ένα πρέπει να προσαρμοστεί στο ρομπότ σας. Ας ανοίξουμε λοιπόν το own_turtlebot_config.h και ανακαλύπτουμε ποιες γραμμές απαιτούν την προσοχή μας:

#define ARDUINO_DUE // ** ΣΧΟΛΙΑΣΤΕ ΑΥΤΗ ΤΗΝ ΓΡΑΜΜΗ ΑΝ ΔΕΝ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ ΛΟΓΩ **

Θα πρέπει να χρησιμοποιείται μόνο με το Arduino DUE, αν όχι σχολιάστε τη γραμμή.

#define RATE_CONTROLLER_KP 130.0 // ** TUNE THIS VALUE **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE THIS VALUE ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VALUE **

Αυτές οι 3 παράμετροι αντιστοιχούν στα κέρδη του ρυθμιστή ταχύτητας που χρησιμοποιούνται από το PID για τη διατήρηση της επιθυμητής ταχύτητας. Ανάλογα με την τάση της μπαταρίας, τη μάζα του ρομπότ, τη διάμετρο του τροχού και τη μηχανική σχέση του κινητήρα σας, θα χρειαστεί να προσαρμόσετε τις τιμές τους. Το PID είναι ένας κλασικός ελεγκτής και δεν θα αναφερθείτε λεπτομερώς εδώ, αλλά αυτός ο σύνδεσμος θα σας δώσει αρκετές εισόδους για να συντονίσετε το δικό σας.

/ * Ορισμός καρφιτσών */

// μοτέρ Α (δεξιά) const byte motorRightEncoderPinA = 38; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟΝ ΚΟΜΒΟ ΣΑΣ NB ** const byte motorRightEncoderPinB = 34; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜΕΙΩΣΗ ** const byte enMotorRight = 2; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜ. ** const byte in1MotorRight = 4; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜΕΙΩΣΗ ** const byte in2MotorRight = 3; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜ. ** // μοτέρ Β (αριστερά) const byte motorLeftEncoderPinA = 26; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟΝ Κωδικό PIN ΣΑΣ ** const byte motorLeftEncoderPinB = 30; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜΕΙΩΣΗ ** const byte enMotorLeft = 7; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜ. ** const byte in1MotorLeft = 6; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟ PIN ΣΗΜΕΙΩΣΗ ** const byte in2MotorLeft = 5; // ** ΤΡΟΠΟΠΟΙΗΣΗ ΜΕ ΤΟΝ ΚΟΙΝΟ ΣΑΣ **

Αυτό το μπλοκ ορίζει το pinout μεταξύ του L298N και του Arduino, απλώς τροποποιήστε τον αριθμό pin για να ταιριάζει με τον δικό σας. Όταν τελειώσετε με το αρχείο ρυθμίσεων, μεταγλωττίστε και ανεβάστε τον κώδικα!

Εγκαταστήστε και διαμορφώστε το ROS

Μόλις φτάσετε σε αυτό το βήμα, οι οδηγίες είναι ακριβώς ίδιες με αυτές που αναφέρονται στο εξαιρετικό εγχειρίδιο του TurtleBot3, πρέπει να ακολουθήσετε σχολαστικά

μπράβο, το TurtleBot 3 είναι τώρα δικό σας και μπορείτε να εκτελέσετε όλα τα υπάρχοντα πακέτα και μαθήματα με ROS.

Εντάξει, αλλά τι είναι το ROS;

Το ROS σημαίνει Robots Operating System, μπορεί να φαίνεται αρκετά περίπλοκο στην αρχή, αλλά δεν είναι, απλά φανταστείτε έναν τρόπο επικοινωνίας μεταξύ υλικού (αισθητήρων και ενεργοποιητών) και λογισμικού (αλγόριθμοι πλοήγησης, ελέγχου, όρασης υπολογιστή …). Για παράδειγμα, μπορείτε εύκολα να ανταλλάξετε το τρέχον LIDAR σας με ένα άλλο μοντέλο χωρίς να διακόψετε τη ρύθμιση, επειδή κάθε LIDAR δημοσιεύει το ίδιο μήνυμα LaserScan. Το ROS χρησιμοποιείται ευρέως στη ρομποτική, Εκτελέστε το πρώτο σας παράδειγμα

Το ισοδύναμο «γεια του κόσμου» για ROS συνίσταται στην τηλελειτουργία του ρομπότ σας μέσω του απομακρυσμένου υπολογιστή. Αυτό που θέλετε να κάνετε είναι να στείλετε εντολές ταχύτητας για να κάνετε τους κινητήρες να περιστρέφονται, οι εντολές ακολουθούν αυτόν τον σωλήνα:

  • ένας κόμβος turtlebot_teleop, που εκτελείται στον απομακρυσμένο υπολογιστή, δημοσιεύει ένα θέμα "/cmd_vel" που περιλαμβάνει ένα μήνυμα Twist
  • αυτό το μήνυμα προωθείται μέσω του δικτύου μηνυμάτων ROS στο SBC
  • ένας σειριακός κόμβος επιτρέπει τη λήψη του "/cmd_vel" στο Arduino
  • το Arduino διαβάζει το μήνυμα και ορίζει τη γωνιακή ταχύτητα σε κάθε κινητήρα ώστε να ταιριάζει με την επιθυμητή γραμμική και γωνιακή ταχύτητα του ρομπότ

Αυτή η λειτουργία είναι απλή και μπορεί να επιτευχθεί εκτελώντας τις γραμμές εντολών που αναφέρονται παραπάνω! Αν θέλετε πιο λεπτομερείς πληροφορίες, απλώς δείτε το βίντεο.

[SBC]

roscore

[SBC]

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

[Απομακρυσμένος υπολογιστής]

εξαγωγή TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Να πάω παρακάτω

Πρέπει να γνωρίζετε ένα τελευταίο πράγμα πριν δοκιμάσετε όλα τα επίσημα παραδείγματα, στο εγχειρίδιο κάθε φορά που αντιμετωπίζετε αυτήν την εντολή:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

πρέπει να εκτελέσετε αυτήν την εντολή στο SBC σας αντ 'αυτού:

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

Και αν έχετε ένα LIDAR εκτελέστε τη σχετική εντολή στο SBC σας, στην περίπτωσή μου τρέχω ένα LDS01 με την παρακάτω γραμμή:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Και αυτό είναι όλο, έχετε φτιάξει οριστικά το δικό σας turtlebot:) Είστε έτοιμοι να ανακαλύψετε τις φανταστικές δυνατότητες του ROS και να κωδικοποιήσετε αλγόριθμους όρασης και μηχανικής μάθησης.

Συνιστάται: