Inerciální#
Zavedení#
Inerciální senzor měří, jak se robot pohybuje a otáčí.
Inerciální senzor k tomu používá dvě části. Gyroskop měří otáčení, jako je směr, rotace, rychlost gyroskopu a orientace. Akcelerometr měří změny pohybu, jako je zrychlení nebo zpomalení podél os x, y a z.
Níže je uveden seznam dostupných metod:
Orientace – Čtení a ovládání směru, rotace a kalibrace senzoru.
heading— Vrátí směr, kterým je senzor natočen, od 0 do 359,99 stupňů.rotation— Vrátí, o kolik se senzor otočil.gyro_rate— Vrátí, jak rychle se senzor otáčí na vybrané ose.orientation— Vrátí úhel klopení, stoupání nebo stáčení inerciálního senzoru.calibrate— Kalibruje inerciální senzor.set_heading— Nastaví aktuální směr inerciálního senzoru na novou hodnotu směru.set_rotation— Nastaví aktuální rotaci inerciálního senzoru na novou hodnotu rotace.reset_heading— Obnoví aktuální směr inerciálního senzoru na 0 stupňů.reset_rotation— Obnoví aktuální rotaci inerciálního senzoru na 0 stupňů.is_calibrating— Vrátí, zda se inerciální senzor aktuálně kalibruje.changed— Registruje funkci, která se spustí při změně hodnoty inerciálního senzoru.installed— Zkontroluje, zda je inerciální senzor nainstalován.
Pohyb – Měření zrychlení, kolizí a směru otáčení.
acceleration— Vrátí, jak rychle se senzor zrychluje nebo zpomaluje na vybrané ose.collision— Registruje funkci, která se spustí, když inerciální senzor detekuje kolizi.set_turn_type— Nastaví, který směr odbočení vrací kladné hodnoty kurzu.get_turn_type— Vrátí směr odbočení, který vrací kladné hodnoty kurzu.
Konstruktor
Inertial– Vytvoří inerciální senzor.
Orientace#
heading#
Směr je směr, kterým je senzor otočen, měřený ve stupních od 0 do 359,99. heading vrací aktuální směr senzoru jako číslo s desetinnou čárkou.
Počáteční kurz je 0 stupňů. Pokud se senzor otočí za více než 359,99 stupňů, kurz se vrátí zpět na 0 stupňů.
Usage:
inertial_1.heading(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka směru: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.heading())
rotation#
Rotace udává, o kolik se senzor otočil, měřeno ve stupních. Na rozdíl od směru se rotace může zvýšit nad 359,99 stupňů nebo snížit pod 0 stupňů. Na začátku projektu je hodnota rotace nastavena na 0 stupňů. Hodnota rotace rotation vrátí aktuální rotaci inerciálního senzoru jako číslo s desetinnou čárkou.
Otočení doprava zvětšuje rotaci a otočení doleva ji snižuje. Například provedení dvou celých otoček doprava vrátí rotaci o 720 stupňů. Otočení o jednu celou otáčku doleva z 0 stupňů vrátí rotaci o -360 stupňů.
Usage:
inertial_1.rotation(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka rotace: |
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())
gyro_rate#
Rychlost gyra udává, jak rychle se inerciální senzor otáčí. gyro_rate vrací aktuální rychlost otáčení inerciálního senzoru na vybrané ose jako číslo s desetinnou čárkou.
Hodnota může být kladná nebo záporná v závislosti na směru otáčení senzoru na dané ose.
Usage:
inertial_1.gyro_rate(axis, units)
Parametry |
Popis |
|---|---|
|
Osa, ze které se má vrátit rychlost gyra:
|
|
Volitelné. Jednotka rychlosti gyroskopu:
|
# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()
orientation#
Orientace udává aktuální úhel inerciálního senzoru na vybrané ose otáčení. Orientace orientation vrací hodnotu klopení, stoupání nebo stáčení inerciálního senzoru v rozsahu od -180,00 do 180,00 stupňů jako plovoucí číslo.
Naklánění, stoupání a stáčení popisují různé způsoby, jakými se senzor může naklánět nebo otáčet.
Usage:
inertial_1.orientation(type, units)
Parametry |
Popis |
|---|---|
|
Úhel orientace, který se má vrátit:
|
|
Volitelné. Jednotka orientace:
|
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(inertial_1.orientation(AxisType.ROLL, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
calibrate#
calibrate kalibruje inerciální senzor.
Kalibrace pomáhá senzoru správně měřit zatáčky. Během kalibrace držte senzor v klidu. Pokud se senzor během kalibrace pohybuje, hodnoty směru, rotace, rychlosti gyra a orientace se nemusí měřit správně.
Projekt počká na dokončení kalibrace, než se spustí další řádek kódu.
Usage:
inertial_1.calibrate()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
brain.screen.clear()
brain.screen.print("Inertial Sensor Calibrating")
wait(50, MSEC)
set_heading#
Směr je směr, kterým je senzor natočen, měřený ve stupních od 0 do 359,99. set_heading změní aktuální směr inerciálního senzoru na novou hodnotu směru.
Například pokud se senzor otočil doprava, nastavení směru na 0 stupňů změní tuto polohu doprava na nových 0 stupňů. Senzor pak může sledovat další směry na základě tohoto nového směru.
Usage:
inertial_1.set_heading(value, units)
Parametry |
Popis |
|---|---|
|
Hodnota směru ve stupních, která se má nastavit pro senzor. Může se jednat o hodnotu od 0 do 359,99. |
|
Volitelné. Jednotka směru: |
# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)
set_rotation#
Rotace udává, o kolik se senzor otočil, měřeno ve stupních. Na rozdíl od směru se rotace může zvýšit nad 359,99 stupňů nebo snížit pod 0 stupňů. Na začátku projektu je hodnota rotace nastavena na 0 stupňů. set_rotation změní aktuální rotaci inerciálního senzoru na novou hodnotu.
Například pokud se senzor otočil o dvě celé otáčky doprava, jeho hodnota rotace bude 720 stupňů. Nastavením rotace na 0 stupňů se tato hodnota resetuje ze 720 na 0 stupňů. Senzor pak může sledovat rotace na základě této nové hodnoty.
Usage:
inertial_1.set_rotation(value, units)
Parametry |
Popis |
|---|---|
|
Hodnota natočení ve stupních, která se má nastavit pro senzor. Může se jednat o celé číslo nebo desetinné číslo (float). |
|
Volitelné. Jednotka rotace: |
# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)
reset_heading#
reset_heading resetuje aktuální směr inerciálního senzoru na 0 stupňů.
Po použití této metody se aktuální směr senzoru stane novým kurzem 0 stupňů.
Usage:
inertial_1.reset_heading()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
reset_rotation#
reset_rotation resetuje aktuální rotaci inerciálního senzoru na 0 stupňů.
Po použití této metody senzor sleduje budoucí otočení od nové hodnoty otočení 0 stupňů.
Usage:
inertial_1.reset_rotation()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
is_calibrating#
is_calibrating vrací, zda se inerciální senzor aktuálně kalibruje.
True— Inerciální senzor se kalibruje.False— Inerciální senzor se nekalibruje.
Usage:
inertial_1.is_calibrating()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
changed#
changed registruje funkci, která se má volat vždy, když se změní hodnota inerciálního senzoru.
Usage:
inertial_1.changed(callback, arg)
Parametry |
Popis |
|---|---|
|
Dříve definovaná funkce, která se provede při změně hodnoty inerciálního senzoru. |
|
Volitelné. N-tice obsahující argumenty, které se mají předat funkci zpětného volání. Další informace naleznete v části Použití funkcí s parametry. |
def my_function():
brain.screen.print("Value changed!!")
# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)
installed#
installed kontroluje, zda je inerciální senzor nainstalován.
True— Inerciální senzor je nainstalován.False— Inerciální senzor není nainstalován.
Usage:
inertial_1.installed()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
Pohyb#
acceleration#
Zrychlení udává, jak rychle se senzor zrychluje nebo zpomaluje. acceleration vrací zrychlení inerciálního senzoru na vybrané ose od -4,0 G do 4,0 G jako číslo s desetinnou čárkou.
G je jednotka používaná k měření zrychlení. 1 G udává zrychlení, které cítíte vlivem gravitace, když sedíte v klidu.
Hodnota může být kladná nebo záporná v závislosti na směru zrychlení na vybrané ose. Možnosti osy jsou AxisType.XAXIS, AxisType.YAXISa AxisType.ZAXIS.
Usage:
inertial_1.acceleration(type)
Parametry |
Popis |
|---|---|
|
Osa, na které se má měřit zrychlení:
|
# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)
collision#
collision registruje funkci, která má být volána vždy, když inerciální senzor detekuje náhlý náraz nebo kolizi.
Usage:
inertial_1.collision(callback, arg)
Parametry |
Popis |
|---|---|
|
Dříve definovaná funkce, která se provede při detekci kolize. |
|
Volitelné. N-tice obsahující argumenty, které se mají předat funkci zpětného volání. Další informace naleznete v části Použití funkcí s parametry. |
def my_function():
brain.screen.print("Collision!")
# Call my_function whenever a collision is detected
inertial_1.collision(my_function)
set_turn_type#
set_turn_type nastaví, který směr odbočení vrací kladné hodnoty kurzu.
Usage:
inertial_1.set_turn_type(turntype)
Parametry |
Popis |
|---|---|
|
Typ otáčení, který chcete nastavit:
|
get_turn_type#
get_turn_type vrací směr odbočení, vrací kladné hodnoty kurzu.
LEFT— Odbočení doleva vrací kladné hodnoty směru.RIGHT— Odbočení vpravo vrací kladné hodnoty směru.
Usage:
inertial_1.get_turn_type()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
Konstruktéři#
Inertial#
Inertial vytvoří inerciální senzor.
Usage:
Inertial(smartport)
Parametry |
Popis |
|---|---|
|
Inteligentní port, ke kterému je připojen inerciální senzor, zapsaný jako |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)