Visiduino® ROBOT a MATLAB®

Inšpirácia

Potrebné vybavenie

  1. Počítač s nainštalovaným programom MATLAB, Simulink a Arduino Support Package
  2. Visiduino ROBOT
  3. Joystick
  4. Prepájacie káble
  5. USB kábel (link)

V predchádzajúcom príspevku sme vám ukázali ako naprogramovať Visiduino ROBOT prostredníctvom programu Visiduino IDE. V dnešnom príspevku vám ukážeme ako naprogramovať Visiduino ROBOT prostredníctvom programu MATLAB a Simulink. Tento článok predpokladá, že si čitateľ prečítal predchádzajúci článok Robot a Joystick.

MATLAB a Simulink

Ako prvé si ukážeme ako získať program MATLAB. Pre dnešný príklad budeme potrebovať MATLAB, Simulink a príslušné Hardware Support Package. Často sa objavuje názor, že MATLAB je drahý a nedostupný. To nie je celkom pravda, nakoľko existujú licencie pre študentov, alebo pre hobby používateľov, ktoré sú cenovo dostupné. Ak si chcete MATLAB iba vyskúšať, tak máte možnosť požiadať a o bezplatnú TRIAL licenciu s platnosťou 30 dní. Postačuje vyplniť žiadosť (link) a do komentára zadajte VISIDUINO. Ak by ste si chceli zadovážiť vlastnú licenciu, tak verzie Student a Home môžete objednať priamo z webu MathWorks.

  • Student: Cena za konfiguráciu MATLAB + Simulink je 35USD bez DPH. Ak to s programovaním VISIDUINO myslíte vážne, doplnil by som ešte minimálne Stateflow (+6 USD bez DPH). (link)
  • Home: Cena v rovnakej konfigurácii pre hobby použitie vychádza na 110USD bez DPH a rozšírenie o Stateflow je ďalších +25USD bez DPH. (link)

Rozšírenie o HW Support Package je bezplatné v prípade, že ste držiteľom legálnej licencie MATLABu. V prípade, že by ste chceli využívať MATLAB v škole, alebo na podnikateľskú činnosť, prosím kontaktujte prosím predajcu. Poradia vám aj v prípade, že by ste chceli ísť s VISIDUINOm naprogramovaným v MATLABe na robotickú súťaž. https://www.humusoft.sk/matlab/

Nadviazanie spojenia

ROBOT a Joystick bude pripojený presne tak isto ako tomu bolo v článku Robot a Joystick. Teraz vytvoríme spojenie medzi programom Simulink a Visiduino Robotom. Pripojte Visiduino ROBOT k PC prostredníctvom USB káblu a vykonajte nasledovné príkazy v programe MATLAB, ktoré zistia dostupné sériové porty: P = instrhwinfo('serial'); a P.SerialPorts

Ak vám zobrazilo viacero sériových portov a nie ste si istý, ktorý z nich použiť, vykonajte príkazy bez pripojeného robota a následne s pripojeným robotom. Sériový port, ktorý sa zobrazí pri pripojenom robotovi je ten, ktorý použijete v nasledujúcom procese nastavenia modelu v programe Simulink. V programe Simulink otvorte konfiguráciu modelu kliknutím na Simulation -> Model Configuration Parameters. V časti Hardware Implementation zvoľte možnosť Arduino Mega 2560 pre parameter Hardware board. V nastaveniach Target Hardware Resources nastavte manuálne zadanie COM portu a zadajte číslo COM portu.

Spracovanie údajov z Joystick-u

K spracovaniu údajov z Joystick-u potrebujeme čítať napätie z analógových vstupov. Podobne ako pri programe vo Visiduino IDE, aj program Simulink má k tomu blok nazvaný Analog Input, nachádza sa v knižnici blokov v kategórii Simulink Support Package for Arduino Hardware / Common. Výstup z bloku Analog Input sa pohybuje v rozsahu 0 .. 1023. Túto hodnotu prevedieme na napätie prenásobením pomocou bloku Gain (kategória Simulink / Math Operations) nastaveného na hodnotu 5.0/1023.0.

Hodnotu napätia 0.0 .. 5.0 voltov potrebujeme previesť na hodnoty -1.0 .. 1.0. Čím vytvoríme riadiaci signál pre motory. K prevedeniu signálu použijeme matematický prístup. Ak signál 0.0 .. 5.0 vydelíme číslom 2.5, vznikne nám sígnál 0.0 .. 2.0. Od tohoto signálu odpočítame číslo 1.0, čím nám vznikne rozsah -1.0 .. 1.0.

Podobne ako tomu bolo v návode Robot a Joystick, musíme vytvoriť z nameraných údajov riadiace signály pre jednotlivé motory. Je potrebné použiť jeden blok Sum a Subtract (kategória Simulink / Math Operations). Týmto je signál pre oba motory pripravený.

K ovládaniu motorov sa vo Visiduino IDE mohol použiť vstavaný blok Visiduino Robot Wheels. V Simulinku si tento blok musíme vytvoriť. Najkôr musíme zistiť, ktorými výstupmi sa ovládajú jednotlivé motory. Ak sa pozriete na robota, uviditíme pri oboch kolesách popis. Pri pravom kolese je nasledovný popis: RIGHT MOTOR DIR: 45/47 SPEED: P44.

Tieto údaje znamenajú, že pre ovládanie pravého motora je potrebné použiť výstupy 45/47 pre smer (DIR - direction) a pre rýchlosť PWM výstup číslo 44. Pre smer je potrebné použiť blok Digital Output. K otáčaniu do jedného smeru sa použije kombinácia na výstupoch 0/1 a k otáčaniu do opačného smeru sa použije kombinácia 1/0. Použijeme k tomu bloky Compare To Constant a blok Compare To Zero (nachádzajú sa v knižnici v časti Simulink / Logic and Bit Operations). Riadiaci signál pre motory je -1.0 .. 1.0. To znamená, že ak je signál záporný, tak sa bude koleso otáčať do jedného smeru, a ak je signál kladný tak do druhého. Blok Compare To Constant nastavený na > 0 má na svojom výstupe hodnotu 1.0 ak je na jeho vstupe číslo väčie ako 0.0, inak má na svojom výstupe hodnotu 0. Blok Compare To Zero je nastavený na == 0, čo znamená, že ak má na svojom vstupe hodnotu 0, je na jeho výstupe hodnota 1. Teda pracuje ako blok NOT v programe Visiduino. Spojením týchto blokov tak ako je tomu na obrázku nižšie získame funkciu, ktorá pre záporné hodnoty nastavuje kombináciu 0/1 a pre kladné 1/0.

Posledný údaj, ktorý je potrebné nastaviť je PWM. Blok PWM (kategória Simulink Support Package for Arduino Hardware / Common) pracuje v Simulinku podobne ako vo Visiduino IDE. S tým rozdielom, že prijíma hodnoty 0 .. 255. Preto najskôr na požadovanú rýchlost -1.0 .. 1.0 aplikujeme absolútnu hodnotu (kategória Simulink / Math Operations), čím dostaneme hodnoty 0.0 .. 1.0. Tieto hodnoty vynásobíme číslom 255 a privedieme do bloku PWM. Týmto sme vytvorili funkciu, ktorá ovláda rýchlosť a smer motora pomocou signálu -1.0 .. 1.0. Celá schéma je na nasledujúcom obrázku.

Ak túto schému nahráte do Visiduino Robota, hneď sa začne vykonávať vytvorený model a Visiduino ROBOT je ovládaný pomocou joysticku.

Hotovo :)

Práve ste vytvorili ovládanie Visiduino robota pomocou joystick-u a použitím programu MATLAB/Simulink. V nasledujúcich návodoch sa naučíte ďalšie zaujímavé spôsoby, ako upraviť robota.