Kompasový senzor
- Podrobnosti
- Mgr. Jan Hodinář, Mgr. Tomáš Jakeš
- Aktualizováno: 26.02.2012
- Zobrazení: 5642
LEGO NXT kompasový senzor obsahuje digitální kompas, který měří magnetické pole Země a vrací aktuální hodnotu azimutu. Výstupem senzoru je hodnota udaná ve stupních z rozsahu 0-359. Hodnota je zaokrouhlována na nejbližší celé číslo a je obnovována 100x za sekundu.
Senzor se připojuje ke klasickému NXT senzorovému portu běžným LEGO NXT kabelem a je opět, jako všechny senzory nové generace, ve stejném krytu lišícím se navenek jen popiskem. Ke komunikaci s kostkou využívá digitální komunikační protokol I2C.
Kompasový senzor pracuje ve dvou režimech. První je standardní „čtecí“ režim, kde vrací hodnoty azimutu. Druhý je pak kalibrační, ve kterém je možné kompenzovat rušení vnějšího magnetické pole, které mohou vytvářet například běžící motory anebo elektrobaterie.
Otestování senzoru: K otestování Vašeho nového senzoru použijte „Port 2“ na kostce a zvolte „View > Ultrasonic cm > Port 2“. Když pak senzorem otáčíte můžete si všimnout změn hodnot v rozsahu (0; 172>. Pokud se dostanete mimo rozsah, testovací režim Vám na displeji zobrazí pouze otazníky (???????).
Praktické využití
Kompasový senzor asi nejvíce oceníte, budete-li potřebovat se umět směrově orientovat v určitých prostorech (např. robotický vysavač). Nepostradatelným pomocníkem bude například i při robotickém fotbalu, kdy by bez tohoto senzoru roboti jezdili poněkud zmateně a hrozilo by, že by si mohli dál vlastní gól. Senzor může sloužit i k prostému zobrazování orientace na displeji. Vytvoříte si tak svůj vlastní kompas.
Přestože může být kompasový senzor dobrým pomocníkem je potřeba si ho neplést s GPS systémem. Senzor sice umí zjistit natočení robota, nezjistí však jeho přesnou polohu.
Programování
NXT Kompasový senzor se v prostředí LEGO Mindstorms NXT-G programuje pomocí bloku Compass block. Pokud tento blok není dostupný je možné ho buďto doinstalovat nebo jako částečnou náhradu použít standardní Ultrasonic block, který je primárně určený pro jeden ze základních senzorů. Tento blok má ovšem určitá omezení.
Ultrasonic block
Pokud používáte Ultrasonic blok, nakonfigurujte ho tak, aby jako jednotky používal centimetry, tak jak je to vidět na obrázku.
Ultrasonic blok může vracet pouze hodnoty v rozsahu 0 až 250. Z tohoto důvodu při použití kompas senzoru tento blok vrací úhel dělený dvěma. Pokud tedy chcete správný úhel v rozsahu 0-360 musíte si výstup tohoto senzoru nejprve vynásobit. Pro jednoduché zjištění světové strany při využití tohoto bloku použijte hodnoty jsou 0 pro sever, 45 pro východ, 90 pro jih a 135 pro západ.
Compass Senzor block
Tento blok je přímo navržen pro práci s novým senzorem a podporuje proto i všechny jeho funkce. Doporučujeme ho proto využívat.
Panel nastavení bloku
Port: První možností je jako u všech panelů senzorových bloků výběr portu.
Action (akce): V menu akce máte celkem tyto tři možnosti:
- Absolute Reading : tato volba Vám povolí číst aktuální natočení senzoru podle magnetického pólu Země. (Výstup 6)
- Relative Reading: umožní nastavit výchozí hodnotu úhlu a číst relativní přírůstky hodnoty úhlu (detaily čtěte dále). (Vstup 3, Výstup 7)
- Calibrate: nastaví senzor do módu kalibrace, což umožní minimalizovat efekt vnějších magnetických polí (více uvedeno na konci článku).
Compare (porovnání): V této části bloku je možné jednoduše porovnat, zda je absolutní natočení senzoru v rozsahu zadaném v podmínkou.
Vstupy a výstupy programového bloku
- Číslo portu do kterého je senzor připojen.
- Číslo akce která se na senzoru provádí.
- Hodnota úhlu natočení senzoru, které chceme dosáhnout.
- Spodní hranice podmínky pro porovnání úhlu.
- Horní hranice podmínky pro porovnání úhlu.
- Absolutní hodnota natočení senzoru. Tzn. kam senzor aktuálně směřuje.
- Relativní hodnota natočení senzoru. (Rozdíl chtěné a absolutní hodnoty)
- Výstup logické podmínky. Tzn. hodnota je či není v zadaném rozsahu. (True/False)
TIPY A TRIKY
Udržení směru
Pro jednodušší udržení vytouženého směru lze využít režimu relativního čtení směru. Pro jeho aktivaci nejprve zvolíme akci Relative Reading a dále nastavíme hlídanou hodnotu směru do položky Target. Pokud tedy chceme směřovat na jih, zadáme hodnotu 180. Senzor pak vezme skutečný směr, odečte od něj hodnotu Target a na výstupu 7 vystaví rozdíl těchto dvou hodnot. Kdyby tedy byla skutečná hodnota směru 175, na výstupu bude hodnota 5 (180-175=5), což nám říká že se musíme otočit doprava (po směru hodinových ručiček) o 5 stupňů. V případě, že by byla skutečná hodnota 185, bude relativní hodnota záporná (-5), což nám říká, že se máme otočit doprava. Díky tomu můžeme pomocí podmínky vozidlo směrovat vždy k vytouženému cíli.
Kalibrace senzoru
Stejně jako normální kompas i kompas LEGO může být ovlivněn vnějším magnetickým polem a proto je třeba tyto vlivy eliminovat nebo alespoň kompenzovat. Ovlivnit kompas a tím i zobrazovanou hodnotu může mnoho věcí, permanentní magnety, točivé stroje (např. naše motory), vyšší napětí v kabelech nebo baterie. Pokud se senzor nachází v takovémto prostředí, bude se hodnota jeho výstupů lišit o určitou odchylku v závislosti na síle a směru pole. Pro tyto případy má senzor zabudovanou korekční funkci, která zjistí a spočítá odchylky a uloží si jejich korekci.
Pro úspěšnou kalibraci stačí pouze nastavit senzor do kalibračního módu a pak nařídit Vašemu robotovi, aby provedl přímé otočení kolem vlastní osy 1,5x až 2x. To znamená, že se robot musí se otočit o více než 540°, ale méně než o 720°. Aby senzor stihl vše zaznamenat a vyhodnotit, měla by robotovi tato otáčka trvat alespoň 20 sekund. Po dokončení této akce již můžete přepnout z kalibračního režimu do jednoho ze dvou normálních (absolutní nebo relativní čtení). Nastavená kalibrace zůstane zachována i po vypnutí kostky.
Při dobré konstrukci většinou není kalibrace nutná, ale i tak se někdy může hodit. Pokud se ji ale chcete vyhnout přiděláváte senzory alespoň 10 až 15 centimetrů od LEGO motorů.
Odkaz na web výrobce: http://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NMC1034