Skip to content

robotonio/future_engineers_robotonio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

WRO Future Engineers - ROBOTONIO

Στο αρχείο αυτό περιγράφεται η βασική προσέγγιση επίλυσης των προκλήσεων στο πλαίσιο του διαγωνισμού WRO Future Engineers. Το project χωρίζεται σε δύο συστήματα:

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

Jetson (Python 3)

Το πρόγραμμα που θα αξιοποιεί την κάμερα ως βασικό αισθητήρα θα είναι γραμμένο με Python και θα τρέχει στο Jetson Nano 2GB. Η κάμερα θα χρησιμοποιηθεί για την ανίχνευση αντικειμένων ενδιαφέροντος, συγκεκριμένα των (κόκκινων και πράσινων) πύργων (pillars) που θα τοποθετηθούν στη 2η φάση του διαγωνισμού. Πιθανό upgrade (απαιτείται διερεύνηση): χρήση της κάμερας και μεθόδων machine learning για την καθοδήγηση του αυτοκινήτου και στην 1η φάση.

ESP32 (Micropython)

Το ESP32 θα διαβάζει όλους τους αισθητήρες που είναι άμεσα συνδεδεμένοι με αυτό (βλ. σχετική αναφορά στην ενότητα Hardware), θα διαβάζει μέσω σειριακής επικοινωνίας μηνύματα από το 1ο σύστημα (Jetson) και θα ελέγχει όλους τους actuators (κινητήρες, οθόνη, buzzers, LEDs κλπ).

Hardware (electronics)

Προσωρινή λίστα - γενικές αναφορές:

1o σύστημα

  1. Jetson Nano 2GB
  2. CSI Camera (pi camera v2)
  3. LiPo battery 3 cell (11.1V)
  4. Down buck converter (11.1V -> 5V for jetson)
  5. Power switch

2ο σύστημα:

  1. Car chassis (ackermann type)
  2. ESP32
  3. Ultrasonic distance sensors (X 2)
  4. LEGO EV3 color sensor
  5. Power switch
  6. Accelometer - Gyroscope GY-521
  7. DC Motor
  8. Motor driver L298N
  9. Standard Servo Motor (180 degrees)
  10. OLED display 0.96 in I2C (for useful info, like battery level etc)
  11. Push buttons X 2
  12. RGB LED
  13. Buzzer
  14. LiPo battery 3 cell

Software

Προσωρινή λίστα των modules σε κάθε σύστημα:

1ο σύστημα

  • run1.py
    • Το πρόγραμμα που θα τρέχει στο Jetson Nano 2GB κατά την 1η φάση του διαγωνισμού. Με τον τρέχοντα σχεδιασμό, στη φάση αυτή δεν θα αξιοποιηθεί η κάμερα, το αρχείο υπάρχει για ενδεχόμενη μελλοντικά ανάπτυξη και αξιοποίηση
  • run2.py
    • Το πρόγραμμα που θα τρέχει στο Jetson Nano 2GB κατά την 2η φάση του διαγωνισμού. Θα ανιχνεύει pillars και θα ενημερώνει σχετικά στο 2ο σύστημα (ESP32) μέσω σειριακής επικοινωνίας (να διερευνηθεί αν μπορούν τα μηνύματα να ανταλλάσονται ως json data και αν αυτός ο τρόπος επηρεάζει την ταχύτητα). Η ανίχνευση θα γίνεται με HSV ανάλυση σε συγκεκριμένα εύρη τιμών (lower & upper) των pillars. Οι lower & upper τιμές θα παρέχονται είτε από προεπιλογή, είτε από αρχείο. Το τελικό προϊόν της ανίχνευσης, που θα αποστέλεται στο ESP32 σειριακά (π.χ. jason data, string etc), θα περιλαμβάνει:
      • flag που θα προσδιορίζει θετική ή αρνητική ανίχνευση
      • είδος του κοντινότερου pillar (green/red)
      • απόσταση του κοντινότερου pillar από την κάμερα (εκτίμηση)
      • θέση του κοντινότερου pillar ως προς το κέντρο της οθόνης (οριζόντια και/ή κάθετα)
  • prep1.py
    • Το πρόγραμμα που θα τρέχει για την προετοιμασία του 1ου συστήματος, στις συνθήκες του 1ου μέρους του διαγωνισμού. Με τον τρέχοντα σχεδιασμό, στη φάση αυτή δεν θα αξιοποιηθεί η κάμερα, το αρχείο υπάρχει για ενδεχόμενη μελλοντικά ανάπτυξη και αξιοποίηση
  • prep2.py
    • Το πρόγραμμα που θα τρέχει για την προετοιμασία του 1ου συστήματος, στις συνθήκες του 2ου μέρους του διαγωνισμού. Χρήσιμη θα ήταν μια εφαρμογή που θα εμφανίζει σε έξοδο που θα δίνεται ως παράμετρος από τον χρήστη (π.χ. default display, romote display etc) αυτό που βλέπει η κάμερα, και ο χρήστης να μπορεί (επίσης απομακρυσμένα) να:
      • Δημιουργεί στιγμιότυπο της κάμερας
      • Επιλέγει περιοχή στο στιγμιότυπο με το ποντίκι (cropping)
      • Επαναλαμβάνει τα δύο παραπάνω βήματα όσες φορές επιθυμεί
      • Μετά από επιλογή του χρήστη, να εμφανίζονται σε νέο παράθυρο συγκεντρωτικά οι περιοχές που είχε επιλέξει στα προηγούμενα βήματα, με κατάλληλο εργαλείο επιλογής χρωματικών συνιστωσών σε HSV color space (track bars), για την χειροκίνητη διαμόρφωση lower και upper HSV επιπέδων
      • Να αποθηκεύει τις lower & upper συνιστώσες σε αρχείο που θα διαβάζει το πρόγραμμα run2.py για την 2η αποστολή (με κατάλληλο argument στη γραμμή εντολών)
  • /modules
    • camera.py
      • Παρέχει εργαλεία διαχείρισης και αξιοποίησης της κάμερας που χρησιμοποιείται από το Jetson
    • pillar.py
      • Παρέχει εργαλεία ανίχνευσης των pillars, καθώς και ρύθμισης των χρωματικών και άλλων παραμέτρων που επηρεάζουν την ανίχνευση και τις επιθυμητές πληροφορίες που θα λαμβάνονται
    • communication.py
      • Παρέχει εργαλεία που επιτρέπουν τόσο την αποστολή, όσο και τη λήψη δεδομένων μεταξύ του Jetson και του ESP32 μέσω σειριακής επικοινωνίας και με ενδεχόμενη χρήση json δεδομένων

2ο σύστημα

  • main.py
    • Το βασικό πρόγραμμα του ESP32 που θα καλεί τα προγράμματα run1 ή run2, που αντιστοιχούν στις αποστολές των φάσεων 1 και 2 αντίστοιχα του διαγωνισμού. Συγκεκριμένα θα είναι η διεπαφή μέσω της οποίας θα καλούνται τα επιμέρους προγράμματα της κάθε φάσης
  • run1.py
    • Ανάπτυξη του κώδικα που αφορά στον έλεγχο του αυτοκινήτου, για την 1η φάση του διαγωνισμού, προς το παρόν χωρίς αξιοποίηση της κάμερας.
  • run2.py
    • Ανάπτυξη του κώδικα που αφορά στον έλεγχο του αυτοκινήτου, για την 2η φάση του διαγωνισμού, με αξιοποίηση της κάμερας από το Jetson.
  • /modules
    • car.py
      • Περιλαμβάνει όλα τα εργαλεία οδήγησης του αυτοκινήτου και διαβάσματος των αισθητήρων
    • communication.py
      • Παρέχει εργαλεία που επιτρέπουν τόσο την αποστολή, όσο και τη λήψη δεδομένων μεταξύ του ESP32 και του Jetson μέσω σειριακής επικοινωνίας και με ενδεχόμενη χρήση json δεδομένων

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published