Πώς να οικοδομήσουμε ένα ρομπότ - Αποφυγή εμποδίων

ΠΑΝΑΘΗΝΑΪΚΟΣ - πασ γιάννινα (30/09/2017) | Gate13.gr (Ιούνιος 2019).

$config[ads_text] not found
Anonim

Πώς να οικοδομήσουμε ένα ρομπότ - Αποφυγή εμποδίων


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

Σχετικά Άρθρα

Πώς να οικοδομήσουμε ένα ρομπότ:

Μέρος 1: Σχεδιασμός και Σχηματική

Μέρος 2: Σχεδιασμός PCB

Μέρος 3: Δοκιμή υλικού

Μέρος 4: Ακολουθός γραμμής

Μέρος 6: Ρομπότ που ακολουθεί τοίχο

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Νόμιζα ότι θα ήταν τακτοποιημένο να δημιουργηθεί ένα ρομπότ που ήταν εύκολο να τεθεί μαζί με ένα μόνο συγκολλητικό σίδερο και ήταν επίσης προσιτό. Έκανα τις ακόλουθες απαιτήσεις για το ρομπότ μου:

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

Σε αυτό το άρθρο, θα μιλήσω για το πώς να προγραμματίσετε το ρομπότ για να αποφύγετε εμπόδια.

Αποφυγή εμποδίων

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

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

Προγραμματισμός

Το παρακάτω σκίτσο εκτελεί τη λογική:

  1. Ξεκινήστε το πρόγραμμα οδήγησης robot και περιμένετε 5 δευτερόλεπτα. Αυτό σας δίνει χρόνο να τοποθετήσετε το ρομπότ όπου θέλετε πριν αρχίσει να κινείται.
  2. Προχωρησε.
  3. Αν ο μεσαίος αισθητήρας είναι ενεργοποιημένος, αντιστρέψτε για 1 δευτερόλεπτο.
  4. Επιλέξτε τυχαία αριστερά ή δεξιά.
  5. Περιστρέψτε για 1 δευτερόλεπτο όσο δεν ενεργοποιείται ο μεσαίος αισθητήρας.
  6. Εάν ο μεσαίος αισθητήρας είναι ενεργοποιημένος, μεταβείτε στο βήμα 3.
  7. Αν ο αισθητήρας δεν είναι ενεργοποιημένος, μεταβείτε στο βήμα 2.

 #include "robot.h" void setup() { Serial.begin(38400); Serial.println("Boot"); rbt_init(); delay(5000); rbt_move(FWD, 100); } uint16_t lleft, lmid, lright; boolean wleft, wmid, wright; uint16_t avoid_count=0; void loop() { rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); /*reverse if something is in the way and try to change direction*/ if(wmid) { rbt_move(REV, 100); delay(1000); /*choose a direction at random to avoid an obstacle*/ if(random(10)>5) { rbt_move(LEFT, 100); avoid_count=1000; while(avoid_count){ delay(1); rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); if(wmid) break; } } else { rbt_move(RIGHT, 100); avoid_count=1000; while(avoid_count){ avoid_count--; rbt_sns(&lleft, &lmid, &lright, &wleft, &wmid, &wright); if(wmid) break; } } rbt_move(FWD, 100); } } 

Αποφυγή εμποδίων!

συμπέρασμα

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

Επόμενο άρθρο στη Σειρά: Πώς να οικοδομήσουμε ένα ρομπότ τοίχου

Λήψη κώδικα