Robotnačka-05

From RoboWiki
Revision as of 18:03, 3 April 2007 by Balogh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Úloha 5: Z bodu A do bodu B

Napíšte program, ktorý nacíta z externého súboru požadovanú trajektóriu vo forme postupnosti súradníc bodov, cez ktoré má robot prejst. Potom sa pripojte na Robotnacku a pomocou už známych príkazov prejdite cez jednotlivé body. Formát súboru dát je nasledovný:

x1 y1
x2 y2
...

pricom súradnice bodov sú udávané v milimetroch.

Splnenie úlohy overte tak, že do súboru zadáte ako trajektóriu štvorec s co najväcším rozmerom (ale aby sa ešte vošiel na papier) a zároven tak dokoncíte úlohu c. 1.

Tento program je vlastne len rozšírením základnej inverznej úlohy, ktorá spocíva v tom, že treba Robotnacku previest z pociatocnej polohy [x1, y1] do bodu so súradnicami [x2, y2].

Hoci to vyzerá triviálne, je tu menšia komplikácia. Zatial co prvé tri úlohy mali jednoznacné riešenie, táto úloha predstavuje tzv. inverznú kinematickú úlohu. Riešení inverznej úlohy je nekonecne vela, ako vidno napr. na tomto obrázku

Trajektorie.png Obr. 34: Možnosti putovania z A do B.

Ani podmienka, že pritom treba prejst cez daný bod (napr. C na obrázku) nám nepomôže (žltá a modrá cesta). Samozrejme, že si môžeme stanovit dalšie obmedzujúce podmienky, ktorými pocet možných riešení podstatne obmedzíme. Typicky to býva optimalizácia spotreby energie, prípadne najkratšia možná cesta (nie vždy je to to isté, viete uviest príklad?). Pre Robotnacku môže byt takým obmedzením napríklad požiadavka, aby sa kolieskom nechodilo po už nakreslených ciarach.

Jeden z možných algoritmov ako vo všeobecnosti riešit túto úlohu jednoznacne spocíva v tom, že použijeme len dve operácie – OTOC a POSUN. Takže robota najprv nasmerujeme na daný ciel a potom sa tam len presunie. Prípadne na konci prevedieme ešte jedno otocenie do požadovaného smeru.