Taula de continguts:

Robot Arduino Otto amb màquina estatal: 4 passos
Robot Arduino Otto amb màquina estatal: 4 passos

Vídeo: Robot Arduino Otto amb màquina estatal: 4 passos

Vídeo: Robot Arduino Otto amb màquina estatal: 4 passos
Vídeo: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, De novembre
Anonim
Image
Image

Descripció general del projecte

En aquest projecte, vull mostrar-vos una manera de programar el robot Otto, que és un robot de bricolatge basat en Arduino. Utilitzant YAKINDU Statechart Tools (gratuïtes per a no comercials), podem utilitzar fàcilment màquines d’estats per modelar gràficament el comportament del robot Otto i generar codi C / C ++. Utilitzarem un dels seus exemples per estendre el comportament al nostre gust.

Per a les persones que no saben què és una màquina estatal i no volen remenar el complicat article de la Viquipèdia, aquí teniu una petita explicació:

Una màquina d’estats és només nodes i camins entre aquests nodes. Teniu un node inicial i podeu agafar els camins cap a altres nodes en funció dels seus guàrdies, que es poden representar mitjançant esdeveniments. Aquests esdeveniments es generen des de la mateixa màquina d'estats o des de l'exterior (com una funció, etc.).

La pròpia eina utilitza una interfície d'arrossegar i deixar anar i un llenguatge específic de domini. Ho revisaré per vosaltres, de manera que no haureu d'explorar la seva documentació per posar en funcionament el vostre Otto. La configuració de l’IDE no és massa dura, perquè tots els connectors, etc., s’han d’instal·lar automàticament.

Subministraments

Otto Robot o Zowi Robot

Aquests robots fan essencialment el mateix i utilitzen la mateixa API. L’Otto Robot és un robot de bricolatge, amb les seves peces en línia, llest per imprimir-se amb una impressora 3D si en teniu. L’alternativa és el robot Zowi, que es pot comprar en línia i llest per al seu ús.

Eines de gràfics d'estat de YAKINDU

L'eina que farem servir per modelar la màquina d'estats. Podeu començar amb una prova de 30 dies i obtenir una llicència gratuïta per a ús no comercial després.

IDE Eclipse C ++ per al complement Arduino

No l’hem de descarregar manualment, perquè l’IDE ho fa per nosaltres. Encara vaig pensar que seria bo llistar-lo aquí.

Pas 1: configurar-ho tot

Comprensió de la interfície de l’Otto
Comprensió de la interfície de l’Otto

Després d’instal·lar l’IDE, executeu-lo i configureu un espai de treball a qualsevol lloc del vostre ordinador (la configuració és idèntica a la de fer servir Eclipse per primera vegada). Quan el programa s'hagi iniciat completament, feu clic a la pàgina de benvinguda i feu clic a "Fitxer -> Nou -> Exemple …" i, a continuació, seleccioneu "Exemples de gràfics d'estat YAKINDU", espereu una mica i cerqueu "Sistemes incrustats -> Zowi (C ++) "exemple.

IMPORTANT: feu clic al botó superior dret anomenat "Instal·la dependències …". Això us ho instal·la tot, de manera que no us haureu de preocupar per les biblioteques, els connectors i similars. Descarregueu l'exemple, seguiu les instruccions de l'exemple "Sistemes incrustats -> Zowi (C ++)" i, a continuació, continueu amb el següent pas.

Pas 2: entendre com interactuar l'Otto

Aneu al fitxer ".sct" i editeu la màquina d'estats al vostre gust. A la dreta hi ha un menú amb tots els elements disponibles. Només ens interessen els estats i les transicions.

A la imatge, podeu veure, que vaig escriure algunes coses a les transicions; el "després de X s" s'explica per si mateix i el "sempre" només significa que hi va just després d'acabar el codi de l'Estat. La "entrada /" significa que el codi s'ha d'executar just després d'entrar a l'estat.

L'IDE compila la màquina d'estat a C ++, que compleix Arduino. Per utilitzar les funcions de l’Otto, hem de fer una mica nosaltres mateixos accedint a la interfície.

Les paraules clau següents es poden utilitzar per definir coses per utilitzar a la màquina d'estats:

constants, que contenen valors i no es poden canviar

variables, que contenen valors i es poden canviar

operacions, que es generaran a mètodes virtuals C ++ per a la seva implementació

interfície:

const PIN_YL: enter = 2 const PIN_YR: enter = 3 const PIN_RL: enter = 4 const PIN_RR: enter = 5 const sound: integer = 2 const mouth_heart: integer = 13 const mouth_happyOpen: integer = 11 operation zowi_init (YL: integer, YR: enter, RL: integer, RR: integer) operació zowi_home () operació zowi_putMouth (mouthType: integer) operació zowi_sing (nom de la cançó: enter) operació zowi_walk (passos: real, T: enter, dir: integer) operació zowi_shakeLeg ()

Consell professional: si no sabeu què introduir en algun lloc o sembla que hi ha un error, premeu "ctrl + espai" per obtenir algunes pistes sobre què podeu introduir.

A més, hauríeu de mirar els exemples, també hi tenen algun codi. També podeu utilitzar-los com a estructura per editar el model, que és l’única part que ara ens interessa.

Pas 3: omplir els buits

Omplint els buits
Omplint els buits

Després de canviar les coses al model, podeu fer clic amb el botó dret a "zowiSCT.sgen -> Generar artefactes de codi". Això genera les funcions virtuals a C ++, que es declaren a la màquina d'estats a la carpeta "src-gen", que després implementem utilitzant C ++ normal.

Simplement creeu aquests dos fitxers a la carpeta "src" per obtenir la funcionalitat que volem d'Otto.

En primer lloc, Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl (); virtual ~ Impl (); void zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); buida zowi_home (); void zowi_putMouth (sc_integer mouthType); void zowi_sing (nom de la cançó sc_integer); void zowi_walk (sc_real steps, sc_integer T, sc_integer dir); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

A continuació, Impl.cpp

#include "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = new 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 steps, sc_integer T, sc_integer dir) {zowi.walk (steps, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Pas 4: Fer ballar l’Otto

Quan estigueu satisfet amb el vostre producte, feu clic al martell situat a la part superior esquerra i espereu que finalitzi el procés. A continuació, feu clic a la fletxa verda a la dreta del martell i veureu ballar el vostre Otto.

Si voleu, podeu consultar alguns altres exemples: YAKINDU Statechart Tools

Recomanat: