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

Αυτόνομο ρομπότ Wallace - Μέρος 4 - Προσθέστε απόσταση IR και αισθητήρες "Amp": 6 βήματα
Αυτόνομο ρομπότ Wallace - Μέρος 4 - Προσθέστε απόσταση IR και αισθητήρες "Amp": 6 βήματα

Βίντεο: Αυτόνομο ρομπότ Wallace - Μέρος 4 - Προσθέστε απόσταση IR και αισθητήρες "Amp": 6 βήματα

Βίντεο: Αυτόνομο ρομπότ Wallace - Μέρος 4 - Προσθέστε απόσταση IR και αισθητήρες
Βίντεο: Karl Friston: The "Meta" Free Energy Principle [ΜΕΡΟΣ 1!] 2024, Ιούλιος
Anonim
Image
Image
Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)

Γεια σας, σήμερα ξεκινάμε την επόμενη φάση βελτίωσης των δυνατοτήτων του Wallace. Συγκεκριμένα, προσπαθούμε να βελτιώσουμε την ικανότητά του να ανιχνεύει και να αποφεύγει εμπόδια χρησιμοποιώντας αισθητήρες υπέρυθρης απόστασης, και επίσης να επωφεληθούμε από την ικανότητα του Roboclaw να ελέγχει το ρεύμα και να το μετατρέπει σε έναν εικονικό (λογισμικό) αισθητήρα. Τέλος, θα ρίξουμε μια ματιά στον τρόπο πλοήγησης χωρίς SLAM (ταυτόχρονη τοποθεσία και χαρτογράφηση) (προς το παρόν), αφού το ρομπότ δεν διαθέτει ακόμη αισθητήρες IMU (μονάδα μέτρησης αδράνειας) ή ToF (ώρα πτήσης).

Με πλοήγηση, αρχικά θα είναι απλώς δύο βασικοί στόχοι:

  1. αποφύγετε τα εμπόδια
  2. αναγνωρίζει πότε έχει κολλήσει κάπου και δεν κάνει καμία πρόοδο. ("πρόοδος" σημαίνει ότι προχώρησε οποιαδήποτε σημαντική απόσταση)
  3. ένας πιθανός 3ος στόχος θα μπορούσε να είναι να προσπαθήσει να ευθυγραμμιστεί τελείως με έναν τοίχο.

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

Η δεύτερη φάση ήταν η προσθήκη επαρκούς κυκλώματος στήριξης για την προετοιμασία για την προσθήκη πολλών αισθητήρων.

Στο προηγούμενο Instructable, προσθέσαμε αρκετούς ακουστικούς αισθητήρες HCSR04 και το ρομπότ μπορεί τώρα να αποφύγει εμπόδια καθώς κινείται γύρω από το διαμέρισμα.

Ενώ τα πάει καλά στην κουζίνα και το διάδρομο με καλές, συμπαγείς επίπεδες επιφάνειες, είναι εντελώς τυφλό όταν πλησιάζει την τραπεζαρία. Δεν μπορεί να "δει" τα πόδια του τραπεζιού και της καρέκλας.

Μία βελτίωση μπορεί να είναι η παρακολούθηση τυπικών ρευμάτων κινητήρα και εάν οι τιμές πηδήξουν, τότε το ρομπότ πρέπει να έχει χτυπήσει κάτι. Είναι ένα καλό "σχέδιο Β" ή ακόμα και C. Αλλά αυτό δεν το βοηθά πραγματικά να περιηγηθεί στην τραπεζαρία.

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

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

Αυτό που βλέπετε στο βίντεο είναι έξι μπροστινοί ακουστικοί αισθητήρες HCSR04 και δύο αισθητήρες Sharp IR. Οι αισθητήρες IR δεν εμφανίστηκαν πολύ στο βίντεο. Το πλεονέκτημά τους είναι κυρίως όταν το ρομπότ βρίσκεται στην τραπεζαρία με τα πόδια του τραπεζιού και της καρέκλας.

Εκτός από τους αισθητήρες, η τρέχουσα οθόνη άρχισε να παίζει ειδικά κατά την οπισθοπορεία, σε περίπτωση που χτυπήσει σε κάτι.

Τέλος, χρησιμοποιεί το ιστορικό των τελευταίων 100 κινήσεων και κάποια βασική ανάλυση για να απαντήσει σε μια ερώτηση:

"Έχει γίνει πρόσφατα πραγματική πρόοδος προς τα εμπρός (ή έχει κολλήσει σε κάποιο επαναλαμβανόμενο χορό);"

Έτσι, στο βίντεο, όταν βλέπετε ένα εμπρός-αντίστροφο να επαναλαμβάνεται, τότε γυρίζει, σημαίνει ότι αναγνώρισε το μοτίβο προς τα εμπρός-αντίστροφα, δοκιμάζοντας έτσι κάτι άλλο.

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

Βήμα 1: Προσθήκη κυκλώματος υποστήριξης (MCP3008)

Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)
Προσθήκη κυκλώματος υποστήριξης (MCP3008)

Πριν μπορέσουμε να προσθέσουμε τους αισθητήρες IR, θα χρειαστούμε το κύκλωμα διεπαφής μεταξύ αυτών και του Raspberry Pi.

Θα προσθέσουμε έναν μετατροπέα αναλογικού σε ψηφιακό MCP3008. Υπάρχουν πολλοί διαδικτυακοί πόροι για τη σύνδεση αυτού του τσιπ με το Raspberry Pi, οπότε δεν θα ασχοληθώ πολύ με αυτό εδώ.

Ουσιαστικά, έχουμε μια επιλογή. Εάν η έκδοση των αισθητήρων IR λειτουργεί σε 3V, το ίδιο μπορεί να κάνει και το MCP3008 και, στη συνέχεια, μπορούμε να συνδεθούμε απευθείας με το Raspberry.

[Αισθητήρας IR 3V] - [MCP3008] - [Raspberrry Pi]

Στην περίπτωσή μου, ωστόσο, τρέχω ως επί το πλείστον 5V, οπότε αυτό σημαίνει αλλαγή επιπέδου διπλής κατεύθυνσης.

[Αισθητήρας IR 5V]-[MCP3008]-[αμφίδρομος δίαυλος 5V-to-3V]-[Raspberry Pi]

Σημείωση: Υπάρχει μόνο μία έξοδος σήματος από τον αισθητήρα IR. Πηγαίνει απευθείας σε μία από τις αναλογικές γραμμές σήματος εισόδου του MCP3008. Από το MCP3008, υπάρχουν 4 γραμμές δεδομένων που πρέπει να συνδέσουμε (μέσω του δίαυλου κατεύθυνσης) στο Raspberry Pi.

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

Βήμα 2: Τοποθετήστε αισθητήρες IR

Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR
Mount αισθητήρες IR

Η Sharp παράγει αρκετούς διαφορετικούς αισθητήρες IR και έχουν διαφορετικές περιοχές και περιοχή κάλυψης. Έτυχε να έχω παραγγείλει το μοντέλο GP2Y0A60SZLF. Το μοντέλο που θα επιλέξετε θα επηρεάσει την τοποθέτηση και τον προσανατολισμό του αισθητήρα. Δυστυχώς για μένα, δεν έψαξα πραγματικά ποιοι αισθητήρες να πάρω. Moreταν περισσότερο μια απόφαση "ποια μπορώ να πάρω σε λογικό χρόνο και τιμή από μια αξιόπιστη πηγή, από αυτά που προσφέρουν".

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

Υπάρχουν τουλάχιστον τρεις τρόποι για να τοποθετήσετε αυτούς τους αισθητήρες στο ρομπότ.

  1. Τοποθετήστε τα σε σταθερή θέση, μπροστά, στραμμένα ελαφρώς το ένα μακριά από το άλλο.
  2. Τοποθετήστε τα σε ένα σερβο, στο μπροστινό μέρος, στραμμένα λίγο μακριά το ένα από το άλλο.
  3. Τοποθετήστε τα σε μια σταθερή θέση, μπροστά, αλλά στις πιο αριστερές και δεξιότερες απομακρυσμένες γωνίες, γωνιακά το ένα προς το άλλο.

Συγκρίνοντας την επιλογή #1 με την επιλογή #3, νομίζω ότι το #3 θα καλύψει μεγαλύτερο μέρος της περιοχής σύγκρουσης. Αν ρίξετε μια ματιά στις εικόνες, η επιλογή #3 μπορεί να γίνει όχι μόνο έτσι ώστε τα πεδία αισθητήρων να επικαλύπτονται, αλλά επίσης να καλύπτουν το κέντρο και πέρα από το εξωτερικό πλάτος του ρομπότ.

Με την επιλογή #1, όσο πιο μακριά βρίσκονται οι αισθητήρες μεταξύ τους, τόσο περισσότερο ένα τυφλό σημείο στο κέντρο.

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

  • Θα χρησιμοποιήσουμε ένα από τα κανάλια επικοινωνίας PWM στο Raspberry Pi. (Είναι δυνατόν να ενισχυθεί αυτό αλλά ακόμα…)
  • Η τρέχουσα κλήρωση με το σερβο μπορεί να είναι σημαντική
  • Προσθέτει περισσότερα στο υλικό και το λογισμικό

Θα ήθελα να αφήσω την επιλογή σερβο για αργότερα όταν προσθέτω πιο σημαντικούς αισθητήρες, όπως Time-of-Flight (ToF) ή ίσως μια κάμερα.

Υπάρχει ένα άλλο πιθανό πλεονέκτημα με την επιλογή #2 που δεν είναι διαθέσιμο με τις άλλες δύο επιλογές. Αυτοί οι αισθητήρες IR μπορεί να μπερδευτούν, ανάλογα με τον φωτισμό. Μπορεί το ρομπότ να διαβάζει ένα αντικείμενο που είναι άμεσα κοντά ενώ στην πραγματικότητα δεν υπάρχει κοντινό αντικείμενο. Με την επιλογή #3, καθώς τα πεδία τους μπορούν να επικαλύπτονται, και οι δύο αισθητήρες μπορούν να καταχωρούν το ίδιο αντικείμενο (από διαφορετικές γωνίες).

Συνεχίζουμε με την επιλογή τοποθέτησης #3.

Βήμα 3: Timeρα για δοκιμή

Image
Image

Αφού πραγματοποιήσαμε όλες τις συνδέσεις μεταξύ του Raspberry Pi, του MCP3008 ADC και των αισθητήρων Sharp IR, ήρθε η ώρα για δοκιμή. Απλώς μια απλή δοκιμή για να βεβαιωθείτε ότι το σύστημα λειτουργεί με τους νέους αισθητήρες.

Όπως και στα προηγούμενα Instructables, χρησιμοποιώ τη βιβλιοθήκη wiringPi C όσο το δυνατόν περισσότερο. Κάνει τα πράγματα πιο εύκολα. Κάτι που δεν είναι πολύ προφανές από τον έλεγχο της ιστοσελίδας του wiringPi, είναι ότι υπάρχει άμεση υποστήριξη για το MCP3004/3008.

Ακόμα και χωρίς αυτό, μπορείτε απλά να χρησιμοποιήσετε την επέκταση SPI. Αλλά δεν χρειάζεται. Αν ρίξετε μια προσεκτική ματιά στο git repository για το wiringPi, θα συναντήσετε μια λίστα με υποστηριζόμενα τσιπ, εκ των οποίων ένα από αυτά είναι για το MCP3004/3008.

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

Βήμα 4: Ένας εικονικός αισθητήρας - AmpSensor

Όσο πιο διαφορετικοί τρόποι μπορείτε να κάνετε το ρομπότ να λαμβάνει πληροφορίες για τον έξω κόσμο, τόσο το καλύτερο.

Το ρομπότ διαθέτει επί του παρόντος οκτώ ακουστικούς αισθητήρες σόναρ HCSR04 (δεν είναι το επίκεντρο αυτού του Instructable) και τώρα διαθέτει δύο αισθητήρες απόστασης IR Sharp IR. Όπως αναφέρθηκε προηγουμένως, μπορούμε να επωφεληθούμε από κάτι άλλο: τη λειτουργία ανίχνευσης κινητήρα ρεύματος Roboclaw.

Μπορούμε να τυλίξουμε αυτήν την κλήση ερωτήματος στον ελεγκτή κινητήρα σε μια κλάση C ++ και να την ονομάσουμε AmpSensor.

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

Εάν προσθέσουμε κάποια ευελιξία στο λογισμικό (args γραμμής εντολών και / ή εισαγωγή πληκτρολογίου κατά τη λειτουργία), τότε μπορούμε να αυξήσουμε / μειώσουμε το όριο "κρίσιμων ενισχυτών" καθώς πειραματιζόμαστε αφήνοντας το ρομπότ να κινηθεί και να προσκρούσει σε αντικείμενα, είτε ευθεία προς τα μέσα είτε κατά την περιστροφή.

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

Βήμα 5: Πλοήγηση

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

Δεν διαθέτει κινητήρες με κωδικοποιητές και δεν διαθέτει IMU (μονάδα αδρανειακής μέτρησης), έτσι καθίσταται δυσκολότερο να γνωρίζουμε αν πραγματικά κινείται ή περιστρέφεται και πόσο.

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

Επέλεξα να ΜΗ χρησιμοποιήσω έναν μικροελεγκτή όπως το Arduino γιατί α) δεν μου αρέσει το περιβάλλον psuedo-C ++, β) και ότι η υπερβολική ανάπτυξη θα φθείρει τη μνήμη ανάγνωσης-εγγραφής (?), Και ότι θα χρειαστεί έναν κεντρικό υπολογιστή για να αναπτυχθεί (;). Or ίσως τυχαίνει σαν το Raspberry Pi.

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

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

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

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

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

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

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

Μπορώ να σκεφτώ δύο πολύ βασικούς (στοιχειώδεις) τρόπους χρήσης της ιστορίας των κινήσεων.

  • για τον τελευταίο αριθμό κινήσεων Χ, ταιριάζουν με το πρότυπο Υ. Ένα απλό παράδειγμα θα μπορούσε να είναι (και αυτό συνέβη) "ΕΜΠΡΟΣ, ΑΝΤΙΣΤΡΟΦΗ, ΕΜΠΡΟΣ, ΑΝΤΙΣΤΡΟΦΗ,…..". Υπάρχει λοιπόν αυτή η συνάρτηση αντιστοίχισης που επιστρέφει είτε TRUE (βρέθηκε μοτίβο) είτε FALSE (δεν βρέθηκε). Εάν είναι TRUE, στο τμήμα πλοήγησης του προγράμματος, δοκιμάστε άλλες ακολουθίες κινήσεων.
  • για τον τελευταίο αριθμό κινήσεων Χ, υπάρχει γενική ή καθαρή κίνηση προς τα εμπρός. Πώς μπορεί κάποιος να καθορίσει ποια είναι η πραγματική κίνηση προς τα εμπρός; Λοιπόν.. μια εύκολη σύγκριση είναι ότι για τις τελευταίες κινήσεις Χ, το "FORWARD" συμβαίνει περισσότερο από το "REVERSE". Αλλά δεν χρειάζεται να είναι το μόνο. Τι θα λέγατε για αυτό: "ΔΕΞΙΑ, ΔΕΞΙΑ, ΑΡΙΣΤΕΡΑ, ΔΕΞΙΑ". Σε αυτή την περίπτωση, το ρομπότ πρέπει να κάνει σωστές στροφές για να βγεί από μια γωνία ή επειδή πλησίασε τον τοίχο υπό γωνία, αυτό θα μπορούσε να θεωρηθεί πραγματική πρόοδος προς τα εμπρός. Από την άλλη πλευρά, το "ΑΡΙΣΤΕΡΑ, ΔΕΞΙΑ, ΑΡΙΣΤΕΡΑ, ΔΕΞΙΑ …" μπορεί να μην θεωρηθεί πραγματική πρόοδος προς τα εμπρός. Έτσι, εάν το "ΔΕΞΙΑ" εμφανίζεται περισσότερο από το "ΑΡΙΣΤΕΡΟ" ή "ΑΡΙΣΤΕΡΟ εμφανίζεται περισσότερο από το" ΔΕΞΙΑ ", τότε αυτό θα μπορούσε να είναι πραγματική πρόοδος.

Στην αρχή αυτού του Instructable, ανέφερα ότι ένας πιθανός 3ος στόχος θα μπορούσε να είναι ο τετραγωνισμός ή η ευθυγράμμιση σε έναν τοίχο. Για αυτό, όμως, χρειαζόμαστε περισσότερα από το "είμαστε κοντά σε κάποιο αντικείμενο". Για παράδειγμα, αν μπορέσουμε να πάρουμε δύο ακουστικούς αισθητήρες προς τα εμπρός (όχι στο επίκεντρο αυτού του άρθρου) για να δώσουμε αρκετά καλές, σταθερές απαντήσεις σχετικά με την απόσταση, προφανώς αν ο ένας αναφέρει πολύ διαφορετική τιμή από το άλλο, το ρομπότ έχει πλησιάσει τον τοίχο υπό γωνία, και θα μπορούσε να επιχειρήσει κάποιους ελιγμούς για να δει εάν αυτές οι τιμές πλησιάζουν η μία την άλλη (αντικρίζοντας τον τοίχο τετραγωνικά).

Βήμα 6: Τελικές σκέψεις, επόμενη φάση…

Ελπίζω ότι αυτό το Instructable έδωσε κάποιες ιδέες.

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

Στην παραπάνω περίπτωση, όλοι οι ακουστικοί αισθητήρες συνεργάστηκαν καλά και ήταν αρκετά απλός με το λογισμικό.

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

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

Προς το παρόν, μετά από δοκιμές και σφάλματα, τα πράγματα κατέληξαν σε αυτήν την προτεραιότητα:

  1. ανίχνευση ενισχυτή
  2. IR-sensing
  3. ακουστική αίσθηση

Και αυτό που έκανα ήταν να μειώσω την ευαισθησία των αισθητήρων IR, έτσι ώστε να ανιχνεύουν μόνο πολύ κοντά αντικείμενα (όπως τα επικείμενα πόδια της καρέκλας)

Μέχρι στιγμής, δεν υπήρξε ανάγκη να γίνει κάποιο λογισμικό πολλαπλών νημάτων ή διακοπή λειτουργίας, αν και περιστασιακά αντιμετωπίζω απώλεια ελέγχου μεταξύ του Raspberry Pi και του ελεγκτή κινητήρα Roboclaw (απώλεια σειριακών επικοινωνιών).

Εκεί θα χρησιμοποιηθεί κανονικά το κύκλωμα E-Stop (βλ. Προηγούμενα εγχειρίδια). Ωστόσο, δεδομένου ότι δεν θέλω (ακόμη) να ασχοληθώ με την ανάγκη επαναφοράς του Roboclaw κατά τη διάρκεια της ανάπτυξης και το ρομπότ δεν πηγαίνει τόσο γρήγορα, και είμαι παρών να το παρακολουθώ και να το κλείνω, δεν το έχω κάνει συνέδεσε το E-Stop.

Τελικά, πιθανότατα θα χρειαστεί πολλαπλή κλωστή.

Επόμενα βήματα…

Σας ευχαριστώ που τα καταφέρατε μέχρι εδώ.

Πήρα μερικούς αισθητήρες VL53L1X IR Laser ToF (time-of-flight), οπότε αυτό είναι πιθανότατα το θέμα του επόμενου Instructable, μαζί με ένα σερβο.

Συνιστάται: