Inercinis#
Įvadas#
VEX AIM kodavimo robotas turi įmontuotą inercinį jutiklį. Šis jutiklis matuoja, kaip robotas juda ir sukasi.
Inercinis jutiklis tam naudoja dvi dalis. Giroskopas matuoja posūkius, tokius kaip roboto kryptis, sukimasis, posūkis, riedėjimas, svyravimas ir posūkio greitis. Akselerometras matuoja judėjimo pokyčius, tokius kaip pagreitėjimas, sulėtėjimas ar staigus sustojimas susidūrimo metu.
Inerciniai metodai gali būti naudojami posūkiams sekti, pagreičiui matuoti, susidūrimams aptikti, krypties ar sukimosi reikšmėms iš naujo nustatyti ir jutikliui kalibruoti.
Žemiau pateikiamas visų metodų sąrašas:
Orientacija – gaukite ir iš naujo nustatykite roboto pasisukimo, sukosi ar pakrypimo kryptį.
get_rotation— Grąžina, kiek robotas pasisuko.get_heading— Grąžina roboto pasukimo kryptį nuo 0 iki 359,99 laipsnių.get_yaw— Grąžina roboto posūkio kampą.get_roll— Grąžina roboto posūkio kampą.get_pitch— Grąžina roboto polinkio kampą.reset_rotation— Atkuria dabartinį roboto sukimosi kampą į 0 laipsnių.reset_heading— Atkuria dabartinę roboto kryptį į 0 laipsnių.set_heading— Nustato dabartinę roboto kryptį į naują krypties reikšmę.
Susidūrimas – aptikti susidūrimus.
crashed— Registruoja funkciją, kuri bus vykdoma aptikus gedimą.set_crash_sensitivity— Nustato, koks jautrus yra susidūrimo aptikimas smūgiams.
Judėjimas – matuokite pagreitį ir posūkio greitį.
get_acceleration— Grąžina, kaip greitai robotas greitėja arba lėtėja pasirinktoje ašyje.get_turn_rate— Grąžina, kaip greitai robotas sukasi pasirinkta ašimi.
Kalibravimas – tvarkykite jutiklio kalibravimą.
calibrate– Kalibruoja inercinį jutiklį.is_calibrating— Grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.
Orientacija#
get_rotation#
Sukimas rodo, kiek robotas pasisuko, matuojamas laipsniais. Skirtingai nuo krypties, sukimasis gali padidėti virš 359,99 laipsnio arba sumažėti žemiau 0 laipsnių. Projekto pradžioje sukimosi reikšmė nustatoma į 0 laipsnių. get_rotation grąžina dabartinį roboto sukimąsi kaip slankiojančią reikšmę.
Sukant į dešinę, sukimasis padidėja, o sukant į kairę – sumažėja. Pavyzdžiui, padarius du pilnus apsisukimus į dešinę, pasisukimas bus 720 laipsnių. Pasukus vieną pilną apsisukimą į kairę nuo 0 laipsnių, pasisukimas bus -360 laipsnių.
Usage:
robot.inertial.get_rotation()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Display the robot's rotation as it rotates
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
get_heading#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais nuo 0 iki 359,99. get_heading grąžina dabartinę roboto kryptį kaip slankiąją kablelį.
Pradinė kryptis yra 0 laipsnių. Jei robotas pasisuka daugiau nei 359,99 laipsnio, kryptis grįžta į 0 laipsnių.
Usage:
robot.inertial.get_heading()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Turn right until the heading reaches 90 degrees
robot.turn(RIGHT)
while robot.inertial.get_heading() < 90:
wait(50, MSEC)
robot.stop_all_movement()
# Display the robot's heading as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_heading()} degrees")
wait(50, MSEC)
get_yaw#
„Yaw“ apibūdina roboto posūkį į kairę arba į dešinę aplink savo vertikalią ašį. get_yaw grąžina roboto posūkio kampą intervale nuo -180,00 iki 180,00 laipsnių kaip slankiąją reikšmę.
Žemiau esančiame paveikslėlyje rodyklėmis rodoma teigiamo sukimosi kryptis posūkio metu.
Usage:
robot.inertial.get_yaw()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Display the robot's yaw angle as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_yaw())
wait(50, MSEC)
get_roll#
„Roll“ apibūdina roboto pasvirimą į šonus. get_roll grąžina roboto pasvirimo kampą intervale nuo -180,00 iki 180,00 laipsnių kaip slankiąją reikšmę.
Žemiau esančiame paveikslėlyje rodyklėmis rodoma teigiamo sukimosi kryptis riedėjimo metu.
Usage:
robot.inertial.get_roll()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Display the robot's roll angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_roll())
wait(50, MSEC)
get_pitch#
„Pitch“ apibūdina roboto pasvirimą į priekį arba atgal. get_pitch grąžina roboto pasvirimo kampą intervale nuo -90,00 iki 90,00 laipsnių kaip slankiąją reikšmę.
Žemiau esančiame paveikslėlyje rodyklėmis rodoma teigiamo sukimosi kryptis žingsniui.
Usage:
robot.inertial.get_pitch()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Display the robot's pitch angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_pitch())
wait(50, MSEC)
reset_rotation#
reset_rotation atstato dabartinį roboto sukimąsi į 0 laipsnių.
Panaudojus šį metodą, robotas seka būsimus posūkius nuo naujos 0 laipsnių sukimosi vertės.
Usage:
robot.inertial.reset_rotation()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Reset the robot's rotation if it exceeds 180 degrees
while True:
if robot.inertial.get_rotation() >= 180:
robot.inertial.reset_rotation()
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
reset_heading#
reset_heading atstato dabartinę roboto kryptį į 0 laipsnių.
Panaudojus šį metodą, dabartinė roboto kryptis tampa nauja 0 laipsnių pozicija.
Usage:
robot.inertial.reset_heading()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Turn the robot around using a new 90 degree heading
robot.turn_to(90)
wait(1, SECONDS)
robot.inertial.reset_heading()
robot.turn_to(90)
set_heading#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais nuo 0 iki 359,99. set_heading pakeičia dabartinę roboto kryptį į naują krypties reikšmę.
Pavyzdžiui, jei robotas pasisuko veidu į dešinę, nustačius 0 laipsnių kryptį, ta nukreipta į dešinę pozicija tampa nauja 0 laipsnių. Tada robotas gali sekti kitas kryptis pagal tą naują kryptį.
Usage:
robot.inertial.set_heading(heading)
Parametrai |
Aprašymas |
|---|---|
|
Roboto krypties vertė laipsniais. Tai gali būti vertė nuo 0 iki 359,99. |
# Turn the robot to 90 degrees using its new heading
robot.inertial.set_heading(45)
robot.turn_to(90)
Avarija#
crashed#
crashed užregistruoja funkciją, kuri bus iškviesta, kai robotas aptiks staigų smūgį arba susidūrimą.
Naudojimas:
robot.inertial.crashed(callback, arg)
Parametrai |
Aprašymas |
|---|---|
|
Funkcija funkcija, kuri anksčiau buvo apibrėžta vykdyti aptikus susidūrimą. |
|
Pasirinktinai. Rinkinys su argumentais, kurie turi būti perduoti atgalinio iškvietimo funkcijai. Daugiau informacijos žr. Funkcijų su parametrais naudojimas. |
# Define what happens when a crash occurs
def crash_detected():
# Stop all movement and indicate a crash occurred
robot.screen.print("Crash detected")
robot.stop_all_movement()
robot.inertial.crashed(crash_detected)
# Drive forward until crash
robot.move_at(0, 100)
set_crash_sensitivity#
set_crash_sensitivity reguliuoja, kiek staigaus pagreičio reikia, kad robotas aptiktų susidūrimą.
Usage:
robot.inertial.set_crash_sensitivity(sensitivity)
Parametrai |
Aprašymas |
|---|---|
|
Sudužimo jautrumas:
|
def crashed_callback():
robot.stop_all_movement()
robot.sound.play(CRASH)
# system event handlers
robot.inertial.crashed(crashed_callback)
# add 15ms delay to make sure events are registered correctly.
wait(15, MSEC)
# Detect a crash at a slow velocity.
robot.set_move_velocity(35, PERCENT)
robot.inertial.set_crash_sensitivity(HIGH)
robot.move_at(0)
Judesys#
get_acceleration#
Pagreitis nurodo, kaip greitai robotas greitėja arba lėtėja. get_acceleration grąžina roboto pagreitį pasirinktoje ašyje nuo -4,00 G iki 4,00 G kaip slankiojo dydžio vertę.
G yra vienetas, naudojamas pagreičiui matuoti. 1 G yra maždaug tas pagreitis, kurį jaučiate dėl gravitacijos sėdėdami vietoje.
Reikšmė gali būti teigiama arba neigiama, priklausomai nuo pasirinktos ašies pagreičio krypties. AIM sistemoje ašių parinktys yra pavadintos pagal roboto kryptis: FORWARD, RIGHTWARDir DOWNWARD.

Naudojimas:
robot.inertial.get_acceleration(type)
Parametrai |
Aprašymas |
|---|---|
|
Ašis, kuria matuojamas pagreitis:
|
# Display the acceleration as the robot begins to move
robot.screen.set_cursor(4,1)
sitting_accel = robot.inertial.get_acceleration(RIGHTWARD)
robot.screen.print(f"Resting: {sitting_accel:.2f}")
wait(0.5, SECONDS)
robot.screen.next_row()
robot.move_at(90, 100)
wait(0.1, SECONDS)
robot.screen.print(f"Startup: {robot.inertial.get_acceleration(RIGHTWARD):.2f}")
get_turn_rate#
Sukimosi greitis nurodo roboto sukimosi greitį. get_turn_rate grąžina roboto sukimosi greitį laipsniais per sekundę \(dps\) kaip slankiojo skaičiaus reikšmę nuo -1000,00 iki 1000,00 dps.
Reikšmė gali būti teigiama arba neigiama, priklausomai nuo roboto sukimosi krypties pasirinkta ašimi. Žemiau esančiame paveikslėlyje rodyklėmis rodoma teigiamo sukimosi kryptis riedėjimo, polinkio ir posūkio metu.

Usage:
robot.inertial.get_turn_rate(axis)
Parametrai |
Aprašymas |
|---|---|
|
Kuria kryptimi grįžti:
|
# Display the gyro rate as the robot is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_turn_rate(YAW))
wait(50, MSEC)
Kalibravimas#
Kalibravimas padeda inerciniam jutikliui teisingai išmatuoti posūkius, matuojant ir kompensuojant jutiklio triukšmą ir poslinkį per 2 sekundes. Šiuo laikotarpiu robotas turi išlikti visiškai nejudantis ant stabilaus paviršiaus. Judėjimas kalibravimo metu gali duoti netikslius rezultatus.
VEX robotai bando automatiškai kalibruotis paleidimo metu, laukdami, kol nebeaptiks judesio. Tačiau jei robotas paleidimo metu yra nešamas ar judinamas, jutiklis gali netinkamai kalibruotis arba gauti neteisingą kalibravimą.
Jei jūsų projektas labai priklauso nuo tikslios krypties arba jei jums reikia nuoseklių ir kartojamų posūkių, gali padėti kodo pradžioje iškviesti calibrate Kalibravimo metu roboto ekrane rekomenduojama rodyti pranešimą, pvz., „Calibrating…“, o vėliau jį atnaujinti į „Calibration complete“, kad primintumėte jums (ir visiems kitiems roboto naudotojams), jog robotas šiuo laikotarpiu turi nejudėti.
calibrate#
calibrate kalibruoja giroskopą. Kalibravimas padeda inerciniam jutikliui teisingai išmatuoti posūkius, matuojant ir kompensuojant jutiklio triukšmą ir poslinkį per 2 sekundes. Šiuo laikotarpiu robotas turi išlikti visiškai nejudantis ant stabilaus paviršiaus. Judėjimas kalibravimo metu gali duoti netikslius rezultatus.
VEX robotai bando automatiškai kalibruotis paleidimo metu, laukdami, kol nebeaptiks judesio. Tačiau jei robotas paleidimo metu yra nešamas ar judinamas, jutiklis gali netinkamai kalibruotis arba gauti neteisingą kalibravimą.
Usage:
robot.inertial.calibrate()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Calibrate the gyro before moving
robot.inertial.calibrate()
robot.screen.show_emoji(THINKING)
wait(2, SECONDS)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)
is_calibrating#
is_calibrating grąžina loginę reikšmę, nurodančią, ar inercinis jutiklis kalibruojamas.
True— Inercinis jutiklis kalibruojamas.False— Inercinis jutiklis nekalibruojamas.
Usage:
robot.inertial.is_calibrating()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# Move after the calibration is completed
robot.inertial.calibrate()
while robot.inertial.is_calibrating():
robot.screen.show_emoji(THINKING)
wait(50, MSEC)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)