SHOP NOW

Perimeter Scout

Ελέγξτε με ακρίβεια τις στροφές για να πλοηγηθείτε στο χώρο

Οι μαθητές:

  • Να σχεδιάζουν projects που συνδυάζουν hardware και
    στοιχεία λογισμικού για τη συλλογή και την ανταλλαγή δεδομένων.
  • Να δημιουργούν μεταβλητές με σαφή ονόματα που αντιπροσωπεύουν διαφορετικούς τύπους δεδομένων και να εκτελούν πράξεις στις τιμές τους.
  • Να χρησιμοποιούν σωστή ορολογία, να περιγράφουν τα βήματα που πραγματοποιούνται και τις επιλογές που γίνονται κατά τη διάρκεια της επαναληπτικής διαδικασίας ανάπτυξης του προγράμματος.
  • Να αναπτύσσουν προγράμματα με ακολουθίες και απλές επαναλήψεις, για να εκφράσουν ιδέες ή να αντιμετωπίσουν ένα πρόβλημα.
  • Να ελέγχουν και να διορθώνουν (να εντοπίζουν και να διορθώνουν σφάλματα) ένα πρόγραμμα.
  • Να αυξήσουν τις δυνατότητες του ρομπότ: να δημιουργήσουν σύνθετα προγράμματα, σχεδιασμένα ως συστήματα αλληλεπιδρώντων μονάδων, η καθεμία με συγκεκριμένο ρόλο, που συντονίζονται για έναν κοινό γενικό σκοπό.
  • Να κάνουν παρατήρηση και/ή να πραγματοποιούν μετρήσεις της κίνησης ενός αντικειμένου για να παρέχουν στοιχεία που αποδεικνύουν ότι ένα μοτίβο μπορεί να χρησιμοποιηθεί για την πρόβλεψη μιας κίνησης στο μέλλον.
  • Να αναλύουν τα δεδομένα για να καθορίζουν αν μια σχεδιαστική λύση λειτουργεί όπως προοριζόταν.

Arduino Alvik

Την εφαρμογή Arduino Lab for MicroPython

Μεζούρες/Χάρακα

Μοιρογνωμόνιο

 

λήψη

Εισαγωγή

Τώρα που ξέρουμε πώς να κινούμαστε με το ρομπότ μας προς τα εμπρός και προς τα πίσω, ήρθε η ώρα να πάμε τα πράγματα προς μια νέα κατεύθυνση – κυριολεκτικά!

Τώρα που ξέρουμε πώς να κινούμαστε με το ρομπότ μας προς τα εμπρός και προς τα πίσω, ήρθε η ώρα να πάμε τα πράγματα προς μια νέα κατεύθυνση – κυριολεκτικά!

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

Ετοιμαστείτε – πρόκειται να προσθέσουμε μια εντελώς νέα διάσταση στο ταξίδι μας στη ρομποτική!

Πριν ξεκινήσουμε

Πάμε να προετοιμάσουμε την περιοχή δοκιμών μας. Βεβαιωθείτε ότι έχετε διαθέσιμα τα παρακάτω υλικά:

  • Εμπόδια (βιβλία, κουτιά, μαύρη ταινία κ.λπ.)
  • Μεζούρα ή χάρακα
  • Κομπιουτεράκι
  • Μοιρογνωμόνιο
  • Σημειωματάριο (συνιστάται)

Θα συνδυάσουμε τα εμπόδιά μας για να δημιουργήσουμε διαδρομές που θα ακολουθεί ο Alvik. Προτείνεται να ξεκινήσουμε με μια απλή ορθογώνια διάταξη, όπως φαίνεται στην παρακάτω εικόνα. Μπορείτε ελεύθερα να το κατασκευάσετε τώρα ή αργότερα στην ενότητα Security Bot.

Prepare

ορθογώνιο σχήμα για την πλοήγηση του Alvik

Στρίψε Alvik - Στροφή Pivot

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

 

Δες το παράδειγμα στην κινούμενη εικόνα, με μία στροφή pivot προς τα δεξιά. Ο δεξιός τροχός παραμένει σταθερός ενώ η κίνηση πραγματοποιείται από τον αριστερό.

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

				
					from arduino_alvik import ArduinoAlvik
from time import sleep

alvik = ArduinoAlvik()
alvik.begin()
sleep(5) # Wait a few seconds to complete initialization

while True:
    alvik.set_wheels_speed(30,0)
    sleep(5.5)
    alvik.set_wheels_speed(0,0)
    break
				
			

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

Challenge: Δοκιμάτε να στρίψετε αριστερά και δεξιά. Ενδεικτικά, μπορείτε να στρίψετε ελαφρώς κατά 45º ή να κάνετε μισή στροφή 90º. Καθώς ανακαλύπτετε τον σωστό συνδυασμό χρόνου και ταχύτητας για την επίτευξη επιθυμητής στροφής και γωνίας, φροντίστε να καταγράψετε τις τιμές ψηφιακά ή σε ένα σημειωματάριο. Η τεκμηρίωση έχει ιδιαίτερη σημασία και θα χρειαστούμε αυτούς τους αριθμούς σε επόμενες δραστηριότητες.

Ώρα να αφησούμε το καλώδο στην άκρη – Μέρος 2

Κάθε φορά που θέλουμε να τροποποιήσουμε τη λειτουργία του ρομπότ, πρέπει να πάμε πίσω και να ξαναγράψουμε στο αρχείο «main.py». Αυτό ίσως να είναι λιγάκι μπελάς, γιατί όχι μόνο προκαλεί σύγχυση στο να παρακολουθούμε όλες τις αλλαγές, αλλά μερικές φορές είναι δύσκολο να θυμόμαστε τι ακριβώς πρέπει να κάνει το script όταν ενεργοποιούμε τον Alvik.

Υπάρχει όμως τρόπος να το διορθώσουμε αυτό και αυτό είναι το σχέδιο: θα τροποποιήσουμε το αρχείο «main.py» ώστε να εισάγουμε άλλα scripts που είναι αποθηκευμένα στη μνήμη του Alvik. Με αυτόν τον τρόπο, θα έχουμε ένα πιο οργανωμένο σύστημα για να παρακολουθούμε όλες τις αλλαγές και να καταλαβαίνουμε τι πρόκειται να κάνει κάθε script ακριβώς.

Ας ξεκινήσουμε μεταφέροντας ένα από τα αποθηκευμένα μας σενάρια στο ρομπότ μας. Κάντε κλικ για να επιλέξετε ένα αρχείο .py μέσα στο φάκελο projects και κάντε κλικ στο αριστερό βέλος για να αποθηκεύσετε ένα αντίγραφο στην πλακέτα Nano ESP32. Σε αυτό το παράδειγμα, χρησιμοποιούμε το πρόσφατο αρχείο μας με όνομα turn_180_right.py

Δεδομένου ότι το main.py είναι πάντα το πρώτο που θα εκτελεστεί αυτόματα, μπορούμε να το χρησιμοποιήσουμε για την αυτόματη εκτέλεση οποιουδήποτε αρχείου (file) κατά την εκκίνηση. Ακριβώς όπως έχουμε εισάγει modules σε άλλα projects, με τον ίδιο τρόπο μπορούμε να εισάγουμε τα αρχεία (files) ως modules στο main.py. Για παράδειγμα, ας συμπεριλάβουμε το import turn_180_right στο main.py και ας πατήσουμε Save για να αποθηκεύσουμε τις αλλαγές στην πλακέτα μας.

εισαγωγή αρχείου στο πρόγραμμα

Τώρα είμαστε έτοιμοι να δοκιμάσουμε χωρίς καλώδιο. Αποσυνδέστε το καλώδιο USB-C® από τη Nano ESP32 και πατήστε το λευκό κουμπί reset στο πάνω μέρος της πλακέτας σας. Μετά από λίγα δευτερόλεπτα, το script σας θα αρχίσει αυτόματα να εκτελείται.

Αν θέλετε να δοκιμάσετε ένα διαφορετικό αρχείο, απλά επαναλάβετε τα παραπάνω βήματα και ενημερώστε το όνομα του module που θα εισάγετε στο main.py.

Security Robot

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

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

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

Δείτε παρακάτω ένα παράδειγμα το οποίο όμως είναι ημιτελές

				
					from arduino_alvik import ArduinoAlvik
from time import sleep

alvik = ArduinoAlvik()
alvik.begin()
sleep(5) # Wait a few seconds to complete initialization

while True:
    alvik.set_wheels_speed(30,30)    
    sleep(5.61) 
    alvik.set_wheels_speed(0, 30)
    sleep(3.2)
				
			

Σε αυτό το παράδειγμα, το ρομπότ κινείται προς τα εμπρός με ταχύτητα 30 RPM για 5,61 δευτερόλεπτα, με αποτέλεσμα να διανύει περίπου μια απόσταση 300 χιλιοστών. Στη συνέχεια, το ρομπότ περιστρέφεται πάνω στον αριστερό τροχό, ολοκληρώνοντας μια αριστερή στροφή 90º.

Παρατηρήστε ότι αφαιρέθηκε η εντολή break, που σημαίνει ότι αυτές οι κινήσεις θα επαναλαμβάνονται για πάντα, δημιουργώντας έτσι μια φανταστική τετράγωνη διαδρομή 300×300 χιλιοστών κατά μήκος της οποίας κινείται το ρομπότ.

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

Τι ψάχνουμε;