Inerciāls#
Ievads#
VEX AIM kodēšanas robotam ir iebūvēts inerciālais sensors. Šis sensors mēra robota kustības un pagriezienus.
Inerciālais sensors šim nolūkam izmanto divas daļas. Žiroskops mēra pagriezienus, piemēram, robota virzienu, rotāciju, novirzi, ripošanu, slīpumu un pagrieziena ātrumu. Akselerometrs mēra kustības izmaiņas, piemēram, paātrinājumu, palēninājumu vai pēkšņu apstāšanos avārijas laikā.
Inerciālās metodes var izmantot, lai izsekotu pagriezienus, mērītu paātrinājumu, atklātu avārijas, atiestatītu virziena vai rotācijas vērtības un kalibrētu sensoru.
Zemāk ir visu metožu saraksts:
Orientācija — iegūstiet un atiestatiet robota pavērsiena, pagrieziena vai slīpuma virzienu.
get_rotation— Atgriež, cik tālu robots ir pagriezies.get_heading— Atgriež robota vēršanas virzienu no 0 līdz 359,99 grādiem.get_yaw— Atgriež robota novirzes leņķi.get_roll— Atgriež robota rites leņķi.get_pitch— Atgriež robota slīpuma leņķi.reset_rotation— Atiestata robota pašreizējo rotāciju uz 0 grādiem.reset_heading— Atiestata robota pašreizējo virzienu uz 0 grādiem.set_heading— Iestata robota pašreizējo virzienu uz jaunu virziena vērtību.
Avārija — Noteikt sadursmes.
crashed— Reģistrē funkciju, kas jāizpilda, kad tiek konstatēta avārija.set_crash_sensitivity— Nosaka, cik jutīga ir avārijas noteikšana pret triecieniem.
Kustība — mēra paātrinājumu un pagrieziena ātrumu.
get_acceleration— Atgriež, cik ātri robots paātrinās vai palēninās pa atlasīto asi.get_turn_rate— Atgriež robota griešanās ātrumu ap atlasīto asi.
Kalibrēšana — sensoru kalibrēšanas pārvaldība.
calibrate— Kalibrē inerciālo sensoru.is_calibrating— Atgriež, vai inerciālais sensors pašlaik kalibrē.
Orientācija#
get_rotation#
Rotācija norāda, cik daudz robots ir pagriezies, mērot grādos. Atšķirībā no virziena, rotācija var palielināties virs 359,99 grādiem vai samazināties zem 0 grādiem. Projekta sākumā rotācijas vērtība ir iestatīta uz 0 grādiem. get_rotation atgriež robota pašreizējo rotāciju kā peldošo skaitli.
Pagriežoties pa labi, rotācija palielinās, bet pagriežoties pa kreisi, tā samazinās. Piemēram, veicot divus pilnus pagriezienus pa labi, rotācija būs 720 grādi. Pagriežoties vienu pilnu pagriezienu pa kreisi no 0 grādiem, rotācija būs -360 grādi.
Usage:
robot.inertial.get_rotation()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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#
Virziens ir virziens, kurā robots ir pagriezies, mērot grādos no 0 līdz 359,99. get_heading atgriež robota pašreizējo virzienu kā peldošo vērtību.
Sākuma virziens ir 0 grādi. Ja robots pagriežas tālāk par 359,99 grādiem, virziens atgriežas pie 0 grādiem.
Usage:
robot.inertial.get_heading()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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#
Novirzīšanās apraksta robota pagriezienu pa kreisi vai pa labi ap savu vertikālo asi. get_yaw atgriež robota novirzes leņķi diapazonā no -180,00 līdz 180,00 grādiem kā peldošo vērtību.
Zemāk redzamajā attēlā bultiņas parāda pozitīvas rotācijas virzienu novirzei.
Usage:
robot.inertial.get_yaw()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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 apraksta robota sasvēršanos no vienas puses uz otru. get_roll atgriež robota sasvēršanās leņķi diapazonā no -180,00 līdz 180,00 grādiem kā peldošo vērtību.
Zemāk redzamajā attēlā bultiņas parāda pozitīvas rotācijas virzienu ruļļa kustībai.
Usage:
robot.inertial.get_roll()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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#
Slīpums apraksta robota sasvēršanos uz priekšu vai atpakaļ. get_pitch atgriež robota sasvēršanās leņķi diapazonā no -90,00 līdz 90,00 grādiem kā peldošo vērtību.
Zemāk redzamajā attēlā bultiņas parāda pozitīvas rotācijas virzienu piķim.
Usage:
robot.inertial.get_pitch()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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 atiestata robota pašreizējo rotāciju uz 0 grādiem.
Pēc šīs metodes izmantošanas robots seko līdzi turpmākajiem pagriezieniem, sākot no jaunās 0 grādu rotācijas vērtības.
Usage:
robot.inertial.reset_rotation()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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 atiestata robota pašreizējo virzienu uz 0 grādiem.
Pēc šīs metodes izmantošanas robota pašreizējais virziens kļūst par jauno 0 grādu kursu.
Usage:
robot.inertial.reset_heading()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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#
Virziens ir virziens, kurā robots ir pagriezies, mērot grādos no 0 līdz 359,99. set_heading maina robota pašreizējo virzienu uz jaunu virziena vērtību.
Piemēram, ja robots ir pagriezies pa labi, iestatot virzienu uz 0 grādiem, šis pa labi vērstais virziens kļūst par jauno 0 grādu virzienu. Pēc tam robots var sekot citiem virzieniem, pamatojoties uz šo jauno virzienu.
Usage:
robot.inertial.set_heading(heading)
Parametri |
Apraksts |
|---|---|
|
Robota iestatāmā virziena vērtība grādos. Tā var būt vērtība no 0 līdz 359,99. |
# Turn the robot to 90 degrees using its new heading
robot.inertial.set_heading(45)
robot.turn_to(90)
Avārija#
crashed#
crashed reģistrē funkciju, kas tiks izsaukta, kad robots konstatēs pēkšņu triecienu vai sadursmi.
Lietojums:
robot.inertial.crashed(callback, arg)
Parametri |
Apraksts |
|---|---|
|
Funkcija, kas iepriekš definēta izpildei, kad tiek konstatēta sadursme. |
|
Neobligāti. Kortežs, kas satur argumentus, kas jānodod atzvanīšanas funkcijai. Plašāku informāciju skatiet sadaļā Funkciju izmantošana ar parametriem. |
# 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 pielāgo, cik liels pēkšņs paātrinājums ir nepieciešams, lai robots noteiktu avāriju.
Usage:
robot.inertial.set_crash_sensitivity(sensitivity)
Parametri |
Apraksts |
|---|---|
|
Sadursmes jutība:
|
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)
Kustība#
get_acceleration#
Paātrinājums norāda, cik ātri robots palielina vai samazina ātrumu. get_acceleration atgriež robota paātrinājumu pa atlasīto asi no -4,00 G līdz 4,00 G kā peldošo vērtību.
G ir mērvienība, ko izmanto paātrinājuma mērīšanai. 1 G apzīmē paātrinājumu, ko jūtat no gravitācijas, sēžot mierā.
Vērtība var būt pozitīva vai negatīva atkarībā no paātrinājuma virziena uz izvēlētās ass. AIM režīmā asu opcijas ir nosauktas atbilstoši robota virzieniem: FORWARD, RIGHTWARDun DOWNWARD.

Lietojums:
robot.inertial.get_acceleration(type)
Parametri |
Apraksts |
|---|---|
|
Ass, uz kuras mērīt paātrinājumu:
|
# 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#
Pagrieziena ātrums norāda robota griešanās ātrumu. get_turn_rate atgriež robota pagrieziena ātrumu grādos sekundē \(dps\) kā peldošo skaitli no -1000,00 līdz 1000,00 dps.
Vērtība var būt pozitīva vai negatīva atkarībā no robota griešanās virziena ap atlasīto asi. Zemāk redzamajā attēlā ir izmantotas bultiņas, lai parādītu pozitīvās rotācijas virzienu ripošanai, slīpumam un novirzei.

Usage:
robot.inertial.get_turn_rate(axis)
Parametri |
Apraksts |
|---|---|
|
Kuru orientāciju atgriezt:
|
# 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)
Kalibrēšana#
Kalibrēšana palīdz inerciālajam sensoram pareizi izmērīt pagriezienus, mērot un kompensējot sensora troksni un nobīdi 2 sekunžu periodā. Šajā laikā robotam jāpaliek pilnīgi nekustīgam uz stabilas virsmas. Kustība kalibrēšanas laikā var radīt neprecīzus rezultātus.
VEX roboti mēģina automātiski kalibrēties pēc iedarbināšanas, gaidot, līdz tie vairs neuztver kustību. Tomēr, ja robots iedarbināšanas laikā tiek nests vai pārvietots, sensors var neveikt pareizu kalibrēšanu vai iegūt nepareizu kalibrēšanu.
Ja jūsu projekts ir ļoti atkarīgs no precīza virziena vai ja jums ir nepieciešami konsekventi un atkārtojami pagriezieni, var palīdzēt calibrate izsaukšana koda sākumā. Kalibrēšanas laikā robota ekrānā ir ieteicams parādīt ziņojumu, piemēram, “Kalibrēšana…”, pēc tam to atjaunināt uz “Kalibrēšana pabeigta”, lai atgādinātu jums (un ikvienam citam, kas izmanto robotu), ka šajā periodā robotam jāpaliek nekustīgam.
calibrate#
calibrate kalibrē žiroskopu. Kalibrēšana palīdz inerciālajam sensoram pareizi izmērīt pagriezienus, mērot un kompensējot sensora troksni un nobīdi 2 sekunžu periodā. Šajā laikā robotam jāpaliek pilnīgi nekustīgam uz stabilas virsmas. Kustība kalibrēšanas laikā var radīt neprecīzus rezultātus.
VEX roboti mēģina automātiski kalibrēties pēc iedarbināšanas, gaidot, līdz tie vairs neuztver kustību. Tomēr, ja robots iedarbināšanas laikā tiek nests vai pārvietots, sensors var neveikt pareizu kalibrēšanu vai iegūt nepareizu kalibrēšanu.
Usage:
robot.inertial.calibrate()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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 atgriež Būla vērtību, kas norāda, vai inerciālais sensors kalibrē.
True— Inerciālais sensors kalibrējas.False— Inerciālais sensors nekalibrē.
Usage:
robot.inertial.is_calibrating()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# 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)