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

units

Pasirinktinai. Krypties vienetas: DEGREES (numatytasis) arba TURNS

# 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

units

Pasirinktinai. Pasukimo vienetas: DEGREES (numatytasis) arba TURNS

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

IQ smegenys su ekranu, pakreiptu į dešinę, kur x, y ir z ašis žymi rodyklės, prasidedančios ekrano centre ir besitęsiančios į išorę. Raudona rodyklė, pažymėta x, rodo į dešinę, žalia rodyklė, pažymėta y, tęsiasi į priekį, o mėlyna rodyklė, pažymėta z, rodo žemyn.Tas pats vaizdas kaip ir ankstesnis, dabar smegenų ekranas pakreiptas į kairę, o x, y ir z rodyklės išlaiko savo orientaciją.Tas pats vaizdas kaip ir ankstesnis, dabar smegenų ekranas nukreiptas į viršų, tarsi būtų padėtas ant plokščio paviršiaus. X, y ir z orientacija ta pati.

„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

value

Jutiklio krypties vertė laipsniais. Tai gali būti vertė nuo 0 iki 359,99.

units

Pasirinktinai. Krypties vienetas: DEGREES (numatytasis) arba TURNS

# 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

value

Jutiklio sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius arba dešimtainis skaičius (slankioji trupmena).

units

Pasirinktinai. Pasukimo vienetas: DEGREES (numatytasis) arba TURNS

# 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

callback

Funkcija, kuri paleidžiama, kai pasikeičia inercinio jutiklio kryptis.

arg

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:

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

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

axis

Ašis, iš kurios reikia grąžinti giroskopo greitį:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Pasirinktinai. Giroskopo dažnio vienetas:

  • DPS (numatytasis) — laipsniai per sekundę
  • RPM — apsisukimai per minutę
  • 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#

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

axis

Grįžimo orientacijos kampas:

  • ROLL
  • PITCH
  • YAW

units

Pasirinktinai. Orientacijos vienetas: DEGREES (numatytasis) arba 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)

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

smartport

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 PORTx, kur x yra prievado numeris.

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