KURZ: Senzor akcelerace
- Podrobnosti
- Mgr. Jan Baťko
- Aktualizováno: 01.04.2014
- Zobrazení: 8081
KAPITOLY
Senzor akcelerace neboli zrychlení umožňuje sledovat, s jakým zrychlením se pohybuje náš robot. Jeho pomocí se také sleduje chování robota a pomocí získaných hodnot se dají eliminovat nežádoucí pohyby, které by mohly ohrozit robotovu stabilitu. Zrychlení je měřeno ve třech osách. Jedná se o osu x, y a z. Osa x je osa souběžná s tělem senzoru. Osa y označuje směr z jedné boční strany senzoru na druhou. Tato osa je k dispozici spíše jako výstupní hodnota. Osa z je stejně jako osa y výstupní hodnota a vyjadřuje měření ve směru od spodní hrany senzoru k horní. Zrychlení se pomocí senzoru akcelerace dá měřit v rozsahu od -2G do +2G. Měření zrychlení není jedinou funkcí senzoru. Dokáže také měřit náklon robota.
PRÁCE Se senzorem akcelerace V PROGRAMOVACÍCH PROSTŘEDÍCH
NXT-G
Blok pro ovládání senzoru akcelerace
Rozcestník
UMÍSTĚNÍ BLOKU
Senzor akcelerace je v programovacím prostředí NXT-G řízen blokem Acceleration Sensor. Tento blok není součástí základní instalace. Pro jeho použití je nutné jej do prostředí importovat. Návod k importu rozšiřujících modulů naleznete v kapitole Instalace rozšiřujících modulů.
POPIS BLOKU
Programový blok senzoru akcelerace obsahuje celkem sedm konektorů pro propojení s dalším bloky.
Port - určuje, ke kterému ze vstupních portů (1-4) je senzor připojen.
x - výstup vyjadřující hodnotu naměřenou ve směru osy x.
y - výstup vyjadřující hodnotu naměřenou ve směru osy y.
z - výstup vyjadřující hodnotu naměřenou ve směru osy z.
Yes / No - hodnota logického datového typu vyjadřující výsledek porovnání zrychlení na ose x.
Trigger Point - v programovacím prostředí nastavená hodnota zrychlení určená k porovnání s hodnotou naměřenou senzorem.
Greater / Less - vstupně výstupní konektor určující znaménko k porovnání hodnot.
PARAMETRY BLOKU
Port: značí, ke kterému ze vstupních portů (1-4) je senzor připojen.
Compare: část bloku, ve které je možné pomocí tažítka nastavit hodnotu pro osu x určenou k porovnání s hodnotou naměřenou senzorem. Rozsah hodnot je zde možné volit od -400 do +400. Hodnotu je možné nastavit buďto pomocí tažítka nebo přímým zadáním hodnoty do menšího bloku. V rozbalovacím menu jsou k dispozici znaménka určená pro porovnání.
RobotC
Příkazy pro ovládání senzoru akcelerace
Rozcestník
Nastavení senzoru
Před započetím práce se senzorem akcelerace je nutné jej v programovacím prostředí RobotC nadeklarovat. Zápis deklarace se skládá z klíčového slova #pragma a příkazu config(), který obsahuje čtyři parametry. Prvním parametrem je rozlišeno, zda se jedná o deklaraci motoru či senzoru (v našem případě se jedná o senzor). Druhý parametr udává, ke kterému vstupnímu portu (S1 - S4) je senzor připojen (v příkladu port číslo 1). Třetí parametr je volitelný. Jedná se o název senzoru v deklaraci a je zadáván uživatelem. Poslední částí deklarace je typ senzoru (sensorI2CHiTechnicAccel = označení senzoru akcelerace).
#pragma config(Sensor, S1, Akceleracni, sensorI2CHiTechnicAccel) // Kod je automaticky generovan pruvodcem deklaraci RobotC.
Poznámka: Deklaraci lze provést ručním zapsáním v příkladu nebo v menu programovacího prostředí RobotC. Postup je uveden v kapitole Deklarace motorů a senzorů.
nastavení typu senzoru
Druhou možností deklarace senzoru je definování pomocí příkazu SensorType[]. Parametrem v závorce je volitelný název senzoru, který je předem definován pro třídu tSensors, která pro programovací prostředí RobotC definuje rozšiřující moduly. K nadefinovanému názvu senzoru poté přiřadíme konkrétní typ senzoru podle jeho označení pro RobotC (např. sensorI2CHiTechnicAccel = označení senzoru akcelerace).
Tento typ deklarace je doporučeno provádět zkušenějším uživatelům. Začátečníkům se doporučuje deklarovat moduly pomocí Deklarace motorů a senzorů v horní liště menu.
tSensors akceleracni; SensorType[akceleracni] = sensorI2CHiTechnicAccel;
Práce s hodnotou snímanou senzorem
Během vyhodnocování nebo porovnávání hodnot snímaných senzorem a fixních hodnot zadaných uživatelem, budeme využívat příkaz k práci s touto hodnotou. V programovacím prostředí RobotC se k této činnosti používá příkaz SensorValue[]. Parametrem tohoto příkazu je předem definovaný název senzoru. Tomuto příkazu může být poté přiřazena určitá hodnota k porovnání s hodnotou ze senzoru.
SensorValue[sensorAccel] > 60; // Nastaveni hodnoty senzoru, ktera ma byt porovnana s urcitou fixne zadanou hodnotou.
V programovacím prostředí RobotC je připravena vývojová knihovna, která nese název AdvancedSensors.c. Slouží k tomu, abychom mohli provádět s rozšiřujícími senzory pokročilejší operace. V jejím těle jsou předdefinovány některé výpočtové operace, které nám umožní získat jednoduše data z rozšiřujících senzorů. Zavolání tohoto souboru provedeme následovně:
#include "AdvancedSensors.c"
Pro senzor akcelerace je zde nadefinována funkce getAccel(), která umožňuje získat hodnotu zrychlení v osách x, y a z. Zavoláním funkce getAccel(), která má čtyři parametry - název senzoru a tři hodnoty zjišťujeme, jaké jsou aktuálně snímané hodnoty senzorem. Celý zápis můžete vidět níže.
int X; int Y; int Z; getAccel(akceleracni, X, Y, Z);