Inercinis#
Įvadas#
IQ (2-osios kartos) smegenys turi įmontuotą inercinį jutiklį. Šis jutiklis matuoja, kaip juda ir sukasi smegenys.
Inercinis jutiklis tam naudoja dvi dalis. Giroskopas matuoja posūkius, pvz., kryptį, sukimąsi, giroskopo greitį ir orientaciją. Akselerometras matuoja judėjimo pokyčius, pvz., pagreitėjimą arba sulėtėjimą išilgai x, y ir z ašių.
Šiame puslapyje kaip inercinio jutiklio pavadinimo pavyzdys naudojamas brain_inertial Jei reikia, pakeiskite jį savo sukonfigūruotu pavadinimu.
Žemiau pateikiamas visų galimų metodų sąrašas:
Orientacija – nuskaitykite ir valdykite kryptį, sukimąsi ir jutiklių kalibravimą.
heading– Grąžina jutiklio kryptį nuo 0 iki 359,99 laipsnių.rotation— Grąžina, kiek pasisuko jutiklis.calibrate– Kalibruoja inercinį jutiklį.set_heading– Nustato inercinio jutiklio dabartinę kryptį į naują krypties reikšmę.set_rotation— Nustato inercinio jutiklio dabartinį sukimąsi į naują sukimosi reikšmę.is_calibrating— Grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.reset_heading– Inercinio jutiklio dabartinę kryptį nustato į 0 laipsnių.reset_rotation– Atkuria inercinio jutiklio dabartinį sukimosi kampą į 0 laipsnių.changed— Registruoja funkciją, kuri bus vykdoma, kai pasikeičia inercinio jutiklio kryptis.
Judesys – matuokite pagreitį, sukimosi greitį ir posvyrį.
acceleration– Grąžina, kaip greitai jutiklis greitėja arba lėtėja pasirinktoje ašyje.gyro_rate— Grąžina, kaip greitai jutiklis sukasi pasirinktoje ašyje.orientation— Grąžina inercinio jutiklio pasvirimo, posvyrio arba sukimosi kampą.
Konstruktoriai – rankiniu būdu inicijuokite ir konfigūruokite inercinį jutiklį.
Inertial– Sukuria inercinį jutiklį.
Orientacija#
heading#
Kryptis – tai jutiklio judėjimo kryptis, matuojama laipsniais nuo 0 iki 359,99. heading grąžina dabartinę jutiklio judėjimo kryptį.
Pradinė kryptis yra 0 laipsnių. Jei jutiklis pasisuka daugiau nei 359,99 laipsnio, kryptis grįžta prie 0 laipsnių.
Usage:
brain_inertial.heading(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Krypties vienetas: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Pasukimas rodo, kiek jutiklis 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ų. rotation grąžina inercinio jutiklio dabartinį sukimąsi.
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:
brain_inertial.rotation(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Pasukimo vienetas: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibruoja inercinį jutiklį. Visos paskesnės eilutės lauks, kol bus baigtas kalibravimas, prieš paleidžiant. Kalibravimas padeda jutikliui teisingai išmatuoti posūkius, matuojant ir kompensuojant jutiklio triukšmą ir poslinkį per tam tikrą laikotarpį. Šiuo laikotarpiu smegenys turi išlikti visiškai nejudančios ant stabilaus paviršiaus. Judėjimas kalibravimo metu gali duoti netikslius rezultatus.
„VEX Brain“ automatiškai bando sukalibruoti integruotą inercinį jutiklį kiekvieno projekto pradžioje. Tačiau jei robotas yra nešamas arba judinamas projekto pradžioje, jutiklis gali netinkamai sukalibruoti arba gauti neteisingą kalibravimą.
Usage:
brain_inertial.calibrate()
Parametras |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# 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#
Kryptis yra jutiklio kryptis, matuojama laipsniais nuo 0 iki 359,99. set_heading() pakeičia inercinio jutiklio dabartinę kryptį į naują krypties reikšmę.
Pavyzdžiui, jei jutiklis pasisuko į dešinę, nustačius 0 laipsnių kryptį, ta dešinėn nukreipta padėtis tampa nauja 0 laipsnių. Tada jutiklis gali sekti kitas kryptis pagal tą naują kryptį.
Usage:
brain_inertial.set_heading(value, units)
Parametrai |
Aprašymas |
|---|---|
|
Jutiklio krypties vertė laipsniais. Tai gali būti vertė nuo 0 iki 359,99. |
|
Pasirinktinai. Krypties vienetas: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Sukimas rodo, kiek jutiklis 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ų. set_rotation() pakeičia inercinio jutiklio dabartinę sukimosi reikšmę į naują.
Pavyzdžiui, jei jutiklis atliko du pilnus posūkius į dešinę, jo posūkio vertė bus 720 laipsnių. Nustačius posūkį į 0 laipsnių, posūkis bus atstatytas iš 720 į 0 laipsnių. Tada jutiklis galės sekti posūkius pagal tą naują vertę.
Usage:
brain_inertial.set_rotation(value, units)
Parametrai |
Aprašymas |
|---|---|
|
Jutiklio sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius arba dešimtainis skaičius (slankioji trupmena). |
|
Pasirinktinai. Pasukimo vienetas: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating grąžina, ar inercinis jutiklis šiuo metu kalibruojamas.
True— Inercinis jutiklis kalibruojamas.False— Inercinis jutiklis nekalibruojamas.
Usage:
brain_inertial.is_calibrating()
Parametras |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# 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 atstato inercinio jutiklio dabartinę kryptį į 0 laipsnių.
Panaudojus šį metodą, dabartinė jutiklio kryptis tampa nauja 0 laipsnių kryptimi.
Usage:
brain_inertial.reset_heading()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# 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 atstato inercinio jutiklio dabartinį sukimąsi į 0 laipsnių.
Panaudojus šį metodą, jutiklis seka būsimus posūkius nuo naujos 0 laipsnių sukimosi vertės.
Usage:
brain_inertial.reset_rotation()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
# 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 registruoja funkciją, kuri bus iškviečiama, kai pasikeičia inercinio jutiklio kryptis.
Usage:
brain_inertial.changed(callback, arg)
Parametrai |
Aprašymas |
|---|---|
|
Funkcija, kuri paleidžiama, kai pasikeičia inercinio jutiklio kryptis. |
|
Pasirinktinai. Argumentų rinkinys, kuris bus perduotas atgalinio iškvietimo 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)
Judesys#
acceleration#
Pagreitis rodo, kaip greitai jutiklis greitėja arba lėtėja. acceleration grąžina inercinio jutiklio pagreitį pasirinktoje ašyje nuo -4,0 G iki 4,0 G kaip slankiojo kablelio reikšmę.
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. Ašies parinktys yra XAXIS, YAXISir ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parametrai |
Aprašymas |
|---|---|
ašis |
Ašis, kuria matuojamas pagreitis:
|
# 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#
Giroskopo greitis nurodo inercinio jutiklio sukimosi greitį. gyro_rate grąžina dabartinį inercinio jutiklio sukimosi greitį pasirinktoje ašyje.
Reikšmė gali būti teigiama arba neigiama, priklausomai nuo jutiklio sukimosi krypties aplink tą ašį.
Usage:
brain_inertial.gyro_rate(axis, units)
Parametrai |
Aprašymas |
|---|---|
|
Ašis, iš kurios reikia grąžinti giroskopo greitį:
|
|
Pasirinktinai. Giroskopo dažnio vienetas:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Orientacija yra inercinio jutiklio dabartinis kampas pasirinktos sukimosi ašies atžvilgiu. orientation grąžina inercinio jutiklio posvyrį, polinkio kampą arba krypties posūkį.
Riedėjimas, posvyris ir sukimas apibūdina skirtingus jutiklio pakreipimo arba pasukimo būdus.
Usage:
brain_inertial.orientation(axis, units)
Parametrai |
Aprašymas |
|---|---|
|
Grįžimo orientacijos kampas:
|
|
Pasirinktinai. Orientacijos vienetas: |
# 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)
Konstruktoriai#
Konstruktoriai naudojami rankiniu būdu kurti Inertial objektus, pavyzdžiui, konfigūruojant inercinį jutiklį ne VEX code.
Inertial#
Inertial sukuria inercinį jutiklį.
Usage:
Inertial(smartport)
Parametras |
Aprašymas |
|---|---|
|
Pasirinktinai. Jei naudojate IQ (2-osios kartos) Brain integruotą inercinį jutiklį, išmaniojo prievado nereikia. Jei jungiate išorinį inercinį jutiklį, nurodykite išmanųjį prievadą, prie kurio prijungtas inercinis jutiklis, užrašytą kaip |
# 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)


