Τετάρτη 20 Μαΐου 2015

Τέχνη με αλγόριθους και ρομπότ

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


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

 Μία διπλή σπείρα του “Αρχιμήδη”. Επαναλαμβανόμενα ημικύκλια με σταθερό βήμα αύξησης της ακτίνας τους…

 Μία “Χρυσή σπείρα” η αλλιώς “Σπείρα Fibonacci”  βασισμένη στην γνωστή ακολουθία Fibonacci 0,1,1,2,3,5,8,13,21,34,55,89…. όπου ο κάθε όρος προκύπτει από το άθροισμα των δύο προηγούμενων όρων…

 Μία “Polynomial spiral” είδος των “Cornu spiral”….

 Και “παίζοντας” λίγο με τις παραμέτρους της “polynomial” σπείρας ένα σύμπλεγμα από σπείρες αυτής της κατηγορίας δημιουργώντας μία αλγοριθμική ταπετσαρία……

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


 Νίκος Γιαννακόπουλος Καθηγητής πληροφορικής-μαθηματικός

Κυριακή 29 Μαρτίου 2015

Αυγό-ρομπότ: Βάψε τα Πασχαλινά αυγά σου με ένα ρομπότ -Niko’s Egg-painter robot (OpenBuilds)




Το Πάσχα πλησιάζει και τι καλύτερο από ένα Αυγό-ρομπότ  (EggBot
Τα αυγό-ρομπότ είναι ένας τύπος ρομπότ που ζωγραφίζουν αυγά και μία μεγάλη ποικιλία από σφαιρικά-στρογγυλά αντικείμενα.
Λίγα ιστορικά στοιχεία: Το πρώτο Αυγό-ρομπότ κατασκευάστηκε από τον Bruce Shapiro (http://www.taomc.com/) την Άνοιξη του 1990. Το 2009 οι Ben Trombley (γιός του Bruce Shapiro )  και  Brian Schmalz μετέτρεψαν αυτή την αρχική ρομποτική κατασκευή σε ένα εμπορικό συναρμολογούμενο κιτ για οικιακούς χρήστες. Παράλληλα κατασκεύασαν την πρώτη έκδοση λογισμικού που επιτρέπει να δημιουργήσεις σχέδια με το γνωστό ελεύθερο λογισμικό Inkscape και να τα σχεδιάσεις με ένα Αυγό – ρομπότ. Το 2010 η ομάδα αυτή ένωσε τις δυνάμεις της με τους Windell Oskay και  Lenore Edman από το  Evil Mad Scientist Laboratories και δημιούργησαν το Eggbot 2.0 kit.
Τα Αυγό-ρομπότ Egg-Bots είναι πολύ διαδεδομένα σε όλο τον κόσμο λόγω της σχετικά απλής κατασκευής τους και της «ανοικτής» Open, και ελεύθερης (freeware) χρήσης τους που προσφέρει το λογισμικό Inkscape με το οποίο συνεργάζονται. Για το λόγο αυτό πολλοί χρήστες σχεδιάζουν και κατασκευάζουν μόνοι τους τέτοια ρομπότ (κάτι ανάλογο με τους 3d-printers), χρησιμοποιώντας διάφορα σχέδια και διάφορα υλικά, όπως ξύλο, πλεξιγκλάς, μέταλλο, πλαστικό ή και συνδυασμούς αυτών των υλικών. Ένα τυπικό Αυγό-ρομπότ διαθέτει έναν απλό βραχίονα που κρατά ένα μαρκαδόρο για να σχεδιάζει πάνω στο αυγό, και ένα μηχανισμό που περιστρέφει το αυγό γύρω από ένα σταθερό άξονα. Για να επιτευχθεί αυτό ένα Αυγό-ρομπότ διαθέτει δύο βηματικούς κινητήρες stepper και ένα mini servo. Ο ένας κινητήρας όπως είπαμε περιστρέφει το αυγό γύρο από τον άξονά του. Ο δεύτερος περιστρέφει το βραχίονα με το μαρκαδόρο σε όλο το μήκος του αυγού και το mini-servo είναι υπεύθυνο για να κατεβάζει ή να σηκώνει το βραχίονα με το μαρκαδόρο  κάτω ή πάνω ώστε να ακουμπάει ή όχι την επιφάνεια του αυγού.  Προκειμένου να πετύχουμε αυτό τον χειρισμό μπορούμε να χρησιμοποιήσουμε έναν οποιαδήποτε  μικροελεγκτή (Arduino, Parallax κτλ, ) με ποιο διαδεδομένο όμως το  EBB EiBotBoard  (αυτό χρησιμοποίησα και εγώ σε αυτό το project)  
Το Αυγό-ρομπότ που προτείνω είναι εξολοκλήρου σχεδιασμένο σε 3D σχεδίαση με το SketchUP και εκτός από το ελεύθερο λογισμικό που χρησιμοποιεί, είναι φτιαγμένο με ανοικτό hardware που όλοι μπορούν να προμηθευτούν- κατασκευάσουν ή  αναπαράγουν μόνοι τους.
Για την κατασκευή του σασί χρησιμοποίησα την επιλογή που παρέχουν τα OpenBuilds όσον αφορά τα μεταλλικά μέρη, ενώ  για τα πλαστικά μέρη τα κατασκεύασα μόνος μου με χρήση του 3D-εκτυπωτή  Creatr Leapfrog 3D printer

Δείτε το Video του Egg-painter robot:



Η λίστα με τα υλικά που χρησιμοποίησα από (OpenBuilds)
1 X V-Slot Linear Rail size20mm x 80mm and length 500mm
1 X Ball Bearing 625 2RS 5x16x5 
4 X L Bracket
1 X Spacer Block
1 X Motor Mount Plate for Nema 17 Stepper Motor
1 X Motor Mount Plate for Nema 23 Stepper Motor
2 X Self Tapping Screw
1 X Tee Nuts (25 Pack) (M5)
8 X Low Profile Screws M5(8mm)
2 X Low Profile Screws M5(10mm)
3 X Low Profile Screws M5(20mm)
1 X Socket Head Screws M3 (25 Pack)
2 X Lock Collar (5mm)

Εκτυπωμένα μέρη από 3D-Printer:

Ηλεκτρονικά: (Η επιλογή είναι ελεύθερη, αλλά συνιστώ τα παρακάτωJ
·        2 X  NEMA 17" bipolar stepper motor 
·        1 X  Micro Servo Motor

 


Software: Inkscape
http://inkscape.org/en/

Τετάρτη 4 Φεβρουαρίου 2015

"Καλλιτέχνης" : Ένα ρομπότ κιμωλίας με επεξεργαστή τον Parallax Propeller (ή εναλλακτικά Arduino).

Φίλες και φίλοι της ρομποτικής σας παρουσιάζω τον "Καλλιτέχνη" ένα ρομπότ κατασκευασμένο ώστε να μπορεί να σχεδιάζει σε εσωτερικούς και εξωτερικούς χώρους μεγάλων επιφανειών όπως δάπεδα, αυλές πεζοδρόμια δρόμους κτλ. με τη βοήθεια κιμωλίας!
Η κατασκευή του έγινε με 3D σχεδίαση και με χρήση του Creatr Leapfrog 3D printer
Μερικά βασικά χαρακτηριστικά αυτού του ρομπότ είναι:
Ηλεκτρονικά μέρη : Της Parallax  www.paralax.com
Εγκέφαλος επεξεργαστή: Parallax Propeller
Γλώσσα προγραμματισμού:  C
Βάρος: 6,4 κιλά
Διαστάσεις (MxΠxY): 37εκ. x 32εκ. x 23εκ.
Διάμετρος τροχών: 15,5 εκατοστά  (ελαστικά με αέρα)
Απόσταση μεταξύ τροχών:28,5 εκατοστά
Στροφές κινητήρων ανά λεπτό: 150  (RPM)
Ταχύτητα στην πράξη: 2,28 χιλμ/ώρα
Αυτονομία: 1 ώρα και 11 λεπτά (με ταχύτητα την παραπάνω και αισθητήρες σε λειτουργία)

Η ιστορία κατασκευής του ρομπότ:
Το ρομπότ είναι εξ ολοκλήρου σχεδιασμένο σε 3D και ο σχεδιασμός του ξεκίνησε το 2013
Η βασική του "φιλοσοφία" ήταν να κατασκευάσω ένα ρομπότ το οποίο θα ήταν εύκολο να αναπαράγει ο οποιοσδήποτε χρήστης με χρήση ενός 3D εκτυπωτή και απλά εργαλεία όπως ένα τρυπάνι και Dremel, χωρίς όμως να στερείται της τελειότητας  λειτουργικότητας στιβαρότητας και αισθητικής ενός βιομηχανικού εργοστασιακού πανάκριβου ρομπότ αυτής της κατηγορίας.


 
Ακολούθησε μία σειρά πειραματισμών και δοκιμών  ώστε να επιτευχθεί η τέλεια "γεωμετρία" που θα εξασφάλισε το άριστο αισθητικό αλλά και λειτουργικό αποτέλεσμα του ρομπότ. Ο γενικός του σχεδιασμός θυμίζει πάρα πολύ το ρομπότ Stingray της Parallax  αλλά με πάρα πολλές ουσιαστικές διαφορές τόσο στο μέγεθος όσο και σε βασικά χαρακτηριστικά.
Το ρομπότ αποτελείται από έναν αλουμινένιο ελαφρύ και πολύ ανθεκτικό σκελετό 8 συναρμολογούμενων κομματιών, σχετικά εύκολων στην κατασκευή τους,
 
ενώ το βασικό του μέρος (χωρίς το μηχανισμό κιμωλίας) έχει 9 πλαστικά μέρη εκτυπωμένα από 3D printer.

 
Για τη κατασκευή του ρομπότ «Καλλιτέχνη»  θα χρειαστείτε:
 
  • Το Motor Mount and Wheel Kit (#27971) (το παλιό κιτ τροχών της Parallax) μαζί με τους νέους 36-Position Quadrature Encoder.   Σημείωση: αυτό το kit μοτέρ-τροχών σταμάτησε πια να βγαίνει και αντικαταστάθηκε από το νέο κιτ  Motor Mount & Wheel Kit – Aluminum ή για πιο φθηνά το   Motor Mount & Wheel Kit - Molded Plastic (ακριβώς ίδιο με το προυγούμενο αλλά με πλαστική ζάντα)  τα οποία περιέχουν  τους νέους 36-Position Quadrature Encoders οπότε δεν χρειάζεται να τους αγοράσετε ξεχωριστά!.
  • Δύο HB-25 Motor Controllers
  • Το Propeller Activity Board . Είναι το board που χρησιμοποιεί το ActivityBot  (Οπότε η πρότασή μου είναι όσοι έχουν αγοράσει το ActivityBot  απλώς να αγοράσουν  τα δύο HB-25 Motor Controllers και το  Motor Mount & Wheel Kit – Aluminum και θα μπορούν να κάνουν αυτό το ρομπότ που είναι εντελώς διαφορετικής κατηγορίας)
  • Μία μπαταρία 12V 5.4AH διαστάσεις (Μήκος X Πλάτος X Yύψος)  9cm X10cmX 7cm (είναι οι μπαταρίες που χρησιμοποιούν μοτοσικλέτες μικρού κυβισμού)
  • Να κατασκευάσετε ένα πάνελ με 3 διακόπτες (Μπορείτε να το αποφύγετε αγοράζοντας απ’ ευθείας το Arlo Power Distribution Board)
  • Ένα τροχό τύπου omni  (ο πίσω τροχός) Μπορείτε να βρείτε στο E-bay .
Φυσικά θα χρειαστείτε τον αλουμινένιο σκελετό (το κόστος του φτάνει περίπου 30 Ευρώ) και τα πλαστικά μέρη το οποία μπορείτε να κατεβάσετε από το www.Thingiverse.com  να εκτυπώσετε με ένα οποιοδήποτε 3d εκτυπωτή  (Σε αυτό το σημείο για όσους δεν έχουν 3d εκτυπωτή  μπορούν να αποταθούν κάποιες εταιρείες που εκτυπώνουν δείγματα δωρεάν σε υποψήφιους πελάτες ή σε κάποια Hackerspaces  

Η συναρμολόγηση του "Καλλιτέχνη" γίνεται μέσα από 12 βήματα αφού έχουμε συγκεντρώσει όλα τα απαραίτητα και ο χρόνος που μου πήρε ήταν περίπου 71 λεπτά.
 
Ωστόσο η εκτύπωση των πλαστικών μερών απαιτεί πολύ περισσότερο χρόνο όπως
για παράδειγμα η παρακάτω επέκταση στήριξης του κινητήρα χρειάστηκε περίπου 40 λεπτά να εκτυπωθεί με τον Creatr Leapfrog 3D printer.
 
 Ιδιαίτερης σημασίας είναι ο "μηχανισμός κιμωλίας"  που διαθέτει το ρομπότ. Η κιμωλία επιλέχθηκε σαν υλικό γραφής γιατί αφ' ενός είναι φθηνή, αντικαθίσταται και αλλάζει εύκολα, αλλά κυρίως γιατί δεν γράφει μόνιμα αλλά μπορεί εύκολα να σβύνει χωρίς να ρυπαίνει έναν εξωτερικό δημόσιο χώρο όπως ένα πεζοδρόμιο.
 
Ωστόσο ο σχεδιασμός του μηχανισμού κιμωλίας ήταν αρκετά δύσκολος γιατί εκτός από το να ανεβοκατεβάζει την κιμωλία, έπρεπε να συγκεντρώνει κάποια ιδιαίτερα χαρακτηριστικά όπως να μπορεί να αφήνει σταδιακά κιμωλία (διότι αυτή λιώνει λόγο τριβής), καθώς το ρομπότ γράφει , και επίσης να την πιέζει διαρκώς και ελαφρά προς το έδαφος ώστε να έχει διαρκή πρόσφυση στις ανώμαλες επιφάνειες που μπορεί να έχει ένας εξωτερικός χώρος. Ο μηχανισμός είναι επίσης σχεδιασμένος σε 3D και εκτυπωμένος με 3d printer. Όσοι θέλουν να τον χρησιμοποιήσουν σε κάποιο δικό τους ρομπότ  μπορούν το βρούν στο tringiverse.com όπου το έχω δημοσιεύσει και απλά να το εκτυπώσουν με έναν τρισδιάστατο εκτυπωτή.
 
Για να γίνει ποιο κατανοητή η λειτουργία του μηχανισμού κιμωλίας του ρομπότ δείτε το ακόλουθο Video:
 
Ο προγραμματισμός και η ακριβής κίνηση του ρομπότ επιτυγχάνεται με τους μηχανισμούς οδομέτρησης  (encoders) που διαθέτει το ρομπότ οι οποίοι σε τελική ανάλυση παραπέμπουν σε μαθηματικούς υπολογισμούς που έχουν να κάνουν με μήκη και αποστάσεις που διανύει ο κάθε τροχός. Έτσι το ρομπότ μπορεί να ζωγραφίζει άψογα και με ακρίβεια γεωμετρικά σχήματα που παραπέμπουν σε γεωμετρία κάνοντας μάλιστα χρήση επαναληπτικών αλγορίθμων υλοποιημένων σε γλώσσα C. Ένα παράδειγμα είναι αυτό το "λουλούδι" το οποίο προέκυψε από 12 επαναλήψεις ενός "ασύμμετρου 8".
 
Η δυνατότητα γραφής και σχεδίων είναι μόνο μία από τις πολλές που διαθέτει αυτό το ρομπότ. Εκτός από αυτό το ρομπότ διαθέτει αισθητήρες που του επιτρέπουν αυτόματη πλοήγηση, ασύρματη επικοινωνία με 2 τρόπους (X-Bee και IR τηλεκοντρόλ) και μπορεί επίσης να μιλάει Ελληνικά - Αγγλικά και  σε οποιαδήποτε άλλη Γλώσσα, καθώς και να παίζει μουσική αλλά και να ακούει φωνητικές εντολές! Όλα αυτά χάρη στο πανίσχυρο Board που διαθέτει , το οποίο είναι εφοδιασμένο με τον Parallax Propeller  και αξίζει να σημειωθεί είναι το ίδιο Board που χρησιμοποιεί το περίφημο ActivityBot της Parallax για το οποίο έχω αναφερθεί εκτενώς σε άλλο άρθρο.
 
Δείτε λοιπόν εδώ το ρομπότ να κατεβάζει την κιμωλία του, να μιλά και να γράφει πάνω στη μοκέτα του καθιστικού μου.
 
 
Το ρομπότ είναι διαρκώς υπό εξέλιξη και νέες δυνατότητες προστίθενται διαρκώς σε αυτό. 
Ιδιαίτερο ενδιαφέρον παρουσιάζει μία δεύτερη έκδοση αυτού του ρομπότ την οποία θα παρουσιάσω ελπίζω φέτος και ενδιαφέρει ιδιαίτερα του χρήστες του Arduino. Η νέα αυτή έκδοση του ρομπότ ουσιαστικά θα είναι ο "δίδυμος" αδερφός του "Καλλιτέχνη" ο οποίος θα είναι το ίδιο ακριβώς ρομπότ, αλλά με διαφορετικό εγκέφαλο τον Arduino Uno σε συνδιασμό με το Board of Education Shield (for Arduino). 
Σε όλη αυτή τη προσπάθεια θέλω να ευχαριστήσω την Αμερικανική εταιρεία Parallax για την βοήθεια σε τεχνικά θέματα καθώς και την χορηγία μεγάλου μέρους του υλικού που χρησιμοποιεί το ρομπότ καθώς και την Ολλανδική εταιρεία Leapfrog για την υποστήριξή της σε τεχνικά θέματα 3d Printing και την δωρεάν παροχή της ενός ολοκαίνουριου Creatr Leapfrog τρισδιάστατου εκτυπωτή.
 
Νίκος Γιαννακόπουλος  gianakop@gmail.com  (καθηγητής Πληροφορικής & Μαθηματικών)
 
 

 


 

Δευτέρα 24 Νοεμβρίου 2014

Εκτύπωση και επίλυση του λαβύρινθου του Neil Rosenberg με το ρομπότ S2 της Parallax

Σε αυτό το άρθρο θα δούμε το ρομπότ S2 της Parallax να κινείται σε ένα λαβύρινθο του Neil Rosenberg που βρίσκεται δημοσιευμένος στο εκπαιδευτικό υλικό:“Robots for Beginners” , που είναι δημοσιευμένο στο site της Parallax Ο λαβύρινθος  περιέχει συνδυασμό κυκλικών και ευθύγραμμων διαδρομών σε μία πίστα 2.5μ Χ 1,67 μ.

                                       
Πρώτα πρέπει να εκτυπώσουμε το λαβύρινθο , να κατασκευάσουμε την πίστα και μετά να προγραμματίσουμε το ρομπότ.

Κατασκευή της πίστας: 
Τι θα χρειαστούμε:
1)    το αρχείο S2_maze_printable.jpg που είναι η ακόλουθη εικόνα:

2)    Έναν εκτυπωτή που να μπορεί να τυπώνει σε χαρτί Α3 (προσωπικά χρησιμοποίησα ένα hp deskjet 9300)
3)    Τριάντα (30) κόλλες λευκό χαρτί Α3
4)   Διαφανές αυτοκόλλητο (από αυτό που ντύνουμε βιβλία (περίπου 4 ρολά)
5)    ψαλίδι  και σελοτέιπ
Ανοίξτε το αρχείο S2_maze_printable.jpg  με το πρόγραμμα ζωγραφικής των windows και στη διαμόρφωση σελίδας κάντε τις ρυθμίσεις που φαίνονται στην παραπάνω οθόνη και μετά εκτυπώστε.
Η πίστα θα βγει σαν ένα παζλ από 30 εικόνες (8 από τις οποίες θα είναι εντελώς λευκές.
Ενώστε τα 30 φύλλα  σύμφωνα με την παρακάτω εικόνα. Η πίστα που θα προκύψει θα έχει διαστάσεις (2.5m x 1.67m).
Δείτε την ακόλουθη εικόνα με τα κομμάτια του puzle και τις ρυθμίσεις εκτύπωσης:
Αν τελικά κατασκευάσετε την πίστα ενώνοντας τα επιμέρους τμήματα από το χαρτί Α3 θα είναι κάπως έτσι:



 Προγραμματισμός του S2 οδηγίες-υποδείξεις:

To ρομπότ πρέπει να ξεκινήσει από την αρχή (σημείο start)   και να φτάσει στο τέλος (End), περνώντας διαδοχικά από τα σημεία A,B,C,D,F,E,G,H,I,K.   Κάθε φορά που το ρομπότ φτάνει σε ένα επιθυμητό σημείο πρέπει να κάνει ένα σύντομο ήχο.
Ο μαρκαδόρος του ρομπότ πρέπει να γράφει πάντα ανάμεσα στις μαύρες γραμμές χωρίς να ξεφεύγει έξω από το μονοπάτι.
Δίνονται οι διαστάσεις:
ΔΙΑΣΤΑΣΕΙΣ
ΥΠΟΔΕΙΞΕΙΣ
Start- A=18.2cm
AB= τόξο  κύκλου (Δείτε υπόδειξη2)
BC=34.6 cm
CD=57cm
DE=78.4cm
EF=33.8cm
EG=60.2cm
GH=81.3cm
IK=109.4cm
ΗΙ= τόξο  κύκλου (Δείτε υπόδειξη3)
K-END=54cm
Υπόδειξη1: υπενθυμίζουμε ότι με ταχύτητα 100 στους 2 τροχούς και χρόνο 3 sec το ρομπότ διατρέχει 35,5 cm.
 Υπόδειξη2: Αριστερός τροχός=100 Δεξιός=40-70. Βρείτε το σωστό χρόνο! Ίσως χρειαστούν 2 τόξα και 2 εντολές.
Υπόδειξη3: αριστερός τροχός ακίνητος. Βρείτε ταχύτητα δεξιού τροχού και χρόνο.
Υπόδειξη4: Για στροφές 90ο δεξιά ή αριστερά:
Ταχύτητα αριστερού τροχού=+-100, Ταχύτητα  δεξιού τροχού=-+100    και  Χρόνος=1sec.


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

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











Κυριακή 16 Φεβρουαρίου 2014

Κανονικά πολύγωνα και ρομποτική

Σε αυτή την ενότητα θα δούμε πώς μπορούμε να κάνουμε κανονικές πολυγωνικές αλλά και κυκλικές τροχιές με ένα ρομπότ δεξιού και αριστερού τροχού (deferential robot). Θα δούμε εξετάσουμε παραδείγματα κανονικών πολυγώνων και κύκλου, με τη βοήθεια των μαθηματικών και μετά θα παρουσιάσουμε αλγόριθμους προγραμματισμού οι οποίοι θα μπορούν να εφαρμοστούν στο ρομπότ S2 της Parallax αλλά και σε διάφορα άλλα ρομπότ (όπως το ActivityBot ή το Lego NXT). Πριν κάνουμε όμως αυτό είναι απαραίτητο να έχουμε μελετήσει και αναλύσει το πρόβλημα της επιτόπιας στροφής του ρομπότ. Πρέπει να μπορούμε να προγραμματίζουμε το ρομπότ να κάνει επιτόπιες περιστροφές ώστε να στρίβει (δεξιόστροφα ή αριστερόστροφα) διάφορες γωνίες .
Επιτόπια στροφή του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 έχουμε: