Inerciális#

Bevezetés#

Egy inerciális érzékelő méri a robot mozgását és fordulását.

Az inerciális érzékelő két alkatrészt használ ehhez. A giroszkóp méri a fordulást, például az irányt, a forgást, a giroszkóp sebességét és az orientációt. A gyorsulásmérő a mozgás változásait méri, például a gyorsulást vagy lassulást az x, y és z tengelyek mentén.

Az alábbiakban felsoroljuk az elérhető módszereket:

Tájolás – Olvassa le és szabályozza az irányt, az elforgatást és az érzékelő kalibrálását.

  • heading — Visszaadja az érzékelő irányát 0 és 359,99 fok között.

  • rotation — Visszaadja, hogy milyen messzire fordult el az érzékelő.

  • gyro_rate — Visszaadja, hogy milyen gyorsan forog a szenzor a kiválasztott tengely körül.

  • orientation — Visszaadja az inerciális érzékelő gördülési, dőlési vagy elfordulási szögét.

  • calibrate — Kalibrálja az inerciális érzékelőt.

  • set_heading — Beállítja az inerciális érzékelő aktuális irányát egy új irányértékre.

  • set_rotation — Beállítja az inerciális érzékelő aktuális forgását egy új forgási értékre.

  • reset_heading — Visszaállítja az inerciális érzékelő aktuális irányát 0 fokra.

  • reset_rotation — Visszaállítja az inerciális érzékelő aktuális elforgatását 0 fokra.

  • is_calibrating — Visszaadja, hogy az inerciális érzékelő jelenleg kalibrálás alatt áll-e.

  • changed — Regisztrál egy függvényt, amely akkor fut, amikor az inerciális érzékelő értéke megváltozik.

  • installed — Ellenőrzi, hogy az inerciális érzékelő telepítve van-e.

Mozgás – Gyorsulás, ütközések és fordulási irány viselkedésének mérése.

  • acceleration — Visszaadja, hogy milyen gyorsan gyorsul vagy lassul az érzékelő a kiválasztott tengelyen.

  • collision — Regisztrál egy függvényt, amely akkor fut, amikor az inerciális érzékelő ütközést érzékel.

  • set_turn_type — Beállítja, hogy melyik fordulási irány ad vissza pozitív irányértékeket.

  • get_turn_type — Visszaadja, hogy melyik fordulási irány pozitív irányértékeket ad vissza.

Konstruktőr

  • Inertial – Inerciális érzékelőt hoz létre.

Tájolás#

heading#

A haladási irány az érzékelő iránya, 0 és 359,99 fok között mérve. heading és az érzékelő aktuális haladási irányát adja vissza lebegőpontos értékként.

A kezdő irány 0 fok. Ha az érzékelő 359,99 fok fölé fordul, az irány visszaáll 0 fokra.

Usage:
inertial_1.heading(units)

Paraméterek

Leírás

units

Opcionális. Az irány mértékegysége: DEGREES (alapértelmezett) vagy TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.heading())

rotation#

Az elforgatás az érzékelő elfordulásának mértékét mutatja fokban mérve. Az irányváltással ellentétben az elforgatás 359,99 fok fölé növelhető, vagy 0 fok alá csökkenhet. Egy projekt elején az elforgatási érték 0 fokra van állítva. rotation paraméterrel visszaadható az inerciális érzékelő aktuális elforgatása lebegőpontos értékként.

Jobbra fordulás növeli, balra fordulás pedig csökkenti az elfordulást. Például két teljes jobbra fordulás 720 fokos elfordulást eredményez. Egy teljes balra fordulás 0 fokról -360 fokos elfordulást eredményez.

Usage:
inertial_1.rotation(units)

Paraméterek

Leírás

units

Opcionális. A forgatás mértékegysége: DEGREES (alapértelmezett) vagy TURNS

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())

gyro_rate#

A giroszkóp sebessége az inerciális érzékelő forgási sebességét adja meg. A gyro_rate értéke lebegőpontos értékként adja vissza az inerciális érzékelő aktuális forgási sebességét a kiválasztott tengelyen.

Az érték lehet pozitív vagy negatív attól függően, hogy az érzékelő milyen irányba forog az adott tengely körül.

Usage:
inertial_1.gyro_rate(axis, units)

Paraméterek

Leírás

axis

A giroszkóp sebességét visszaadó tengely:

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

units

Opcionális. A giroszkóp sebességének mértékegysége:

  • VelocityUnits.DPS (alapértelmezett)
  • 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#

Az „orientation” (orientáció) az inerciális érzékelő aktuális szöge a kiválasztott forgástengelyhez képest. orientation értékkel visszaadja az inerciális érzékelő gördülését, dőlésszögét vagy elfordulását -180,00 és 180,00 fok között, lebegőpontos értékként.

A gördülés, a bólintás és az elfordulás a szenzor különböző dőlési vagy elfordulási módjait írják le.

Usage:
inertial_1.orientation(type, units)

Paraméterek

Leírás

type

A visszaadandó tájolási szög:

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

units

Opcionális. A tájolási egység:

  • DEGREES (alapértelmezett)
  • 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)

calibrate#

calibrate kalibrálja az inerciális érzékelőt.

A kalibrálás segít az érzékelőnek a fordulatok helyes mérésében. Tartsa mozdulatlanul az érzékelőt a kalibrálás során. Ha az érzékelő elmozdul a kalibrálás során, előfordulhat, hogy az irány, a forgás, a giroszkóp sebessége és az orientációs értékek nem fognak helyesen mérni.

A projekt a kalibráció befejezéséig vár, mielőtt a következő kódsort futtatná.

Usage:
inertial_1.calibrate()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

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

A haladási irány az érzékelő iránya, 0 és 359,99 fok között mérve. set_heading paraméterrel az inerciális érzékelő aktuális haladási iránya egy új haladási értékre módosítható.

Például, ha az érzékelő jobbra fordult, és a haladási irány 0 fokra állítása a jobbra néző pozíciót teszi az új 0 fokká. Ezután az érzékelő az új irány alapján más haladási irányokat is követhet.

Usage:
inertial_1.set_heading(value, units)

Paraméterek

Leírás

value

Az érzékelőhöz beállítandó irányérték fokban. Ez 0 és 359,99 közötti érték lehet.

units

Opcionális. Az irány mértékegysége: DEGREES (alapértelmezett) vagy TURNS

# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)

set_rotation#

Az elforgatás az érzékelő elfordulásának mértékét mutatja fokban mérve. Az irányváltással ellentétben az elforgatás 359,99 fok fölé növelhető, vagy 0 fok alá csökkenhet. Egy projekt elején az elforgatási érték 0 fokra van állítva. set_rotation paraméterrel az inerciális érzékelő aktuális elforgatását egy új értékre módosítja.

Például, ha az érzékelő két teljes fordulatot tett jobbra, akkor az elforgatási értéke 720 fok lesz. Ha az elforgatást 0 fokra állítja, az elforgatás 720-ról 0 fokra áll vissza. Ezután az érzékelő az új érték alapján tudja követni a forgásokat.

Usage:
inertial_1.set_rotation(value, units)

Paraméterek

Leírás

value

Az érzékelőhöz beállítandó elforgatási érték fokban. Ez lehet egész szám vagy decimális (lebegőpontos) szám.

units

Opcionális. A forgatás mértékegysége: DEGREES (alapértelmezett) vagy TURNS

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

reset_heading#

reset_heading Az inerciális érzékelő aktuális irányát 0 fokra állítja vissza.

A módszer használata után az érzékelő aktuális iránya lesz az új 0 fokos irány.

Usage:
inertial_1.reset_heading()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

reset_rotation#

reset_rotation visszaállítja az inerciális érzékelő aktuális elforgatását 0 fokra.

A módszer használata után az érzékelő az új 0 fokos elforgatási értékből kiindulva követi nyomon a jövőbeli fordulatokat.

Usage:
inertial_1.reset_rotation()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

is_calibrating#

is_calibrating Visszaadja, hogy az inerciális érzékelő jelenleg kalibrálás alatt áll-e.

  • True — Az inerciális érzékelő kalibrál.

  • False — Az inerciális érzékelő nem kalibrál.

Usage:
inertial_1.is_calibrating()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

changed#

changed regisztrál egy függvényt, amely minden alkalommal meghívódik, amikor az inerciális érzékelő értéke megváltozik.

Usage:
inertial_1.changed(callback, arg)

Paraméterek

Leírás

callback

Egy korábban definiált függvény, amely akkor hajtódik végre, amikor az inerciális érzékelő értéke megváltozik.

arg

Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd a Függvények használata paraméterekkel részt.

def my_function():
  brain.screen.print("Value changed!!")

# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)

installed#

installed ellenőrzi, hogy az inerciális érzékelő telepítve van-e.

  • True — Az inerciális érzékelő telepítve van.

  • False — Az inerciális érzékelő nincs telepítve.

Usage:
inertial_1.installed()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

Mozgás#

acceleration#

A gyorsulás azt mutatja, hogy az érzékelő milyen gyorsan gyorsul vagy lassul. acceleration értéke az inerciális érzékelő kiválasztott tengelyen mért gyorsulását adja vissza -4,0 G-től 4,0 G-ig, lebegőpontos értékként.

A G a gyorsulás mérésére használt mértékegység. Az 1 G a gravitációból fakadó gyorsulást jelenti, amelyet egy helyben ülés közben érzünk.

Az érték lehet pozitív vagy negatív a kiválasztott tengely gyorsulási irányától függően. A tengelybeállítások: AxisType.XAXIS, AxisType.YAXISés AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Paraméterek

Leírás

type

A tengely, amelyen a gyorsulást mérni kell:

  • 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 regisztrál egy függvényt, amely akkor hívódik meg, amikor az inerciális érzékelő hirtelen becsapódást vagy ütközést érzékel.

Usage:
inertial_1.collision(callback, arg)

Paraméterek

Leírás

callback

Egy korábban definiált függvény, amely ütközés észlelésekor hajtódik végre.

arg

Opcionális. Egy tuple, amely argumentumokat tartalmaz a visszahívó függvénynek átadandó. További információkért lásd a Függvények használata paraméterekkel részt.

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 beállítja, hogy melyik fordulási irány ad vissza pozitív irányértékeket.

Usage:
inertial_1.set_turn_type(turntype)

Paraméterek

Leírás

turntype

A beállítandó forduló típusa:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type visszaadja, hogy melyik fordulási irány ad vissza pozitív irányértékeket.

  • LEFT — A balra fordulások pozitív irányértékeket adnak vissza.

  • RIGHT — A jobbra fordulások pozitív irányértékeket adnak vissza.

Usage:
inertial_1.get_turn_type()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

Konstruktorok#

Inertial#

Inertial Inerciális érzékelőt hoz létre.

Usage:
Inertial(smartport)

Paraméterek

Leírás

smartport

Az inerciális érzékelőhöz csatlakoztatott intelligens port, amelyet Ports.PORTxalakban írunk fel, ahol x a port száma.

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