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.

Aby se inerciální příkazy zobrazovaly ve VEXcode V5, musí být v okně Zařízení nakonfigurován inerciální senzor.

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.

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

  • calibrate — Kalibruje inerciální senzor.

  • 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

units

Volitelné. Jednotka záhlaví: DEGREES (výchozí) nebo TURNS

# 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

units

Volitelné. Jednotka rotace: DEGREES (výchozí) nebo TURNS

# 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

axis

Osa, ze které se má vrátit rychlost gyra:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Volitelné. Jednotka rychlosti gyroskopu:

  • VelocityUnits.DPS (výchozí)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# 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

type

Úhel orientace, který se má vrátit:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Volitelné. Jednotka orientace:

  • DEGREES (výchozí)
  • RotationUnits.TURNS

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

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

value

Hodnota směru ve stupních, která se má nastavit pro senzor. Může se jednat o hodnotu od 0 do 359,99.

units

Volitelné. Jednotka záhlaví: DEGREES (výchozí) nebo TURNS

# 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

value

Hodnota natočení ve stupních, která se má nastavit pro senzor. Může se jednat o celé číslo nebo desetinné číslo (float).

units

Volitelné. Jednotka rotace: DEGREES (výchozí) nebo TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

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)

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

callback

Dříve definovaná funkce, která se provede při změně hodnoty inerciálního senzoru.

arg

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 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 osy jsou AxisType.XAXIS, AxisType.YAXISa AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Parametry

Popis

type

Osa, na které se má měřit zrychlení:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# 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

callback

Dříve definovaná funkce, která se provede při detekci kolize.

arg

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

turntype

Typ otáčení, který chcete nastavit:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type vrací směr odbočení, vrací kladné hodnoty kurzu.

  • LEFT — Odbočení vlevo vrací kladné hodnoty směru.

  • RIGHT — Zatáčky vpravo vracejí 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(port)

Parametry

Popis

port

Inteligentní port, ke kterému je připojen inerciální senzor, od 1 do 21.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)