Tento krátky tutoriál je rýchlym návodom na použitie komponentu robot.ocx na riadenie Robotnačky - priamo cez BlueTooth port i na diaľku cez siet Internet z prostredia Imagine (alebo iných jazykov).
Ak váš počítač je pripravený pre Robotnačku, prvými krokmi je vytvorenie objektu robot a pripojenie sa na robota cez virtuálny sériový port:
new "oleobject [comname robot name r] r'connect "com4Teraz môžeme vysielať riadiace príkazy ako keby sme riadili korytnačku. Všimnite si ale, že tieto príkazy už neriadia žiadnu korytnačku na grafickej ploche, riadia len priamo robota. (AvŠak, ak namiesto toho nahráte robot.imt, ktorý obsahuje triedu RobotTurtle, riadenie korytnačky na obrazovke sa zviaže s riadením robota). Napríklad môžete zadať nasledujúce príkazy (kompletný zoznam je nižšie).
r'pu r'fd 1000 r'lt 720 ; zodpovedá 90 stupňom r'pd r'bk 1000
Pohyb robota nie je obmedzený len na jednoduché pohyby korytnačej grafiky. Dokáže kresliť aj kružnice a kružnicové oblúky takmer µubovoµného polomeru - nastavením rozličných konątantných rýchlostí na oboch kolieskach robota. Napríklad na príkaz:
r'fdspeed 10 40sa robot začne pohybova» vpred, pričom jeho µavé koliesko sa bude pohybova» ątvrtinovou rýchlos»ou v porovnaní s jeho pravým kolieskom.
l1 = 2π.(r - 90) l2 = 2π.(r + 90) l2 = 4.l1 ________________ 2π.(r + 90) = 8π.(r - 90) r + 90 = 4r - 360 r = 150 mm
r'bkspeed 50 50spôsobí, ľe sa robot začne pohybova» polovičnou rýchlos»ou vzad, alebo na príkaz:
r'ltspeed 10 40začne Robotnačka kresli» kruľnicu s polomerom 54mm.
180 = r1 + r2 r2 = 4 r1 180 = 5 r1 r1 = 36, r2 = 144 r + r1 = 90 r = 90 - 36 = 54 mm
r'rtspeed 0 50spôsobí, ľe sa robot začne otáča» polovičnou rýchlos»ou vzad okolo svojho µavého kolieska.
Rýchlostné príkazy sa vykonávajú až pokiaľ nepríde ďalší príkaz. Na zastavenie robota je teda potrebné nastaviť rýchlosť 0 na obe kolieska (fdspeed 0 0). Namiesto nich je ale možné použiť kombinované príkazy, kde je počet krokov určený vopred (r'fdx, r'bkx, r'ltx, r'rtx) a teda kreslia kružnicové oblúky určitej dĺžky.
Ako sa robot pohybuje po ploche, niekedy by bolo zaujímavé alebo užitčné poznať jeho polohu. Toto nie je možné s absolútnou presnosťou, pretože žiaden robot na svete sa nevyhne prešmykovaniu kolies na podklade a žiadna dielňa na svete by nevyrobila robota tak presného, ktorý by nestrácal zopár uhlových sekúnd pri pohybe vpred alebo otáčaní na mieste. Napriek tomu si komponent robot udržuje presnú informáciu o odhadovanej polohe robota. Získame ju príkazom pos. Na textovú plochu pozíciu vypíšeme takto:
print r'pos 0Tento príkaz vypíše pozíciu (súradnice x a y) a aktuálny smer robota.
Niekedy je vhodné súradnice vynulovať na [0,0],0, a dosiahneme to príkazom
r'pos 1ktorý tiež vráti aktuálne súradnice.
Robot je vybavený 6 senzormi, ktoré sú navrhnuté tak, aby pri aktivovaní zabránili, aby robot spadol zo stola. Môžeme ich využiť aj na rozlíąenie farby podkladu (len čierna a biela). Napríklad, robot môľe zasta» potom ako sa dostane nad nejaký geometrický útvar. Hodnoty senzorov (ktoré sú vždy 0 alebo 1 pre každý senzor a spolu sú tieto bity zbalené do jedného 6-bitového čísla) je moľné zisti» operáciou:
r'getsensorsalebo je moľné naprogramova» podmienku, pri ktorej splnení robot prestane vykonáva» príkaz a zastaví motory, napríklad po príkaze:
r'condition 0 63 0uľ robot nespadne zo stola, alebo po príkaze:
r'condition 16 0 16robot sledujúci čiernu čiaru zastane na mieste, kde z čiary vyjde. Jednotlivé hodnoty zodpovedajú senzorovým maskám XOR, OR a AND, viac o tom a aj o mnohých ďalších príkazoch komponentu robot si môžete prečítať v súbore ReadMe.txt
Zoznam príkazov komponentu robot | |
fd N | choď N krokov dopredu |
bk N | choď N krokov vzad |
lt α | otoč sa o α krokov (α / 8 stupňov) vľavo |
rt α | otoč sa o α krokov (α / 8 stupňov) vpravo |
fdspeed l r | nastav rýchlosti motorov na l, a r |
bkspeed l r | nastav rýchlosti motorov na -l, a -r |
ltspeed l r | nastav rýchlosti motorov na -l, a r |
rtspeed l r | nastav rýchlosti motorov na l, a -r |
fdx l r N | rovnako ako fdspeed, ale zastav keď rýchlejšie koliesko spraví N krokov |
bkx l r N | rovnako ako bkspeed, ale zastav keď rýchlejšie koliesko spraví N krokov |
ltx l r N | rovnako ako ltspeed, ale zastav keď rýchlejšie koliesko spraví N krokov |
rtx l r N | rovnako ako rtspeed, ale zastav keď rýchlejšie koliesko spraví N krokov |
pd | pero dole |
pu | pero hore |
getsensors | hodnota senzorov |
isalive | ping robota |
getvoltage | stav batérie v decivoltoch |
getactivity | 1 - rýchlostný príkaz, 2 - pozičný príkaz, 3 - v pokoji, 4 - chyba |
isdone | 1 - v pokoji, 0 - stále vykonáva pozičný príkaz |
alwayswait on|off | on znamená, že pozičný príkaz blokuje pokračovanie programu, kým ho robot nedokončí (default off). |
drawtext text size font | nakreslí text zadanej veľkosti a fontom (Borland BGI fonts) |
textsize text size font | zistí veľkosť textu v krokoch |
pos reset=0|1 | zistí pozíciu a resetne, ak je požadované |
moveto x y | presunie robota na zadanú pozíciu |
condition xor and or | nastaví podmienku senzora |
satisfied | zistí stav podmienky pre predchádzajúci príkaz |
connect port | pripoj sa na robota |
setcomparam ... | nastav komunikačné parametre |
getversion | verzia firmware |
getnum | kód nainštalovaných rozšírení robota |
tone frequency duration | zahraj tón |
drawcalib | nakresli kalibračný obrázok |
calibrate ... | nakalibruj robota podľa kalibračného obrázka |
gripper command | riadenie chápadla (ak je pripojené) |
server on|off | umiestni robota na sieť |
portnumber num | nastav sieťový port |
getport | vráti meno portu, kde je robot pripojený |
message user msg | pošle textovú správu zadanému užívateľovi - v sieťovom režime |
password newpswd | zmení heslo |
exclusive on|off | zapne alebo vypne výhradný jedno-užívateľský režim - v sieťovom režime) |
logoff passwd | odhlás iného užívateľa |
user name passwd | zadaj meno a heslo pre prihlásenie sa - v sieťovom režime |
connected | vráti 1 ak je robot pripojený, inak 0 |
netreport filename | nastaví meno súboru pre logfile |
db ... | nastaví databázu registračného systému |
userfile filename | nastav súbor s užívateľmi |
adduser name pswd | pridaj nového užívateľa |
deluser name | zruš užívateľa |
listusers | vráť zoznam užívateľov |
wait t | počkaj, kým pozičný príkaz skončí, alebo kým uplynie t ms |
messages on|off | povolenie systémových správ v messageboxe |
logfile filename|off | meno súboru pre replay |
replay filename | zopakuj príkazy uložené v súbore |