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

Ένα ρομπότ 4WD που οδηγείται μέσω απομακρυσμένου USB Gamepad: 6 βήματα
Ένα ρομπότ 4WD που οδηγείται μέσω απομακρυσμένου USB Gamepad: 6 βήματα

Βίντεο: Ένα ρομπότ 4WD που οδηγείται μέσω απομακρυσμένου USB Gamepad: 6 βήματα

Βίντεο: Ένα ρομπότ 4WD που οδηγείται μέσω απομακρυσμένου USB Gamepad: 6 βήματα
Βίντεο: Pibot: Ρομπότ πιλότος που οδηγεί όλους τους τύπους αεροσκαφών - hi-tech 2024, Ιούνιος
Anonim
Image
Image

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

Ο στόχος είναι να είναι αυτόνομο, αλλά πρώτα, έπρεπε να δοκιμάσω τη βασική του ικανότητα οδήγησης, οπότε σκέφτηκα ότι θα ήταν ένα διασκεδαστικό παράπλευρο έργο να συμπεριφέρεσαι και να ελέγχεσαι σαν να ήταν ένα RC (ραδιοελεγχόμενο) όχημα, αλλά χρησιμοποιήστε ένα Gamepad USB.

Τα αποτελέσματα ήταν το ίδιο καλά ή καλύτερα από ό, τι περίμενα.

Το πλεονέκτημα της διαδρομής USB Gamepad, με πολύ προγραμματισμό, είναι ότι μπορώ να το προσαρμόσω και να προσθέσω αυτό που έχω ήδη κάνει. Δεν έχω καμία πραγματική εμπειρία στην κατασκευή ενός οχήματος RC, αλλά φαντάζομαι ότι έχει κολλήσει με ό, τι κι αν έχει ο πομπός RC (χειριστήρια/κουμπιά κλπ) και ο δέκτης RC.

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

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

Αυτό το Instructable δεν θα είναι ένα αληθινό, λεπτομερές, all-inclusive, βήμα προς βήμα πώς, αλλά θα προσπαθήσω να δώσω όσες περισσότερες λεπτομέρειες μπορώ.

Προμήθειες

Προτεινόμενα μέρη: Τα περισσότερα από αυτά τα πήρα από το Servo City (Actobotics).

2 - 13,5 U -κανάλια, για τις πλευρές του πλαισίου βάσης. Οι κινητήρες είναι τοποθετημένοι σε αυτό. Πήγα με κάτι πιο κοντό και οι κινητήρες μου είναι τοποθετημένοι στις γωνίες και αυτό δυσκόλεψε την τοποθέτησή τους.

Κανάλια U 2 - 12 για το μπροστινό και το πίσω μέρος του βασικού πλαισίου.

2 - 15 U -κανάλια για τους προφυλακτήρες, εμπρός και πίσω

2 - 7 (ή μήπως ήταν 7,5 ;) U -κανάλια για τις μπροστινές στήλες. Αυτό δεν είναι πολύ κρίσιμο, τα μήκη μπορεί να ποικίλουν. Εξαρτάται από το ύψος των πίσω κολώνων και σε ποιο ύψος επιλέγετε να τοποθετήσετε τις γωνίες U-channel που συνδέεται μεταξύ τους.

2-(μήκος;) U-κανάλια για το υπό γωνία μέλος, εμπρός-πίσω, που συνδέει τις όρθιες στήλες. Αυτό είναι κρίσιμο, επειδή το Servo City / Actobotics πωλεί πάνελ ή αγκύλες με γωνία 45 μοιρών για αυτόν τον σκοπό, αλλά θα πρέπει να κάνετε κάποια μαθηματικά / σκανδάλη για να βεβαιωθείτε ότι έχετε το σωστό μήκος.

2-(μήκος;) U-κανάλια για να χρησιμεύσουν ως πλευρικοί προφυλακτήρες υψηλότερου επιπέδου, και πάλι αυτά εξαρτώνται από το τι κάνετε με τη βάση

2-(μήκος;) U-κανάλια για να χρησιμεύσουν ως προφυλακτήρες υψηλότερου επιπέδου εμπρός και πίσω, εκ των οποίων εκδίδεται και παραπάνω.

1 - (μήκος;) U -channel για να χρησιμεύσει ως το κορυφαίο μέλος, εκτείνεται στις πίσω στήλες. Αυτό μπορεί να μην είναι πολύ κρίσιμο, καθώς μπορείτε να τοποθετήσετε στην κορυφή ή μπροστά / πίσω από τις όρθιες στήλες.

12 (περίπου) κανάλια L ή αγκύλες. Αυτά εξυπηρετούν πολλαπλούς σκοπούς, αλλά ουσιαστικά παρέχουν δομική ακεραιότητα/αντοχή στις γωνίες του βασικού πλαισίου ΚΑΙ τις όρθιες στήλες.

4 (+?) Επίπεδα κανάλια 3 οπών έως 5 οπών. Αυτά παρέχουν επίσης δομική αντοχή στο ρομπότ.

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

Υπάρχει ένας πίνακας 4 (4,5;) "X 12" και νομίζω ότι ο άλλος είναι ένας πίνακας 9 (9,5?) "X 12.

Τώρα εδώ είναι που τα πράγματα γίνονται ενδιαφέροντα και μπορεί να μπερδεύονται και να κοστίζουν (τα μικρά μέρη προστίθενται). Όλα τα κανάλια, κ.λπ., μπορούν να συνδεθούν μεταξύ τους μέσω αυτών των συνδετικών κομματιών, εκ των οποίων υπάρχουν ΠΟΛΛΑ. Εδώ λυπάμαι που δεν έχω μια ολοκληρωμένη, λεπτομερή, συγκεκριμένη λίστα μερών.

Και το θέμα είναι ότι … δεν ξέρετε πραγματικά ποια μπορεί να χρειάζεστε ή πόσα.. γιατί υπάρχουν τόσοι πολλοί τρόποι για να χωρέσετε αυτά τα κομμάτια μεταξύ τους.

Μπορώ να αναφέρω τι έχω χρησιμοποιήσει:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Τα δύο παρακάτω είναι πολύ βολικά και θα τα έκανα μόνο:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Ακολουθούν όλες οι βίδες (μπουλόνια). Ξεκίνησα με ένα πακέτο ΚΑΘΕ μεγέθους και έχω περάσει από τα περισσότερα. Χρησιμοποίησα μακρύτερες βίδες όπου το μέγεθος δεν είχε σημασία και τις κοντύτερες τις κρατούσα για εκεί που απαιτούνταν γιατί κανένα άλλο μήκος δεν θα λειτουργούσε.

Τέλος, θα πρέπει να πάρετε 1 τσάντα από αυτά:

www.servocity.com/6-32-nylock-nuts-pack

Δεν χρησιμοποίησα τόσα πολλά, αλλά (νομίζω) είναι κρίσιμα για να βεβαιωθείτε ότι οι κινητήρες σας δεν δονούνται χαλαρά από το πλαίσιο με την πάροδο του χρόνου. Μόνο δύο θα λειτουργούσαν ανά κινητήρα, λόγω του καναλιού U

Θα χρειαστείτε τουλάχιστον 4 από αυτά, μπορεί να λάβετε ένα επιπλέον περίπου σε περίπτωση που προκαλέσετε ζημιά σε ένα (πιστέψτε με, μπορεί να βάζετε / βγάζετε τους κινητήρες μερικές φορές):

www.servocity.com/heavy-duty-clamping-shaf…

Συνήθως, οι άξονες των κινητήρων είναι 6mm και οι άξονες είναι 1/4 (0,25in).

Θα έπαιρνα μερικές μαύρες βίδες, δήθεν ισχυρότερες, και θα τις χρησιμοποιούσα για τους παραπάνω σφιγκτήρες και ΔΕΝ θα χρησιμοποιούσα τις βίδες που συνοδεύουν τους σφιγκτήρες:

(Νομίζω ότι αυτά είναι αυτά):

Ρουλεμάν διαμέτρου 4 - 1/4 "(0,25")

1 - τσάντα μαύρου αποστάτη 1/4"

4 - Σφιγκτήρες D -Hubs

www.servocity.com/0-770-clamping-d-hubs

4-άξονες D (#6340621.375 "(1-3/8")

Τροχοί 4 - 6 βαρέως τύπου

www.servocity.com/6-heavy-duty-wheel

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

ΕΠΙΣΗΣ, θα έχουν την τάση να μουτζουρώνουν το χαλί σας !!!

4 - κινητήρες:

www.servocity.com/motors-actuators/gear-mo…

Πήγα με τις 223 RPM, καλή μέγιστη ταχύτητα εσωτερικού χώρου, επίσης μπορούσα να μετακινήσω το ρομπότ μου (βαρύ με 2 μπαταρίες SLA 12V) αρκετά εύκολα σε αργή κίνηση.

2 - κωδικοποιητές κινητήρων για τους κινητήρες. (Το Roboclaw του Servo City χειρίζεται μόνο 2 κωδικοποιητές)

1 - Ελεγκτής κινητήρα Roboclaw 2X45A, βεβαιωθείτε ότι έχετε εκείνο με τα πράσινα μπλοκ ακροδεκτών, όχι τις καρφίτσες…. καλά … το καθένα έχει τα πλεονεκτήματά του. Hindsight.. mightσως να είχα πάρει τις καρφίτσες.

Νομίζω ότι αυτό είναι από το Servo City.

Το SparkFun πωλεί το Arduino Uno (αυτό χρησιμοποίησα) και επίσης το Redboard Artemis ως διαχειριστή δίσκου.

Θα θέλετε ένα Raspberry Pi 3 (ή 4;) ως "εγκεφάλους" και διεπαφή υψηλού επιπέδου σε εσάς.

Θα χρειαστείτε καλωδίωση, διακόπτες, ασφάλειες και μια πολύ στιβαρή δίοδο "flyback".

Χρησιμοποίησα μια μπαταρία SLA βαθμού κύκλου Duracell 12V 14AH, αλλά μπορείτε να χρησιμοποιήσετε οτιδήποτε.

ΠΡΟΕΙΔΟΠΟΙΗΣΗ! Ο σχεδιασμός αυτού του ρομπότ (TALL, και WIDE, but SHORT), προϋποθέτει ένα είδος βαρύ κέντρο βάρους, όπως μια μπαταρία SLA που θα παρείχε. Μπορεί να μην τα πάει καλά με εκείνους τους άλλους τύπους μπαταριών νεότερης τεχνολογίας. LiPo, Lion, κλπ. Θα μπορούσε εύκολα να ανατραπεί.

Από το Pololu πήρα μερικούς προσαρμογείς βύσματος, ώστε να μπορώ να τροφοδοτώ ανεξάρτητα το Arduino ή/και τον Πίνακα, παρόλο που θα συνδέονταν στο Raspberry μέσω USB, επειδή δεν ήθελα να βασιστώ στη δύναμη του Raspberry Το (Ειδικά κάμερες τοποθέτησης, αισθητήρες κ.λπ.)

Θα χρειαστείτε έναν ρυθμιστή τάσης από 12 έως 5V, τουλάχιστον 5Α (;) για το Raspberry. Οι άλλοι μπορούν να χειριστούν οτιδήποτε μεταξύ 7 έως 15V τόσο άμεσα στην μπαταρία SLA.

Αυτό περίπου για ανταλλακτικά.

Αυτό που ΔΕΝ θα έκανα - λοξότμητο γρανάζι 90 μοιρών.

Και πάλι, υπάρχουν πολλά βίντεο στη λίστα αναπαραγωγής μου στο Robotics youtube που περιγράφουν τα περισσότερα από τα παραπάνω.

Βήμα 1: Κατασκευή

Ειλικρινά, όλα τα βήματα κατασκευής μου έχουν ήδη τη μορφή youtubes. Μπορείτε να τα δείτε στη λίστα αναπαραγωγής μου Robotics, ξεκινώντας από το "Wallace Robot 4". Τα προηγούμενα (Wallace II, Wallace III) έχουν επίσης καλό υλικό

www.youtube.com/playlist?list=PLNKa8O7lX-w…

Βήμα 2: Δοκιμάστε τα Roboclaw, Motors και Encoders

Οι κατασκευαστές του Roboclaw (BasicMicro) διαθέτουν μια εφαρμογή Windows που μπορείτε να χρησιμοποιήσετε για να βεβαιωθείτε ότι έχετε συνδέσει σωστά τους κινητήρες και τους κωδικοποιητές στο Roboclaw. Θα συνδέσετε κινητήρες ίδιας πλευράς παράλληλα με το Roboclaw. Μπορείτε να επιλέξετε να χρησιμοποιήσετε τα καλώδια κωδικοποιητή, μόνο στους πίσω κινητήρες ή στους μπροστινούς κινητήρες, ή ίσως ακόμα καλύτερα - ΔΙΑΓΩΝΙΣΜΕΝΑ.

Ο λόγος για την πρότασή μου έχει να κάνει με τον (αργότερα) έλεγχο για κολλημένο ρομπότ. Το να έχετε διαγώνια κατάσταση εάν οι μπροστινοί/πίσω τροχοί/δεν στρίβουν μπορεί να είναι καλύτερος από τον μπροστινό ή τον πίσω.

ΣΗΜΕΙΩΣΗ: Αυτό που ΔΕΝ έχω κάνει είναι να χρησιμοποιήσω το Arduino για να συνδεθώ επίσης (μέσω καρφιτσών GPIO) στους κωδικοποιητές - αν το κάνατε αυτό, θα μπορούσατε να έχετε το Roboclaw χειριστεί 2 κωδικοποιητές και, στη συνέχεια, το Arduino να χειριστεί τους άλλους δύο, και μόνο ερωτήστε το Roboclaw για τις δύο τιμές κωδικοποιητή (και ταχύτητες).

ΣΗΜΕΙΩΣΗ: Χρησιμοποίησα την εφαρμογή BasicMicro για να ρυθμίσω εκ των προτέρων το Roboclaw για Ramping Up / Ramping Down. Αυτό είναι καλό για την προστασία του υλικού και των ηλεκτρονικών. Υπάρχει ένα βίντεο σχετικά με αυτό στη λίστα αναπαραγωγής μου Robotics.

Σχεδόν ξέχασα: αγόρασα επίσης μερικά καλώδια σύνδεσης με σφαίρες που βρίσκονται μεταξύ των καλωδίων του κινητήρα και του Roboclaw. ΣΗΜΕΙΩΣΗ: αν το κάνετε αυτό, θα παρατηρήσετε ότι το συνολικό μήκος καλωδίου είναι ΠΡΑΓΜΑΤΙΚΑ ΜΕΓΑΛΟ. Αλλά δεν ήθελα να χρειαστεί να κόψω κανένα αν δεν χρειαζόταν. Αντιμετώπισα (για μεταγενέστερα βήματα) προβλήματα επικοινωνίας με το USB μεταξύ του Raspberry και του Arduino, πιθανώς λόγω θορύβου EMI.. αλλά το έχω δουλέψει με λογισμικό.

Εάν γίνει πρόβλημα, μπορείτε να κόψετε τα καλώδια - μπορείτε επίσης να αγοράσετε μεταλλική θωράκιση (από την Amazon, διάμετρο 1 ).

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

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

Βήμα 3: Προσθήκη και προγραμματισμός του Arduino

Θα χρειαστείτε το βύσμα της κάννης και κάποια καλωδίωση, επίσης ένα καλώδιο USB. Βεβαιωθείτε ότι έχετε πάρει το σωστό για την υποδοχή Arduino.

Θα χρειαστεί να κατεβάσετε το Arduino IDE.

Εδώ στο Github είναι το τελευταίο σκίτσο που χειρίζεται την οδήγηση του ρομπότ:

github.com/elicorrales/wallace.robot.ardui…

Θα συνδέσετε το Arduino στον υπολογιστή σας που εκτελεί το IDE και με βάση τον τρόπο γραφής του σκίτσου, θα χρησιμοποιούσατε τις ακίδες 10 και 11 στο Arduino για σειριακές επικοινωνίες (Σειρά λογισμικού) με το Roboclaw.

Ανέπτυξα ένα απλό πρωτόκολλο επικοινωνίας μεταξύ του Raspberry Pi και του Arduino.

Βασίζεται σε χαρακτήρες ASCII, γεγονός που διευκολύνει τον εντοπισμό σφαλμάτων και τον έλεγχο μόνο χρησιμοποιώντας το παράθυρο "σειριακή οθόνη" του Arduino IDE.

Οι εντολές ξεκινούν από τον αριθμό "0" (μηδέν) και ανεβαίνουν απλώς όπως απαιτείται

Οι εντολές που ξεκινούν στα "20" είναι άμεσες εντολές Roboclaw και αυτές κάτω από αυτόν τον αριθμό είναι αυστηρά εντολές που σχετίζονται με το Arduino.

Λόγω του θορύβου EMI, βελτίωσα τη συμβολοσειρά εντολών ώστε να περιλαμβάνει ένα άθροισμα ελέγχου.

Έτσι, κάθε συμβολοσειρά θα περιλαμβάνει:

# αριθμός διακριτικών σε συμβολοσειρά συμπεριλαμβανομένου αυτού

το άθροισμα ελέγχου

Παράδειγμα, πείτε ότι θέλετε το Arduino να απαντήσει με το μενού εντολών του:

4 0 12 16

Το "4" είναι τέσσερα μάρκες σε συμβολοσειρά.

Το "0" είναι η εντολή MENU.

Το "12" είναι ο τυχαίος αριθμός που επέλεξα.

Το "16" είναι το άθροισμα 4 + 0 + 12.

Η ίδια εντολή MENU θα μπορούσε να είναι διαφορετική:

4 0 20 24

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

Παράδειγμα, πείτε ότι θέλετε να προχωρήσετε με ταχύτητα 100 %:

5 29 0 134 100

"5" πέντε μάρκες

"29" η εντολή FORWARD

"0" τον τυχαίο αριθμό

"134" το άθροισμα ελέγχου

"100" η παράμετρος 1 (η ταχύτητα σε αυτήν την περίπτωση)

Εάν το Arduino δεν μπορεί να επαληθεύσει αυτήν την εισερχόμενη συμβολοσειρά, απλώς το ρίχνει / το αγνοεί, καμία απάντηση.

Εάν το Arduino δεν λάβει μια επόμενη εντολή κίνησης με Χ χιλιοστά του δευτερολέπτου, στέλνει κινητήρες STOP στο Roboclaw.

Το Arduino ξεκινά και αρχίζει να στέλνει μια αυτόματη κατάσταση στη θύρα USB … εκτός αν σας πει να σταματήσετε να το κάνετε αυτό.

Σε αυτό το σημείο θα πρέπει να είστε έτοιμοι να δοκιμάσετε τον έλεγχο του Roboclaw και να παρακολουθήσετε τους κινητήρες να γυρίζουν, χρησιμοποιώντας μόνο το "Serial Monitor" στο IDE.

Βήμα 4: Προσθήκη και προγραμματισμός του Raspberry Pi (node.js)

Και πάλι, αν ρίξετε μια ματιά στη λίστα αναπαραγωγής μου Robotics, ακόμη και από την αρχή, πέρασα κάθε βήμα για να ξεκινήσει το Raspberry.

Το μόνο πράγμα που μπορεί να έχω ξεπεράσει είναι ότι θα χρειαστείτε έναν ρυθμιστή 5V και είτε με κάποιο τρόπο να κατασκευάσετε, να κόψετε/τροποποιήσετε ένα καλώδιο USB για αυτό ή να τροφοδοτήσετε το Raspberry με άλλο τρόπο.

Εδώ στο Github είναι όλα όσα χρειάζεστε στο Raspberry για να επικοινωνήσετε με το Arduino μέσω USB.

github.com/elicorrales/wallace.robot.raspb…

Υπάρχουν ακόμη και δοκιμαστικά σενάρια.

Μπορείτε να ρίξετε μια ματιά στον κώδικα διακομιστή node.js και θα δείτε πώς το Raspberry μετατρέπει τις συνοπτικές αριθμητικές οδηγίες, σε συμβολοσειρές url τύπου REST. Μπορείτε να χρησιμοποιήσετε το "curl" για να στείλετε δοκιμαστικές εντολές.

Παράδειγμα:

η διεύθυνση IP σας RP3: 8084/arduino/api/forward/50

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

Αν το βάλετε σε ένα βρόχο σεναρίου κελύφους, θα δείτε τους τροχούς να συνεχίζουν να γυρίζουν.

Ο κώδικας node.js (server.js) περιλαμβάνει μια δυνατότητα επανασύνδεσης σε περίπτωση απώλειας σειριακών κοινοποιήσεων στο Arduino. Μπορείτε να το δοκιμάσετε απλά αποσυνδέοντας το Arduino από το Raspberry και συνδέοντάς το ξανά.

Βεβαιωθείτε ότι ταιριάζετε με τον σειριακό ρυθμό baud μεταξύ των δύο.

Λόγω της απόρριψης κακών πακέτων δεδομένων από το Arduino και επειδή σε επίπεδο node.js και σε επίπεδο javascript προγράμματος περιήγησης, όλα είναι κωδικοποιημένα για την αποστολή πολλών εντολών "drive", κατάφερα να εκτελέσω έως και 2 000 000 baud (2Mbps).

Εάν ενεργοποιήσετε τα δοκιμαστικά σενάρια και βλέπετε τους τροχούς να γυρίζουν, τότε είστε έτοιμοι για το επόμενο βήμα.

Βήμα 5: Τελικό βήμα - Προγραμματισμός / Χρήση του προγράμματος -πελάτη ιστοσελίδας

Περιλαμβάνονται στον σύνδεσμο Github στο τμήμα Raspberry όλων αυτών, τα αρχεία πελάτη.

index.html. index.js. p5.min.js.

Χειρίζονται το USB Gamepad μέσω του Gamepad API (με βάση το πρόγραμμα περιήγησης) και θα πρέπει να δείτε τα διάφορα κουμπιά και ρυθμιστικά που είναι επίσης διαθέσιμα στην ιστοσελίδα.

Ο κώδικας javascript ερωτά (δημοσκοπεί) τις τιμές των αξόνων X και Y για ένα από τα joysticks.. (ανάλογα με το τι joysticks/gamepad έχετε, ίσως χρειαστεί να τροποποιήσετε τον κώδικα). Δημοσκοπεί πολύ γρήγορα και απενεργοποιεί όλες αυτές τις τιμές στον διακομιστή node.js ακούγοντας στο 8084.

Οι ακατέργαστες τιμές του άξονα Χ και Υ των χειριστηρίων είναι μεταξύ 0 και 1.

Αλλά η λειτουργία βιβλιοθήκης ελεγκτή Roboclaw που χρησιμοποιείται στο Arduino για την οδήγηση των κινητήρων, αναμένει μια τιμή μεταξύ -100 έως 0 (προς τα πίσω) ή (0 έως 100) προς τα εμπρός.

Σου…. αυτός είναι ο σκοπός της συμπερίληψης του p5.min.js. Απλώς τυχαίνει να υπάρχει αυτή η πολύ ωραία, βολική συνάρτηση χάρτη () όπου του δίνεις την πρώτη τιμή, είναι το ωμό (τρέχον) εύρος και το νέο, επιθυμητό εύρος. Και μετατρέπει την ακατέργαστη τιμή σε τιμή στο νέο, αντιστοιχισμένο εύρος.

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

Κάτι για να προσθέσετε θα ήταν παρόμοιο με το τρέχον ρυθμιστικό Max Speed στην ιστοσελίδα. Αυτό το ρυθμιστικό καθορίζει ποια είναι η υψηλότερη ή η μέγιστη τιμή στην οποία θα αντιστοιχίσετε τα joystick Xs και Ys.

Παράδειγμα:

Πείτε ότι αντιστοιχίζετε 0 -> 1 έως 0 -> 100. Όταν πιέζετε τελείως το χειριστήριο, βρίσκεστε στο 100. Αγγίξιμο. Μπορεί να είναι πολύ γρήγορα.

Αλλά, αν σύρετε το ρυθμιστικό Max Speed λίγο πίσω, τώρα αντιστοιχίζετε 0 -> 1 έως 0 -> 80 ή 70.

Αυτό σημαίνει ότι έχετε περισσότερο περιθώριο για να μετακινήσετε το joystick σας χωρίς τόσο μεγάλη αλλαγή στην ταχύτητα που αποστέλλεται στο node.js (και στο Arduino).

Και η προσθήκη που μπορείτε να κάνετε είναι να διαχωρίσετε τα Xs (περιστρέψτε αριστερά ή δεξιά) από τα Ys (εμπρός ή πίσω) στις δικές τους μέγιστες διαθέσιμες ταχύτητες.

Έτσι, θα μπορούσατε να αφήσετε τα Y σε 0 έως 100, 0 έως -100 για γρήγορη γραμμική κίνηση, αλλά χαμηλώστε τη μέγιστη ταχύτητα Xs για πιο ελεγχόμενη περιστροφική κίνηση. Το καλύτερο και των δύο κόσμων.

Βήμα 6: Προαιρετικό: Drive Robot With Mouse Σύρετε και / ή Αγγίξτε τα συμβάντα

Αν φτάσατε τόσο μακριά, γνωρίζετε ότι τα επίπεδα λογισμικού ξεκινούν από το πρόγραμμα περιήγησης και τρυπώνουν μέσω του Javascript και μεταφέρονται στον διακομιστή Raspberry node.js, τελικά στο arduino, μετατρέπουν τις συντεταγμένες του Gamepad joystick X και Y σε " εντολές εμπρός "(ή" προς τα πίσω ", κλπ) (και την τιμή της ταχύτητάς τους).

Επιπλέον, γνωρίζετε τότε ότι ενώ τα Χ και τα Υ των χειριστηρίων είναι αρνητικά 1, από μηδέν, σε συν 1, αυτά πρέπει να μετατραπούν μεταξύ μηδέν και 100. Λοιπόν, το μέγιστο εξαρτάται από τη ρύθμιση της μέγιστης ταχύτητας στην ιστοσελίδα.

Soo … το μόνο πράγμα που πρέπει να κάνετε για να χρησιμοποιήσετε είτε το ποντίκι είτε τα γεγονότα αφής (όπως σε ένα smartphone), είναι να καταγράψετε αυτά τα γεγονότα, να πιάσετε τα X και τα Y.

ΑΛΛΑ ---- αυτά τα Χ και Υ δεν είναι μεταξύ αρνητικών 1 και 1. Ξεκινούν 0 και αυξάνονται θετικά, επειδή είναι ουσιαστικά τα εικονοστοιχεία ή οι σχετικές συντεταγμένες οθόνης κάποιου στοιχείου HTML (όπως πίνακας bootstrap) ή καμβάς.

Έτσι και πάλι, η λειτουργία "map ()" της βιβλιοθήκης Js της P5 είναι πολύ βολική για να επανασχεδιάσουμε αυτό που χρειαζόμαστε.

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

Επίσης, μόλις επανατοποθετηθούν τα Χ και τα Υ, τροφοδοτούνται στην ίδια αλυσίδα κώδικα κ.λπ., όπως και τα Χ και Υ από το Gamepad.

Συνιστάται: