Inerciális#
Bevezetés#
Az IQ (2. generációs) agy beépített inerciális érzékelővel rendelkezik. Ez az érzékelő méri az agy mozgását és forgá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.
Ez az oldal brain_inertial értéket használja példaként az inerciális érzékelő nevére. Szükség szerint cserélje ki a saját konfigurált névre.
Az alábbiakban felsoroljuk az összes elérhető módszert:
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ő.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.is_calibrating— Visszaadja, hogy az inerciális érzékelő jelenleg kalibrálás alatt áll-e.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.changed— Regisztrál egy függvényt, amely akkor fut, amikor az inerciális érzékelő iránya megváltozik.
Mozgás – Gyorsulás, forgási sebesség és dőlés mérése.
acceleration— Visszaadja, hogy milyen gyorsan gyorsul vagy lassul az érzékelő a kiválasztott tengelyen.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.
Konstruktorok – Inerciális érzékelő manuális inicializálása és konfigurálása.
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 ami az érzékelő aktuális haladási irányát adja vissza.
A kezdő irány 0 fok. Ha az érzékelő 359,99 fok fölé fordul, az irány visszaáll 0 fokra.
Usage:
brain_inertial.heading(units)
Paraméterek |
Leírás |
|---|---|
|
Opcionális. Az irány mértékegysége: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.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őhet, vagy 0 fok alá csökkenhet. Egy projekt elején az elforgatási érték 0 fokra van állítva. rotation az inerciális érzékelő aktuális elforgatását adja vissza.
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:
brain_inertial.rotation(units)
Paraméterek |
Leírás |
|---|---|
|
Opcionális. A forgatás mértékegysége: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibrálja az inerciális érzékelőt. Az összes további sor a kalibrálás befejezésére vár, mielőtt futtatná. A kalibrálás segít az érzékelőnek a fordulatok helyes mérésében azáltal, hogy méri és kompenzálja az érzékelő zaját és eltolódását egy meghatározott időszakon belül. Ez idő alatt az Agy-nek teljesen mozdulatlanul kell maradnia egy stabil felületen. A kalibrálás közbeni mozgás pontatlan eredményeket eredményezhet.
A VEX Brain minden projekt elején automatikusan megpróbálja kalibrálni a beépített inerciális érzékelőt. Ha azonban a robotot a projekt indítása közben szállítják vagy mozgatják, előfordulhat, hogy az érzékelő kalibrálása nem lesz megfelelő, vagy helytelen kalibrációt eredményez.
Usage:
brain_inertial.calibrate()
Paraméter |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# 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#
A haladási irány az érzékelő iránya, 0 és 359,99 fok között mérve. set_heading() megváltoztatja az inerciális érzékelő aktuális haladási irányát egy új haladási értékre.
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:
brain_inertial.set_heading(value, units)
Paraméterek |
Leírás |
|---|---|
|
Az érzékelőhöz beállítandó irányérték fokban. Ez 0 és 359,99 közötti érték lehet. |
|
Opcionális. Az irány mértékegysége: |
# Turn the robot around
brain_inertial.set_heading(180)
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() 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:
brain_inertial.set_rotation(value, units)
Paraméterek |
Leírás |
|---|---|
|
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. |
|
Opcionális. A forgatás mértékegysége: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
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:
brain_inertial.is_calibrating()
Paraméter |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# 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 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:
brain_inertial.reset_heading()
Paraméterek |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# 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 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:
brain_inertial.reset_rotation()
Paraméterek |
Leírás |
|---|---|
Ennek a metódusnak nincsenek paraméterei. |
# 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 regisztrál egy függvényt, amely akkor hívódik meg, amikor az inerciális érzékelő iránya megváltozik.
Usage:
brain_inertial.changed(callback, arg)
Paraméterek |
Leírás |
|---|---|
|
Egy függvény, amely akkor fut le, amikor az inerciális érzékelő iránya megváltozik. |
|
Opcionális. A visszahívó függvénynek átadandó argumentumok tuple-je. |
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)
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 tengelyopciók: XAXIS, YAXISés ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Paraméterek |
Leírás |
|---|---|
tengely |
A gyorsulás mérésére szolgáló tengely:
|
# 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#
A giroszkóp sebessége az inerciális érzékelő forgási sebességét adja meg. gyro_rate az inerciális érzékelő aktuális forgási sebességét adja vissza 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:
brain_inertial.gyro_rate(axis, units)
Paraméterek |
Leírás |
|---|---|
|
A giroszkóp sebességét visszaadó tengely:
|
|
Opcionális. A giroszkóp sebességének mértékegysége:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Az orientáció az inerciális érzékelő aktuális szöge a kiválasztott forgástengelyhez képest. orientation értékkel adja vissza az inerciális érzékelő gördülését, dőlésszögét vagy elfordulását.
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:
brain_inertial.orientation(axis, units)
Paraméterek |
Leírás |
|---|---|
|
A visszatéréshez szükséges tájolási szög:
|
|
Opcionális. A tájolás mértékegysége: |
# 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)
Konstruktorok#
A konstruktorokat Inertial objektumok manuális létrehozására használjuk, például egy inerciális érzékelő VEXcode-on kívüli konfigurálásakor.
Inertial#
Inertial Inerciális érzékelőt hoz létre.
Usage:
Inertial(smartport)
Paraméter |
Leírás |
|---|---|
|
Opcionális. Ha az IQ (2. generációs) Brain beépített inerciális érzékelőjét használja, akkor nincs szükség Smart Portra. Külső inerciális érzékelő csatlakoztatásakor adja meg azt a Smart Portot, amelyhez az inerciális érzékelő csatlakozik, |
# 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)


