Inerciāls#

Ievads#

IQ (2. paaudzes) smadzenes ietver iebūvētu inerciālo sensoru. Šis sensors mēra, kā smadzenes kustas un griežas.

Inerciālais sensors šim nolūkam izmanto divas daļas. Žiroskops mēra pagriezienu, piemēram, virzienu, rotāciju, žiroskopa ātrumu un orientāciju. Akselerometrs mēra kustības izmaiņas, piemēram, paātrinājumu vai palēninājumu pa x, y un z asīm.

Šajā lapā kā inerciālā sensora nosaukuma piemērs tiek izmantots brain_inertial Ja nepieciešams, nomainiet to ar savu konfigurēto nosaukumu.

Zemāk ir visu pieejamo metožu saraksts:

Orientācija — nolasīt un kontrolēt virzienu, rotāciju un sensoru kalibrēšanu.

  • heading — Atgriež sensora virziena vērtību no 0 līdz 359,99 grādiem.

  • rotation — Atgriež, cik tālu sensors ir pagriezies.

  • calibrate — Kalibrē inerciālo sensoru.

  • set_heading — Iestata inerciālā sensora pašreizējo virzienu uz jaunu virziena vērtību.

  • set_rotation — Iestata inerciālā sensora pašreizējo rotāciju uz jaunu rotācijas vērtību.

  • is_calibrating — Atgriež, vai inerciālais sensors pašlaik kalibrē.

  • reset_heading — Atiestata inerciālā sensora pašreizējo virzienu uz 0 grādiem.

  • reset_rotation — Atiestata inerciālā sensora pašreizējo rotāciju uz 0 grādiem.

  • changed — Reģistrē funkciju, kas jāizpilda, mainoties inerciālā sensora virzienam.

Kustība — mēra paātrinājumu, rotācijas ātrumu un slīpumu.

  • acceleration — Atgriež, cik ātri sensors paātrinās vai palēninās pa atlasīto asi.

  • gyro_rate — Atgriež sensora rotācijas ātrumu pa atlasīto asi.

  • orientation — Atgriež inerciālā sensora rites, slīpuma vai novirzes leņķi.

Konstruktori — inerciālā sensora manuāla inicializācija un konfigurēšana.

  • Inertial — Izveido inerciālu sensoru.

Orientācija#

heading#

Virziens ir virziens, kurā atrodas sensors, mērīts grādos no 0 līdz 359,99. heading atgriež sensora pašreizējo virzienu.

Sākuma kurss ir 0 grādi. Ja sensors pagriežas virs 359,99 grādiem, kurss atgriežas pie 0 grādiem.

Usage:
brain_inertial.heading(units)

Parametri

Apraksts

units

Pēc izvēles. Virziena mērvienība: DEGREES (pēc noklusējuma) vai TURNS

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

rotation#

Rotācija ir sensora pagrieziena lielums, 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. rotation atgriež inerciālā sensora pašreizējo rotāciju.

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:
brain_inertial.rotation(units)

Parametri

Apraksts

units

Pēc izvēles. Rotācijas vienība: DEGREES (pēc noklusējuma) vai TURNS

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

calibrate#

calibrate kalibrē inerciālo sensoru. Visas nākamās rindas gaidīs kalibrēšanas pabeigšanu, pirms tās tiks palaistas. Kalibrēšana palīdz sensoram pareizi izmērīt pagriezienus, mērot un kompensējot sensora troksni un nobīdi noteiktā laika periodā. Šajā laikā smadzenēm jāpaliek pilnīgi nekustīgām uz stabilas virsmas. Kustība kalibrēšanas laikā var radīt neprecīzus rezultātus.

IQ smadzenes ar ekrānu, kas pagriezts pa labi, kur x, y un z asis attēlo bultiņas, kas sākas ekrāna centrā un stiepjas uz āru. Sarkana bultiņa, kas apzīmēta ar x, norāda uz labo pusi, zaļa bultiņa, kas apzīmēta ar y, stiepjas uz priekšu, un zila bultiņa, kas apzīmēta ar z, norāda uz leju.Tas pats attēls kā iepriekšējais, tagad ar smadzeņu ekrānu pagrieztu pa kreisi un x, y, z bultiņām saglabājot savu orientāciju.Tas pats attēls kā iepriekšējais, tagad ar smadzeņu ekrānu uz augšu, it kā tas būtu novietots uz virsmas. X, y un z orientācija ir tāda pati.

VEX Brain automātiski mēģina kalibrēt iebūvēto inerciālo sensoru katra projekta sākumā. Tomēr, ja robots projekta sākumā tiek nests vai pārvietots, sensors var nekalibrēties pareizi vai iegūt nepareizu kalibrēšanu.

Usage:
brain_inertial.calibrate()

Parametrs

Apraksts

Šai metodei nav parametru.

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

Virziens ir sensora vērsts virziens, mērīts grādos no 0 līdz 359,99. set_heading() maina inerciālā sensora pašreizējo virzienu uz jaunu virziena vērtību.

Piemēram, ja sensors ir pagriezies pa labi, virziena iestatīšana uz 0 grādiem padara šo labo pusi vērsto pozīciju par jauno 0 grādu. Pēc tam sensors var izsekot citiem virzieniem, pamatojoties uz šo jauno virzienu.

Usage:
brain_inertial.set_heading(value, units)

Parametri

Apraksts

value

Sensora iestatītā virziena vērtība grādos. Tā var būt vērtība no 0 līdz 359,99.

units

Pēc izvēles. Virziena mērvienība: DEGREES (pēc noklusējuma) vai TURNS

# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)

set_rotation#

Rotācija ir sensora pagrieziena lielums, 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. set_rotation() maina inerciālā sensora pašreizējo rotāciju uz jaunu vērtību.

Piemēram, ja sensors ir veicis divus pilnus pagriezienus pa labi, tā rotācijas vērtība būs 720 grādi. Iestatot rotāciju uz 0 grādiem, šī rotācija tiks atiestatīta no 720 uz 0 grādiem. Pēc tam sensors var izsekot rotācijām, pamatojoties uz šo jauno vērtību.

Usage:
brain_inertial.set_rotation(value, units)

Parametri

Apraksts

value

Sensora rotācijas vērtība grādos. Tā var būt vesels skaitlis vai decimālskaitlis (peldošs skaitlis).

units

Pēc izvēles. Rotācijas vienība: DEGREES (pēc noklusējuma) vai TURNS

# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)

is_calibrating#

is_calibrating atgriež, vai inerciālais sensors pašlaik kalibrē.

  • True — Inerciālais sensors kalibrējas.

  • False — Inerciālais sensors nekalibrē.

Usage:
brain_inertial.is_calibrating()

Parametrs

Apraksts

Šai metodei nav parametru.

# 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 atiestata inerciālā sensora pašreizējo virzienu uz 0 grādiem.

Pēc šīs metodes izmantošanas sensora pašreizējais virziens kļūst par jauno 0 grādu kursu.

Usage:
brain_inertial.reset_heading()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atiestata inerciālā sensora pašreizējo rotāciju uz 0 grādiem.

Pēc šīs metodes izmantošanas sensors seko līdzi turpmākajiem pagriezieniem, sākot no jaunās 0 grādu rotācijas vērtības.

Usage:
brain_inertial.reset_rotation()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 reģistrē funkciju, kas tiks izsaukta, mainoties inerciālā sensora virzienam.

Usage:
brain_inertial.changed(callback, arg)

Parametri

Apraksts

callback

Funkcija, kas darbojas, mainoties inerciālā sensora virzienam.

arg

Neobligāti. Argumentu kortežs, kas jānodod atzvanīšanas funkcijai.

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)

Kustība#

acceleration#

Paātrinājums norāda, cik ātri sensors paātrinās vai palēninās. acceleration atgriež inerciālā sensora paātrinājumu uz atlasītās ass no -4,0 G līdz 4,0 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. Asu opcijas ir XAXIS, YAXISun ZAXIS.

Usage:
brain_inertial.acceleration(axis)

Parametri

Apraksts

ass

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

  • XAXIS
  • YAXIS
  • ZAXIS

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

Žiroskopijas ātrums norāda, cik ātri rotē inerciālais sensors. gyro_rate atgriež inerciālā sensora pašreizējo griešanās ātrumu pa atlasīto asi.

Vērtība var būt pozitīva vai negatīva atkarībā no sensora griešanās virziena ap šo asi.

Usage:
brain_inertial.gyro_rate(axis, units)

Parametri

Apraksts

axis

Ass, no kuras jāatgriež žiroskopa ātrums:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Pēc izvēles. Žiroskopijas ātruma mērvienība:

  • DPS (pēc noklusējuma) — grādi sekundē
  • RPM — apgriezieni minūtē
  • PERCENT

# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()

orientation#

Orientācija ir inerciālā sensora pašreizējais leņķis uz atlasīto pagrieziena asi. orientation atgriež inerciālā sensora sasvēršanos, slīpumu vai novirzi.

Riteņošanās, slīpums un novirze apraksta dažādus veidus, kā sensors var sasvērties vai pagriezties.

Usage:
brain_inertial.orientation(axis, units)

Parametri

Apraksts

axis

Atgriešanās orientācijas leņķis:

  • ROLL
  • PITCH
  • YAW

units

Pēc izvēles. Orientācijas mērvienība: DEGREES (pēc noklusējuma) vai 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(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)

Konstruktori#

Konstruktori tiek izmantoti, lai manuāli izveidotu Inertial objektus, piemēram, konfigurējot inerciālo sensoru ārpus VEXkoda.

Inertial#

Inertial izveido inerciālu sensoru.

Usage:
Inertial(smartport)

Parametrs

Apraksts

smartport

Pēc izvēles. Ja izmantojat IQ (2. paaudzes) Brain iebūvēto inerciālo sensoru, viedports nav nepieciešams. Ja pievienojat ārēju inerciālo sensoru, norādiet viedportu, kuram inerciālais sensors ir pievienots, rakstot kā PORTx, kur x ir porta numurs.

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