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

Localino Tracks Roomba IRobot, Maps the Environment and Allows Control .: 4 Steps
Localino Tracks Roomba IRobot, Maps the Environment and Allows Control .: 4 Steps

Βίντεο: Localino Tracks Roomba IRobot, Maps the Environment and Allows Control .: 4 Steps

Βίντεο: Localino Tracks Roomba IRobot, Maps the Environment and Allows Control .: 4 Steps
Βίντεο: Grid Based Indoor Localization System 2024, Νοέμβριος
Anonim
Image
Image

Για να χτίσετε τη γέφυρα WiFi-UART, μπορείτε να δείτε αυτό το repo github:

Έχει μια καλή βάση για αρχή. Βεβαιωθείτε ότι έχετε διαβάσει καλά τις οδηγίες, επειδή το Roomba VCC κατά τη φόρτιση αυξάνεται έως και 20 Volt! Εάν προσθέσετε ένα ESP8266 χωρίς κατάλληλο μετατροπέα buck που λειτουργεί ακόμη και έως 20V και μετατρέπεται προς τα κάτω σε 3.3V, θα καταστρέψετε το ESP σας.

Βεβαιωθείτε επίσης ότι χρησιμοποιείτε έναν επιλογέα στάθμης (π.χ. χρησιμοποιώντας διαχωριστή τάσης) για να μετακινήσετε τα λογικά επίπεδα UART 5V από το Roomba σε 3.3V, τα οποία χρησιμοποιούνται από το ESP.

Μια άλλη σημαντική λεπτομέρεια είναι ότι ο μετατροπέας buck πρέπει να έχει 300mA, αλλά όχι πολύ λιγότερο ή πολύ περισσότερο (ανάλογα με τον ίδιο τον μετατροπέα buck). Υπάρχουν κάποιες εκεί έξω που μπορούν να κάνουν πολύ περισσότερο ρεύμα, αλλά προκαλούν την κατάρρευση του Roomba επειδή αντλούν πολύ ρεύμα κατά την εκκίνηση. Διαπιστώσαμε ότι ο Ρυθμιστής Τάσης Pololu 3.3V, 300mA Step-Down (D24V3F3) λειτουργεί τέλεια. Οι εναλλακτικές εκδόσεις που έχουν 500mA / 600mA προκάλεσαν τη διακοπή της διεπαφής Roomba UART. Βασικά το Roomba αντιδρούσε με το πάτημα κουμπιού, αλλά όχι με εντολές μέσω της διεπαφής UART. Μόλις συνέβη αυτό, έπρεπε να αφαιρέσουμε την μπαταρία του Roomba και να ξεκινήσουμε εν ψυχρώ την Roomba με τη γέφυρα WiFi-UART προσαρτημένη. Ωστόσο, μόνο το D24V3F3 λειτούργησε καλά.

Εκτός από αυτήν την τεχνική λεπτομέρεια, πρέπει να προσθέσετε επιπλέον εντολές στον κώδικα, τις οποίες μπορείτε να βρείτε στις προδιαγραφές ανοιχτής διεπαφής Roomba. Θα χρειαστεί να προσθέσετε όλες τις εντολές στις οποίες θέλετε να αντιδρά το roomba σας (για παράδειγμα, προς τα πίσω, προς τα εμπρός, ταχύτητα κ.λπ.).

παραδείγματα στο arduino IDE:

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }

void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }

αν γράφετε σε lua φαίνεται λίγο διαφορετικό, ένα παράδειγμα για ΑΡΙΣΤΕΡΗ στροφή θα μοιάζει με αυτό:

εάν (_GET.pin == "ΑΡΙΣΤΕΡΑ") στη συνέχεια εκτυπώστε ('\ 137'); --VOR

tmr. καθυστέρηση (100);

εκτύπωση ('\ 00'); -Ταχύτητα = 200 = 0x00C8 -> 0 και 200

tmr. καθυστέρηση (100);

εκτύπωση ('\ 200'); - Ταχύτητα

tmr. καθυστέρηση (100);

εκτύπωση ('\ 254'); - Ακτίνα = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr. καθυστέρηση (100);

εκτύπωση ('\ 12'); -- Στροφή

τέλος

Βεβαιωθείτε ότι πρέπει να διορθώσετε την περιγραφή της ανοιχτής διεπαφής για το Roomba σας. Υπάρχουν τουλάχιστον δύο προδιαγραφές ανοιχτής διεπαφής διαθέσιμες.

για τη σειρά Roomba 5xx:

για τη σειρά Roomba 6xx:

Μόλις δημιουργήσετε τη γέφυρα WiFi-UART και δοκιμάσετε τις εντολές που κάνατε ένα μεγάλο βήμα παραπέρα. Αυτό το βίντεο δείχνει ότι η εφαρμογή και η προσέγγιση λειτουργούν. Wereμασταν λίγο τεμπέληδες, στο webinterface λείπουν όλες οι άλλες εντολές ελέγχου, όπως εμπρός, πίσω, ταχύτητα, δεξιά, αριστερά και ούτω καθεξής, αλλά μπορείτε να εκδώσετε τις εντολές μέσω http. Όπως και να έχει, είναι απλώς μια απόδειξη ότι το τηλεχειριστήριο του Roomba λειτουργεί με ένα εύκολο κομμάτι υλικού και λογισμικού χρησιμοποιώντας ένα ESP8266.

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

Βήμα 3: Ρυθμίστε το εσωτερικό σύστημα τοπικής προσαρμογής

Για να κλείσουμε το βρόχο ανατροφοδότησης κάνουμε χρήση ενός εσωτερικού συστήματος εντοπισμού. Χρησιμοποιούμε το Localino για αυτό. Το σύστημα Localino αποτελείται από "άγκυρες" και "ετικέτες". Οι άγκυρες τοποθετούνται σε σταθερές θέσεις μέσα στο δωμάτιο και εντοπίζουν τη θέση της κινούμενης ετικέτας (η οποία τοποθετείται στο Roomba). Η επεξεργασία τοποθεσίας γίνεται σε εφαρμογή υπολογιστή. Αυτό έχει μεγάλο πλεονέκτημα, επειδή μπορείτε επίσης να ελέγξετε το Roomba από τον ίδιο υπολογιστή! Υπάρχει δωρεάν πηγαίος κώδικας από τον ιστότοπο Localino, είναι γραμμένος σε python και υπάρχει επίσης διαθέσιμη ροή σε πραγματικό χρόνο που προσφέρει τις συντεταγμένες XYZ της ετικέτας. Η ροή δεδομένων είναι διαθέσιμη μέσω δικτύου UDP, αλλά μπορείτε επίσης να προσθέσετε MQTT ή οποιαδήποτε άλλα φανταχτερά πράγματα που σας αρέσουν. Εάν γνωρίζετε την Python, υπάρχουν σωρεία βιβλιοθηκών που σας βοηθούν.

Σε αυτό το βίντεο, αποδεικνύεται ο εντοπισμός του Roomba. Επομένως, έχουμε 4 άγκυρες εγκατεστημένες στο δωμάτιο σε σταθερές θέσεις, οι οποίες επιτρέπουν την τρισδιάστατη τοποθέτηση του Roomba. Γενικά, θα χρειαζόμασταν μόνο 3 άγκυρες, επειδή το Roomba πιθανότατα δεν θα κινείται στον άξονα Ζ, επομένως το 2D θα ήταν αρκετό. Αλλά επειδή οι άγκυρες βρίσκονται στο ύψος των κύριων βυσμάτων εναλλασσόμενου ρεύματος (που είναι περίπου 30 εκατοστά πάνω από το έδαφος), μια εγκατάσταση 2D θα προκαλούσε μικρά σφάλματα εκτίμησης θέσης. Έτσι αποφασίσαμε να έχουμε 4 άγκυρες και να εντοπίσουμε σε 3D.

Τώρα καθώς έχουμε τη θέση του Roomba, το επόμενο βήμα μας είναι να ελέγξουμε το Roomba από την ίδια εφαρμογή. Η ιδέα είναι να χρησιμοποιήσετε τη βασική αλήθεια και να εκτιμήσετε μια τέλεια διαδρομή καθαρισμού για το ρομπότ. Με τη χρήση του Localino μπορούμε να κλείσουμε τον βρόχο ανατροφοδότησης και να ελέγξουμε το ρομπότ από την εφαρμογή υπολογιστή.

Ρυθμίσεις παρατηρήσεων

Τοποθετήστε τις άγκυρες Localino μέσα στο δωμάτιο σε διαφορετικές θέσεις x, y και τρεις από αυτές στην ίδια θέση z. Τοποθετήστε μία στις τέσσερις άγκυρες σε διαφορετικό ύψος z ανά δωμάτιο. Βεβαιωθείτε ότι υπάρχει καλή κάλυψη από την ετικέτα Localino, που θα κινηθεί με το Roomba.

Όλες οι άγκυρες διαθέτουν uniqe anchor ID, το οποίο εμφανίζεται στο γραμμικό κώδικα του Localino και μπορεί να διαβαστεί με το εργαλείο "localino configuration".

Σημειώστε τις θέσεις στα Χ, Υ, Ζ και τα αναγνωριστικά αγκύρωσης. Αυτό απαιτείται για το λογισμικό επεξεργαστή Localino και πρέπει να προσαρμοστεί στο αρχείο "localino.ini" στο φάκελο "LocalinoProcessor"

Οι άγκυρες πρέπει να δείχνουν προς τα πάνω ή προς τα κάτω στο Ζ (όταν καλύπτεται η περιοχή ΧΥ), αλλά όχι προς την κατεύθυνση της καλυμμένης περιοχής. Οι άγκυρες επίσης δεν πρέπει να καλύπτονται από μέταλλο ή οποιοδήποτε άλλο υλικό που ενοχλεί το ασύρματο σήμα. Εάν αυτό δεν είναι δυνατό, θα πρέπει επίσης να υπάρχει ένα ορισμένο κενό αέρα μεταξύ οποιουδήποτε υλικού και της άγκυρας.

…περισσότερα ακολουθούν.

Βήμα 4: Προσαρμόστε το λογισμικό Python

μείνετε συντονισμένοι. περισσότερα ακολουθούν.

Συνιστάται: