Χάρτης Οδηγός - GauravMall/Customer-Assistant GitHub Wiki

Ο Χάρτης-Οδηγος είναι μια γραφική παράσταση που χρησιμοποιείτε από τον Πελάτη-Βοηθό Ρομπότ με το οποίο μπορεί να οδηγεί τον εαυτό του. Σε αυτήν την σελίδα θα παρουσιάσω την διαδιακασία με την οποία θα δημιουργήσουμε αυτόν τον χάρτη και πως θα το εισάγουμε στο Arduino MEGA που χρησιμοποιώ.

Εισαγωγή

Ο χάρτης θα λειτουργεί με τον εξής τρόπο:

  • Θα υπάρχει μια εφαρμογή/πρόγραμμα μέσα στο οποίο θα μας δίνετε η δυνατότητα να δημιουργούμε σημεία και διάδρομοι με ένα εύκολο τρόπο, αφήνοντας στη εφαρμογή να κάνει τις δύσκολες διαδικασίες και τα χρονοβόρα μαθηματικά.
  • Η αποθήκευση και η εισαγωγή του χάρτη στο Arduino. Αυτό θα γίνει με ένα πολύ εύκολο τρόπο. Πρώτον θα ανοίξουμε το αρχείο που έχει εξάγει το πρόγραμμα και θα αντιγράψουμε όλα όσα έχει εκεί(με το Ctrl+C).
  • Θα φτιάξουμε μέσα στο προγραμματισμό του Arduino φτιάχνουμε ένα Array που θα ονομάζεται tokens και απλά θα το επικολλήσουμε εκεί. Έτσι, θα έχουμε όλους τους διαδρόμους που πρέπει να έχει ένα ρομπότ.

Το Πρόγραμμα Δημιουργίας Χάρτη του Πελάτη-Βοηθού (Customer-Assistant Map Creator)

Το πρόγραμμα αυτό, περιληπτικά, φτιάχνει τους χάρτες που θα χρησιμοποιεί ο Πελάτης-Βοηθός για να οδηγεί τον εαυτό του μέσα σε ένα κατάστημα, δωμάτιο κ.α. Για περισσότερες πληροφορίες και ολοκληρωτική περιγραφή μπορείτε να αναφερθείτε στο repository του Χάρτη Δημιουργού του Πελάτη-Βοηθού (https://github.com/GauravMall/Customer-Assistant-Map-Creator).

Σύστημα Λειτουργίας

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

Αφού ξέρουμε ότι το a = y2 - y1 δηλ. a = 5 - 2 = 3 σε αυτήν την περίπτωση και b = x2 - x1 δηλ. b = 3 - (-1) = 3 + 1 = 4, μπορούμε να βρούμε το c με Πυθαγόρειο. Άρα, c = a ^ 2 * b ^ 2. Επίσης, αν βρούμε και τη γωνία θ μπορούμε να πούμε στο ρομπότ προς ποια πλευρά θα γυρίσει το ρομπότ. Τη γωνία θα την βρούμε με τριγωνομετρία και θα γίνει με τον εξής τρόπο: θ = sin ^ (-1) * (a/b). Έτσι, αν θ < 90 και θ > 0 τότε θα στρίψει δεξιά, αν θ > 90 και θ < 180 τότε θα στρίψει αριστερά, αν θ = 90 τότε θα πάει μπροστά και αν θ > 180 και θ < 360 τότε θα πάει πίσω.

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

Επίσης, έφτιαξα και ένα άλλο board όπου για να μειώσω τα καλώδια που θα πηγαίνουν στο MEGA συνδεέται το VCC και το GND.

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