Difference between revisions of "Robotnačka a senzory"
| Line 1: | Line 1: | ||
| − | Obrázkový návod na inštaláciu senzorov:  | + | Robotnačka má na spodnej strane 6 infrasenzorov typu CNY70, ktoré sú síce iba binárne, ale dokážu rozoznať  | 
| + | tmavý a svetlý podklad, po ktorom sa robot pohybuje. Ak je daný bit 0, senzor je nad svetlou plochou, logická  | ||
| + | 1 znamená tmavú farbu. Aj v prípade, že daný senzor sa nenachádza nad stolom, ale vytrca von, jeho hodnota  | ||
| + | je 1.  | ||
| + | |||
| + | |||
| + | Zavolaním príslušnej funkcie ( short stav = robot_getsensors(r); ) získame stav senzorov v jednom bajte, kde  | ||
| + | je spodných 6 bitov významných. Priradenie senzorov k jednotlivým bitom je na obrázku 36. V manuuálnom  | ||
| + | ovládacom režime je možné stav senzorov získat po stlacení tlacidla Sensors, prípadne je možné zadat špeciálnu  | ||
| + | podmienku, pri ktorej sa zastaví pohyb robota.  | ||
| + | |||
| + | [[Image:RobotnackaSensors.png]]  | ||
| + | Obr. 35: Senzory - pohlad zhora. Najvyššie dva bity sú vynulované.  | ||
| + | |||
| + | |||
| + | == Podmienené vykonávanie príkazov ==  | ||
| + | |||
| + | Senzormi môžeme podmienit, resp. zakázat vykonanie pohybových príkazov. Robot nepretržite sleduje splnenie  | ||
| + | senzorovej podmienky a v prípade, že je splnená, zastaví vykonávanie aktuálneho príkazu.  | ||
| + | Podmienka sa skladá z troch 6-bitových konštánt, ktoré reprezentujú bitové masky, aplikované na aktuálny stav  | ||
| + | senzorov. Tieto masky sa používajú s operáciami XOR, OR a AND nasledovne:  | ||
| + | |||
| + | ( (s XOR x) AND o > 0 ) OR ( (s XOR x) AND a == a ) AND (s + a > 0)  | ||
| + | |||
| + | Císlo x urcuje, ktoré bity najprv invertujeme. Invertuje sa stav tých senzorov, pre ktoré je príslušný bit v x =  | ||
| + | 1.  | ||
| + | |||
| + | Císlo o je maska OR, teda ak hociktorý zo senzorov, ktoré sú v o = 1, podmienka je splnená. Podobne, ak  | ||
| + | všetky senzory, ktorých zodpovedajúci bit v a je 1 sú aktívne, podmienka je splnená. Ak sú konštanty o aj a  | ||
| + | obe nulové, podmienka nebude použitá.  | ||
| + | |||
| + | '''Príklady:'''  | ||
| + | |||
| + | Podmienka je splnená, ak sa hociktorý zo senzorov dostane mimo bielej plochy: x = 0, o = 63, a = 0.  | ||
| + | Ak sa robot pohybuje po ciernej ciare (log. 1 na piatom senzore S4) a chceme, aby zastal ked ciara skoncí,  | ||
| + | musíme nastavit podmienku takto: x = 16, o = 0, a = 16  | ||
| + | |||
| + | '''Poznámka:''' V niektorých verziách firmware Robotnacky je z dôvodu šetrenia energiou meranie stavu senzorov  | ||
| + | umožnené len pri pohybe. Ak robot stojí, napájanie senzorov je vypnuté.  | ||
| + | |||
| + | |||
| + | '''Obrázkový návod na inštaláciu senzorov:'''  | ||
[[Image:InstalaciaSenzorov.gif]]  | [[Image:InstalaciaSenzorov.gif]]  | ||
Revision as of 16:59, 3 April 2007
Robotnačka má na spodnej strane 6 infrasenzorov typu CNY70, ktoré sú síce iba binárne, ale dokážu rozoznať tmavý a svetlý podklad, po ktorom sa robot pohybuje. Ak je daný bit 0, senzor je nad svetlou plochou, logická 1 znamená tmavú farbu. Aj v prípade, že daný senzor sa nenachádza nad stolom, ale vytrca von, jeho hodnota je 1.
Zavolaním príslušnej funkcie ( short stav = robot_getsensors(r); ) získame stav senzorov v jednom bajte, kde
je spodných 6 bitov významných. Priradenie senzorov k jednotlivým bitom je na obrázku 36. V manuuálnom
ovládacom režime je možné stav senzorov získat po stlacení tlacidla Sensors, prípadne je možné zadat špeciálnu
podmienku, pri ktorej sa zastaví pohyb robota.
Obr. 35: Senzory - pohlad zhora. Najvyššie dva bity sú vynulované.
Podmienené vykonávanie príkazov
Senzormi môžeme podmienit, resp. zakázat vykonanie pohybových príkazov. Robot nepretržite sleduje splnenie senzorovej podmienky a v prípade, že je splnená, zastaví vykonávanie aktuálneho príkazu. Podmienka sa skladá z troch 6-bitových konštánt, ktoré reprezentujú bitové masky, aplikované na aktuálny stav senzorov. Tieto masky sa používajú s operáciami XOR, OR a AND nasledovne:
( (s XOR x) AND o > 0 ) OR ( (s XOR x) AND a == a ) AND (s + a > 0)
Císlo x urcuje, ktoré bity najprv invertujeme. Invertuje sa stav tých senzorov, pre ktoré je príslušný bit v x = 1.
Císlo o je maska OR, teda ak hociktorý zo senzorov, ktoré sú v o = 1, podmienka je splnená. Podobne, ak všetky senzory, ktorých zodpovedajúci bit v a je 1 sú aktívne, podmienka je splnená. Ak sú konštanty o aj a obe nulové, podmienka nebude použitá.
Príklady:
Podmienka je splnená, ak sa hociktorý zo senzorov dostane mimo bielej plochy: x = 0, o = 63, a = 0. Ak sa robot pohybuje po ciernej ciare (log. 1 na piatom senzore S4) a chceme, aby zastal ked ciara skoncí, musíme nastavit podmienku takto: x = 16, o = 0, a = 16
Poznámka: V niektorých verziách firmware Robotnacky je z dôvodu šetrenia energiou meranie stavu senzorov umožnené len pri pohybe. Ak robot stojí, napájanie senzorov je vypnuté.
Obrázkový návod na inštaláciu senzorov:
--- --- --- --- --- RoboWiki: (c) 2006 Robotika.sk --- --- --- --- ---
