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 |
|---|---|
|
Pēc izvēles. Virziena mērvienība: |
# 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 |
|---|---|
|
Pēc izvēles. Rotācijas vienība: |
# 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.
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 |
|---|---|
|
Sensora iestatītā virziena vērtība grādos. Tā var būt vērtība no 0 līdz 359,99. |
|
Pēc izvēles. Virziena mērvienība: |
# 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 |
|---|---|
|
Sensora rotācijas vērtība grādos. Tā var būt vesels skaitlis vai decimālskaitlis (peldošs skaitlis). |
|
Pēc izvēles. Rotācijas vienība: |
# 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 |
|---|---|
|
Funkcija, kas darbojas, mainoties inerciālā sensora virzienam. |
|
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:
|
# 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 |
|---|---|
|
Ass, no kuras jāatgriež žiroskopa ātrums:
|
|
Pēc izvēles. Žiroskopijas ātruma mērvienība:
|
# 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 |
|---|---|
|
Atgriešanās orientācijas leņķis:
|
|
Pēc izvēles. Orientācijas mērvienība: |
# 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 |
|---|---|
|
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ā |
# 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)


