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 --- --- --- --- ---