Inerciální#
Zavedení#
IQ (2. generace) Brain obsahuje vestavěný inerciální senzor. Tento senzor měří, jak se mozek 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.
Tato stránka používá jako příklad názvu inerciálního senzoru hodnotu brain_inertial V případě potřeby jej nahraďte vlastním nakonfigurovaným názvem.
Níže je uveden seznam všech 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.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.is_calibrating— Vrátí, zda se inerciální senzor aktuálně kalibruje.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ňů.changed— Registruje funkci, která se spustí při změně směru inerciálního senzoru.
Pohyb – Měření zrychlení, rychlosti otáčení a náklonu.
acceleration— Vrátí, jak rychle se senzor zrychluje nebo zpomaluje na vybrané ose.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.
Konstruktory – Ruční inicializace a konfigurace inerciálního senzoru.
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.
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:
brain_inertial.heading(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka směru: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.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 rotation vrací aktuální rotaci inerciálního senzoru.
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:
brain_inertial.rotation(units)
Parametry |
Popis |
|---|---|
|
Volitelné. Jednotka rotace: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibruje inerciální senzor. Všechny následující řádky budou čekat na dokončení kalibrace, než se spustí. Kalibrace pomáhá senzoru správně měřit otáčky měřením a kompenzací šumu a driftu senzoru po stanovenou dobu. Během této doby musí Brain zůstat zcela v klidu na stabilním povrchu. Pohyb během kalibrace může vést k nepřesným výsledkům.
VEX Brain se automaticky pokusí kalibrovat vestavěný inerciální senzor na začátku každého projektu. Pokud je však robot během zahájení projektu přenášen nebo přemisťován, senzor se nemusí správně kalibrovat nebo může dojít k nesprávné kalibraci.
Usage:
brain_inertial.calibrate()
Parametr |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
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:
brain_inertial.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
brain_inertial.set_heading(180)
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:
brain_inertial.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
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
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:
brain_inertial.is_calibrating()
Parametr |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
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:
brain_inertial.reset_heading()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
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:
brain_inertial.reset_rotation()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed registruje funkci, která se má volat při změně směru inerciálního senzoru.
Usage:
brain_inertial.changed(callback, arg)
Parametry |
Popis |
|---|---|
|
Funkce, která se spustí při změně směru inerciálního senzoru. |
|
Volitelné. N-tice argumentů, které se mají předat funkci zpětného volání. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
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 plovoucí čá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 os jsou XAXIS, YAXISa ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parametry |
Popis |
|---|---|
osa |
Osa, na které se má měřit zrychlení:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
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.
Hodnota může být kladná nebo záporná v závislosti na směru otáčení senzoru na dané ose.
Usage:
brain_inertial.gyro_rate(axis, units)
Parametry |
Popis |
|---|---|
|
Osa, ze které se má vrátit rychlost gyra:
|
|
Volitelné. Jednotka otáček gyroskopu:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
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.
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:
brain_inertial.orientation(axis, units)
Parametry |
Popis |
|---|---|
|
Úhel orientace pro návrat:
|
|
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(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Konstruktéři#
Konstruktory se používají k ručnímu vytváření objektů Inertial , například při konfiguraci inerciálního senzoru mimo VEXcode.
Inertial#
Inertial vytvoří inerciální senzor.
Usage:
Inertial(smartport)
Parametr |
Popis |
|---|---|
|
Volitelné. Pokud používáte vestavěný inerciální senzor IQ (2. generace) Brain, není inteligentní port potřeba. Pokud připojujete externí inerciální senzor, zadejte inteligentní port, ke kterému je inerciální senzor připojen, zapsaný jako |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


