Talaan ng mga Nilalaman:

Arduino Otto Robot Sa State Machine: 4 Hakbang
Arduino Otto Robot Sa State Machine: 4 Hakbang

Video: Arduino Otto Robot Sa State Machine: 4 Hakbang

Video: Arduino Otto Robot Sa State Machine: 4 Hakbang
Video: Leap Motion SDK 2024, Nobyembre
Anonim
Image
Image

Pangkalahatang-ideya ng proyekto

Sa proyektong ito, nais kong ipakita sa iyo ang isang paraan ng pagprograma ng Otto Robot, na isang batay sa Arduino na DIY robot. Gamit ang YAKINDU Statechart Tools (libre para sa hindi pang-komersyo) madali naming magagamit ang mga machine ng estado upang gawing modelo ang pag-uugali ng Otto Robot at makabuo ng C / C ++ code. Gagamitin namin ang isa sa kanilang mga halimbawa upang mapalawak ang pag-uugali ayon sa gusto namin.

Para sa mga taong hindi alam kung ano ang isang makina ng estado at hindi nais na salakayin ang komplikadong artikulo sa Wikipedia, narito ang isang maliit na paliwanag:

Ang isang machine ng estado ay mga node at landas lamang sa pagitan ng mga node na iyon. Mayroon kang isang panimulang node at maaaring kumuha ng mga landas sa iba pang mga node depende sa kanilang mga bantay, na maaaring kinatawan ng mga kaganapan. Ang mga kaganapang ito ay itinaas mula sa mismong makina ng estado o mula sa labas (tulad ng isang pagpapaandar, atbp.).

Ang tool mismo ay gumagamit ng isang drag & drop interface at isang wikang tukoy sa domain. Susubukan ko ito para sa iyo, kaya hindi mo kailangang maghukay sa kanilang mga dokumentasyon upang maiayos ang iyong Otto. Ang pagse-set up ng IDE ay hindi masyadong mahirap, dahil ang lahat ng mga plug-in, atbp. Dapat awtomatikong mai-install.

Mga gamit

Otto Robot o Zowi Robot

Parehong pareho ang mga robot na ito na pareho at gumagamit ng parehong API. Ang Otto Robot ay isang DIY robot, kasama ang mga bahagi nito sa online, handa nang mai-print sa isang 3D printer kung sakaling magkaroon ka nito. Ang kahalili ay ang Zowi Robot, na maaaring mabili online at handa nang gamitin.

YAKINDU Statechart Tools

Ang tool na gagamitin namin upang i-modelo ang machine ng estado. Maaari kang magsimula sa isang 30 araw na pagsubok at makakuha ng isang libreng lisensya para sa hindi komersyal na paggamit pagkatapos.

Eclipse C ++ IDE para sa Arduino Plugin

Hindi namin ito kailangang i-download nang manu-mano, dahil ginagawa ito ng IDE para sa amin. Naisip ko pa rin na masarap itong ilista dito.

Hakbang 1: Pagse-set up ng Lahat

Pag-unawa sa Paano Mag-interface ng Otto
Pag-unawa sa Paano Mag-interface ng Otto

Matapos mai-install ang IDE, patakbuhin ito at i-set up ang isang workspace kahit saan sa iyong pc (ang setup ay magkapareho sa paggamit ng Eclipse sa unang pagkakataon). Kapag ang programa ay nagsimula nang ganap, mag-click sa malugod na pahina at mag-click sa 'File -> Bago -> Halimbawa…' at pagkatapos ay piliin ang 'Mga Halimbawa ng YAKINDU Statechart', maghintay ng kaunti at hanapin ang "Mga naka-embed na Sistema -> Zowi (C ++) "halimbawa.

MAHALAGA: Mag-click sa kanang tuktok na pindutan na tinatawag na 'Pag-install ng Mga Depende …'! Ini-install nito ang lahat para sa iyo, kaya't hindi ka dapat magalala tungkol sa Mga Aklatan, Plug-Ins at mga katulad nito. I-download ang halimbawa, sundin ang mga tagubilin sa halimbawang "Embedded Systems -> Zowi (C ++)" at pagkatapos ay magpatuloy sa susunod na hakbang.

Hakbang 2: Pag-unawa sa Paano Mag-interface ng Otto

Pumunta sa file na ".sct" at i-edit ang machine ng estado ayon sa gusto mo. Sa kanan ay isang menu na magagamit ang lahat ng mga item. Interesado lamang kami sa mga estado at transisyon.

Sa larawan, makikita mo, na nagsulat ako ng ilang mga bagay-bagay sa mga pagbabago; ang "pagkatapos ng X s" ay medyo nagpapaliwanag sa sarili at ang "palaging" ay nangangahulugang, na pupunta doon pagkatapos matapos ang code mula sa Estado. Ang ibig sabihin ng "entry /", na ang code ay dapat na ipatupad pagkatapos na ipasok ang estado.

Pinagsasama ng IDE ang machine ng estado sa C ++, na kung saan ay sumusunod sa Arduino. Upang magamit ang mga tampok ng Otto, kailangan naming gumawa ng kaunting trabaho sa aming sarili sa pag-access sa interface.

Ang mga sumusunod na keyword ay maaaring gamitin upang tukuyin ang mga bagay-bagay para magamit ng state machine:

mga pare-pareho, na humahawak ng mga halaga at hindi mababago

mga variable, na humahawak ng mga halaga at maaaring mabago

mga pagpapatakbo, na malilikha sa mga virtual na pamamaraan ng C ++ para sa pagpapatupad

interface:

const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const sound: integer = 2 const mouth_heart: integer = 13 const mouth_happyOpen: integer = 11 pagpapatakbo zowi_init (YL: integer, YR: integer, RL: integer, RR: integer) operasyon zowi_home () operasyon zowi_putMouth (mouthType: integer) operasyon zowi_sing (songName: integer) operasyon zowi_walk (mga hakbang: real, T: integer, dir: integer) operasyon zowi_shakeLeg ()

Pro Tip: kung hindi mo alam kung ano ang ipasok sa isang lugar o tila may isang error, pindutin ang "ctrl + space" upang makakuha ng ilang mga pahiwatig sa kung ano ang maaari mong ipasok.

Bilang karagdagan, dapat mong tingnan ang mga halimbawa, mayroon silang ilang mga code doon din! Maaari mo ring gamitin ang mga ito bilang isang istraktura upang mai-edit lamang ang modelo, na kung saan ay ang tanging bahagi na interesado kami sa ngayon.

Hakbang 3: Pagpuno ng mga Puwang

Pagpuno ng mga puwang
Pagpuno ng mga puwang

Matapos baguhin ang mga bagay sa modelo maaari kang mag-right click sa "zowiSCT.sgen -> Bumuo ng Mga Code ng Arteact". Bumubuo ito ng mga virtual na pag-andar sa C ++, na idineklara sa machine ng estado sa folder na "src-gen", na pagkatapos ay ipinatupad namin gamit ang normal na C ++.

Lumikha lamang ng dalawang mga file na ito sa folder na "src" upang makuha ang pag-andar na nais namin mula sa Otto.

Una ang 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 (); walang bisa zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); walang bisa zowi_home (); walang bisa zowi_putMouth (sc_integer bibigType); walang bisa zowi_sing (sc_integer songName); void zowi_walk (sc_real steps, sc_integer T, sc_integer dir); walang bisa zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

Pagkatapos ang Impl.cpp

# isama ang "Impl.h"

# isama ang "../Zowi/Zowi.h" Zowi zowi = bagong 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 (hakbang, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Hakbang 4: Paggawa ng Otto Dance

Kapag masaya ka sa iyong produkto, mag-click sa martilyo sa kaliwang tuktok at hintaying matapos ang proseso. Pagkatapos mag-click sa berdeng arrow sa kanan ng martilyo at makita ang iyong Otto sumasayaw!

Kung nais mo, maaari mong suriin ang ilang iba pang mga halimbawa: YAKINDU Statechart Tools

Inirerekumendang: