Σε αυτή την
ενότητα θα δούμε πώς μπορούμε να κάνουμε κανονικές πολυγωνικές αλλά και
κυκλικές τροχιές με ένα ρομπότ δεξιού και αριστερού τροχού (deferential robot). Θα δούμε εξετάσουμε
παραδείγματα κανονικών πολυγώνων και κύκλου, με τη βοήθεια των μαθηματικών και
μετά θα παρουσιάσουμε αλγόριθμους προγραμματισμού οι οποίοι θα μπορούν να
εφαρμοστούν στο ρομπότ S2
της Parallax αλλά και σε διάφορα άλλα ρομπότ (όπως το ActivityBot ή το
Lego NXT). Πριν κάνουμε όμως αυτό
είναι απαραίτητο να έχουμε μελετήσει και αναλύσει το πρόβλημα της επιτόπιας
στροφής του ρομπότ. Πρέπει να μπορούμε να προγραμματίζουμε το ρομπότ να κάνει
επιτόπιες περιστροφές ώστε να στρίβει (δεξιόστροφα ή αριστερόστροφα) διάφορες
γωνίες
.
Επιτόπια στροφή τουS2 κατά ω μοίρες
Επιτόπια στροφή τουS2 κατά ω μοίρες
Πριν προχωρήσουμε στην υλοποίηση πολυγωνικών και κυκλικών
τροχιών με το S2 πρέπει να μελετήσουμε
την επιτόπια στροφή του τ για ζητούμενη γωνία.
Για να κάνει μία στροφή με το S2 χρησιμοποιώντας το GUI οι ταχύτητες του δεξιού και αριστερού τροχού
πρέπει να είναι αντιθέτου πρόσημου. Ειδικότερα αν οι ταχύτητες αυτές είναι
ακριβώς αντίθετες το ρομπότ πραγματοποιεί μία επιτόπια στροφή (με κέντρο περιστροφής την τρύπα του
μαρκαδόρου) και έστω Degrees η γωνία αυτή σε μοίρες. Αν ονομάσουμε αυτήν
την ταχύτητα Spd και Time το χρόνο εκτέλεσής της σε ms . Η σχέση που συνδέει
την ταχύτητα Spd επί το χρόνο Time και την πραγματοποιηθείσα γωνία Degrees
είναι:
Spd * Time = Degrees * 1111.1111
Για παράδειγμα για να στρίψει 90 μοίρες, Spd * Time = 90 * 1111.1111 = 100000
Θέτοντας Spd ίσον με 100 και
Time ίσο με 1 sec (1000 ms) θα πραγματοποιήσω την στροφή 90 μοιρών μπορώ όμως να κάνω το ίδιο
Θέτοντας Spd ίσον με 50 και
Time ίσο με 2 sec (2000 ms) .
Φυσικά δεν δουλεύουν τόσο ωραία όλες οι γωνίες δεδομένου του
βήματος αύξησης του χρόνου.
Ακολουθεί ένας πίνακας με τις σημαντικότερες γωνίες για
τροχιές κανονικών πολυγώνων με το ρομπότ S2 της Parallax
Κάνοντας τροχιές με ρομπότ σε κανονικά
πολύγωνα
Πολύγωνο
λέγεται ένα κλειστό σχήμα που έχει N κορυφές
και άρα Ν πλευρές (Ν
. Ειδικότερα
κανονικό πολύγωνο είναι το πολύγωνο που έχει όλες τις πλευρές του ίσες.
Έτσι μερικές
κατηγορίες κανονικών Ν-γώνων για παράδειγμα είναι:
Το ισόπλευρο
τρίγωνο (Ν=3), το τετράγωνο (Ν=4), το κανονικό πεντάγωνο (Ν=5), το κανονικό
εξάγωνο (Ν=6) κ.τ.λ.
Ένα ειδικό
ενδιαφέρον για το πρόβλημα των ρομποτικών τροχιών παρουσιάζουν τα κανονικά Ν-γωνα με (Ν
γιατί αυτά
πρακτικά προσεγγίζουν τον κύκλο. Αν και
δεν είναι πραγματικοί κύκλοι στη πράξη αυτά τα πολύγωνα μπορούν να
αναπαραστήσουν ένα κύκλο με πάρα πολύ μεγάλη ακρίβεια.
Θα
προσπαθήσουμε τώρα να κάνουμε τροχιές κανονικών πολυγώνων με ένα ρομπότ.
Προκειμένου
ένα ρομπότ να κινηθεί σε μία τροχιά πάνω
σε κανονικό πολύγωνο πρέπει να γνωρίζει την εξωτερική γωνία του πολυγώνου ώστε
να στρίψει κατάλληλα. Η γωνία αυτή για οποιοδήποτε κανονικό Ν-γωνο (Ν
είναι:
Έτσι
προκειμένου το ρομπότ να κάνει μία τροχιά σε κανονικό τρίγωνο πλευράς S (σύμφωνα με τους δείκτες του ρολογιού)
πρέπει να του δώσουμε τις παρακάτω εντολές :
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 120ο
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 120ο
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 120ο
|
Ή χρησιμοποιώντας μία δομή επανάληψης:
·
Επανέλαβε 3
φορές
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 120ο
|
Εφαρμόζοντας τον
παραπάνω αλγόριθμο στο ρομπότ S2
και προγραμματίζοντας μέσα από το GUI έχουμε:
Αν
θέλουμε το ρομπότ να κάνει μία τροχιά σε
κανονικό τετράγωνο πλευράς S (σύμφωνα
με τους δείκτες του ρολογιού) πρέπει να του δώσουμε τις παρακάτω εντολές :
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 90ο
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 90ο
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 90ο
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 90ο
|
Ή χρησιμοποιώντας μία δομή επανάληψης:
·
Επανέλαβε 4
φορές
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 90ο
|
Εφαρμόζοντας τον παραπάνω αλγόριθμο στο ρομπότ S2 και προγραμματίζοντας μέσα
από το GUI έχουμε:
Αν
θέλουμε το ρομπότ να κάνει μία τροχιά σε
κανονικό πεντάγωνο πλευράς S (σύμφωνα
με τους δείκτες του ρολογιού) πρέπει να του δώσουμε τις παρακάτω εντολές :
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 72ο
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 72ο
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 72ο
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 72ο
|
Ή χρησιμοποιώντας μία δομή επανάληψης:
·
Επανέλαβε 5
φορές
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 72ο
|
Εφαρμόζοντας τον παραπάνω αλγόριθμο στο ρομπότ S2 και προγραμματίζοντας μέσα
από το GUI έχουμε:
Γενικεύοντας
λοιπόν αν θέλουμε το ρομπότ να κάνει μία
τροχιά σε κανονικό Ν-γωνο, (Ν
πλευράς S (σύμφωνα
με τους δείκτες του ρολογιού) πρέπει να του δώσουμε τις παρακάτω εντολές :
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 360ο /Ν
·
………………….
·
………………
(Ν –φορές)
·
…………………
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 360ο /Ν
|
Ή χρησιμοποιώντας μία δομή επανάληψης:
·
Επανέλαβε Ν
φορές
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 360ο /Ν
|
Προσεγγίζοντας τον κύκλο σαν κανονικό
πολύγωνο
Ξεχωριστό
ενδιαφέρον παρουσιάζει ο κύκλος τον οποίο μπορούμε να προσεγγίσουμε με αρκετά
καλή ακρίβεια κάνοντας ένα κανονικό 36-γωνο. Ουσιαστικά κάθε κανονικό Ν-γωνο με
(Ν
προσεγγίζει
τον κύκλο και όσο μεγαλύτερο είναι το Ν τόσο ποιο καλή είναι αυτή η προσέγγιση.
Έτσι
προκειμένου το ρομπότ να κάνει μία τροχιά σε Κύκλο με προσέγγιση κανονικού 36-γώνου πλευράς S (σύμφωνα με
τους δείκτες του ρολογιού) πρέπει να του δώσουμε τις παρακάτω εντολές :
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 10ο
·
………………….
·
………………
(36 –φορές)
·
…………………
·
Προχώρησε μπροστά S
·
Στρίψει δεξιά 10ο
|
Ή χρησιμοποιώντας μία δομή επανάληψης:
·
Επανέλαβε 36
φορές
·
Προχώρησε μπροστά S
·
Στρίψε δεξιά 10ο
|
Εφαρμόζοντας τον παραπάνω αλγόριθμο στο ρομπότ S2 και προγραμματίζοντας μέσα
από το GUI έχουμε:
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου