Πίνακας περιεχομένων:

Ρομπότ Arduino Otto με κρατική μηχανή: 4 βήματα
Ρομπότ Arduino Otto με κρατική μηχανή: 4 βήματα

Βίντεο: Ρομπότ Arduino Otto με κρατική μηχανή: 4 βήματα

Βίντεο: Ρομπότ Arduino Otto με κρατική μηχανή: 4 βήματα
Βίντεο: Otto robot dancing smooth criminal 2024, Νοέμβριος
Anonim
Image
Image

Επισκόπηση έργου

Σε αυτό το έργο, θέλω να σας δείξω έναν τρόπο προγραμματισμού του Otto Robot, το οποίο είναι ένα ρομπότ DIY με βάση το Arduino. Χρησιμοποιώντας τα YAKINDU Statechart Tools (δωρεάν για μη εμπορικά) μπορούμε εύκολα να χρησιμοποιήσουμε μηχανήματα κατάστασης για να μοντελοποιήσουμε γραφικά τη συμπεριφορά του Otto Robot και να δημιουργήσουμε κώδικα C/C ++. Θα χρησιμοποιήσουμε ένα από τα παραδείγματά τους για να επεκτείνουμε τη συμπεριφορά σύμφωνα με τις προτιμήσεις μας.

Για τους ανθρώπους που δεν γνωρίζουν τι είναι η κρατική μηχανή και δεν θέλουν να περιπλανηθούν στο περίπλοκο άρθρο της Wikipedia, εδώ είναι μια μικρή εξήγηση:

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

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

Προμήθειες

Ρομπότ Otto ή ρομπότ Zowi

Και τα δύο αυτά ρομπότ κάνουν ουσιαστικά το ίδιο και χρησιμοποιούν το ίδιο API. Το Otto Robot είναι ένα ρομπότ DIY, με τα μέρη του online, έτοιμα για εκτύπωση με τρισδιάστατο εκτυπωτή, αν τυχαίνει να το έχετε. Η εναλλακτική λύση είναι το Zowi Robot, το οποίο μπορείτε να αγοράσετε online και έτοιμο για χρήση.

Εργαλεία YAKINDU Statechart

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

Eclipse C ++ IDE για το πρόσθετο Arduino

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

Βήμα 1: Ρύθμιση των πάντων

Κατανόηση του τρόπου διασύνδεσης του Otto
Κατανόηση του τρόπου διασύνδεσης του Otto

Αφού εγκαταστήσετε το IDE, εκτελέστε το και ρυθμίστε έναν χώρο εργασίας οπουδήποτε στον υπολογιστή σας (η ρύθμιση είναι πανομοιότυπη με τη χρήση του Eclipse για πρώτη φορά). Όταν το πρόγραμμα έχει ξεκινήσει πλήρως, κάντε κλικ μακριά από τη σελίδα καλωσορίσματος και κάντε κλικ στο «Αρχείο -> Νέο -> Παράδειγμα…» και, στη συνέχεια, επιλέξτε «Παραδείγματα κρατικών διαγραμμάτων YAKINDU», περιμένετε λίγο και αναζητήστε τα «Ενσωματωμένα συστήματα -> Zowi (C ++) "παράδειγμα.

ΣΗΜΑΝΤΙΚΟ: Κάντε κλικ στο επάνω δεξί κουμπί που ονομάζεται "Εγκατάσταση εξαρτήσεων …"! Αυτό εγκαθιστά τα πάντα για εσάς, ώστε να μην χρειάζεται να ανησυχείτε για τις Βιβλιοθήκες, τις Προσθήκες και τα παρόμοια. Κατεβάστε το παράδειγμα, ακολουθήστε τις οδηγίες στο παράδειγμα "Ενσωματωμένα συστήματα -> Zowi (C ++)" και, στη συνέχεια, συνεχίστε με το επόμενο βήμα.

Βήμα 2: Κατανόηση του τρόπου διασύνδεσης του Otto

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

Στην εικόνα, μπορείτε να δείτε ότι έγραψα κάποια πράγματα στις μεταβάσεις. το "μετά το Χ s" είναι αρκετά αυτονόητο και το "πάντα" σημαίνει απλώς, ότι πηγαίνει εκεί αμέσως μετά την ολοκλήρωση του κώδικα από την Πολιτεία. Η "καταχώριση /" σημαίνει ότι ο κώδικας πρέπει να εκτελεστεί αμέσως μετά την είσοδο στην κατάσταση.

Το IDE μεταγλωττίζει το μηχάνημα κατάστασης σε C ++, το οποίο είναι συμβατό με Arduino. Για να χρησιμοποιήσουμε τις δυνατότητες του Otto, πρέπει να κάνουμε λίγη δουλειά μόνοι μας, αποκτώντας πρόσβαση στη διεπαφή.

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

σταθερές, οι οποίες διατηρούν τιμές και δεν μπορούν να αλλάξουν

μεταβλητές, οι οποίες διατηρούν τιμές και μπορούν να αλλάξουν

λειτουργίες, οι οποίες θα δημιουργηθούν σε εικονικές μεθόδους C ++ για υλοποίηση

διεπαφή:

const PIN_YL: ακέραιος = 2 const PIN_YR: ακέραιος = 3 const PIN_RL: ακέραιος = 4 const PIN_RR: ακέραιος = 5 const ήχος: ακέραιος = 2 const mouth_heart: ακέραιος = 13 const mouth_happyOpen: ακέραιος = 11 λειτουργία zowi_init (YL: ακέραιος, YR: ακέραιος, RL: ακέραιος, RR: ακέραιος) λειτουργία zowi_home () λειτουργία zowi_putMouth (στόμα Τύπος: ακέραιος) λειτουργία zowi_sing (τραγούδι Όνομα: ακέραιος) λειτουργία zowi_walk (βήματα: πραγματικό, T: ακέραιος, σκηνοθεσία: ακέραιος) λειτουργία zowi_shakeLeg ()

Επαγγελματική συμβουλή: εάν δεν ξέρετε τι να εισαγάγετε κάπου ή φαίνεται να υπάρχει κάποιο σφάλμα, πατήστε "ctrl+space" για να λάβετε μερικές συμβουλές για το τι μπορείτε να εισαγάγετε.

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

Βήμα 3: Συμπλήρωση των κενών

Συμπλήρωση των κενών
Συμπλήρωση των κενών

Αφού αλλάξετε πράγματα στο μοντέλο, μπορείτε να κάνετε δεξί κλικ στο "zowiSCT.sgen -> Δημιουργία τεχνουργημάτων κώδικα". Αυτό δημιουργεί τις εικονικές συναρτήσεις σε C ++, οι οποίες δηλώνονται στο μηχάνημα κατάστασης στο φάκελο "src-gen", τον οποίο στη συνέχεια εφαρμόζουμε χρησιμοποιώντας κανονικό C ++.

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

Πρώτα το Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); εικονικό ~ Impl (); void zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR)? void zowi_home (); void zowi_putMouth (sc_integer mouthType)? void zowi_sing (sc_integer songName); άκυρο zowi_walk (sc_real βήματα, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Στη συνέχεια, το Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = νέο Zowi (); Impl:: Impl () {} Impl:: Impl () {} void Impl:: zowi_home () {zowi.home (); } void Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } void Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } void Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } void Impl:: zowi_walk (sc_real βήματα, sc_integer T, sc_integer dir) {zowi.walk (βήματα, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Βήμα 4: Κάνοντας το Otto Dance

Όταν είστε ικανοποιημένοι με το προϊόν σας, κάντε κλικ στο σφυρί επάνω αριστερά και περιμένετε να ολοκληρωθεί η διαδικασία. Στη συνέχεια, κάντε κλικ στο πράσινο βέλος στα δεξιά του σφυριού και δείτε το Otto σας να χορεύει!

Εάν θέλετε, μπορείτε να δείτε μερικά άλλα παραδείγματα: Εργαλεία κρατικών χαρτών YAKINDU

Συνιστάται: