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.

VEX AIM kodēšanas robots ar zilu bultiņu, kas vērsta uz leju no robota centra. Ap zilo bultiņu melna izliekta bultiņa norāda pulksteņrādītāja virzienā, norādot pozitīvo novirzes virzienu.

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.

VEX AIM kodēšanas robots ar zaļu bultiņu, kas stiepjas robota priekšpusē, AI redzes sensora centrā. Ap zaļo bultiņu melna bultiņa izliecas pretēji pulksteņrādītāja virzienam, norādot pozitīvo ripošanas virzienu.

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.

VEX AIM kodēšanas robots ar sarkanu bultiņu, kas stiepjas no robota sāniem zem VEX logotipa. Ap sarkano bultiņu melna bultiņa izliecas pretēji pulksteņrādītāja virzienam, norādot pozitīvo soļa virzienu.

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

heading

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

callback

Funkcija, kas iepriekš definēta izpildei, kad tiek konstatēta sadursme.

arg

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

sensitivity

Sadursmes jutība:

  • HIGH — Visjutīgākā; nosaka mazākus triecienus un aktivizēšanu pie 1G.
  • NORMAL — Noklusējuma jutība; nosaka mērenus triecienus un aktivizēšanu pie 1,5G.
  • LOW — Vismazāk jutīgā; nosaka spēcīgākus triecienus un aktivizēšanu pie 2G.

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.

VEX AIM kodēšanas robots ar virziena bultiņām, kas stiepjas no robota centra. Zaļa bultiņa ar uzrakstu uz priekšu stiepjas no robota priekšpuses, zila bultiņa ar uzrakstu uz leju stiepjas no robota apakšas un sarkana bultiņa ar uzrakstu pa labi stiepjas no robota sāniem zem VEX logotipa.

Lietojums:

robot.inertial.get_acceleration(type)

Parametri

Apraksts

type

Ass, uz kuras mērīt paātrinājumu:

  • DOWNWARD — Mēra paātrinājumu robota vertikālajā virzienā.
  • FORWARD — Mēra paātrinājumu robota virzienā no priekšpuses uz aizmuguri.
  • RIGHTWARD — Mēra paātrinājumu robota virzienā no sāniem uz sāniem.

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

VEX AIM kodēšanas robots ar virziena bultiņām, kas stiepjas no robota centra. No robota priekšpuses stiepjas zaļa bultiņa ar uzrakstu "roll" (rullis), un ap to ir melna izliekta bultiņa, kas vērsta pretēji pulksteņrādītāja virzienam. No robota apakšas stiepjas zila bultiņa ar uzrakstu "Yaw" (zirgs), un ap to ir melna izliekta bultiņa, kas vērsta pulksteņrādītāja virzienā. Un no robota sāniem zem VEX logotipa stiepjas sarkana bultiņa ar uzrakstu "Pitch" (pikselis), un ap to ir melna izliekta bultiņa, kas vērsta pretēji pulksteņrādītāja virzienam.

Usage:
robot.inertial.get_turn_rate(axis)

Parametri

Apraksts

axis

Kuru orientāciju atgriezt:

  • YAW
  • ROLL
  • PITCH
# 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)