Inertiaalinen#
Johdanto#
IQ (2. sukupolvi) aivot sisältää sisäänrakennetun inertia-anturin. Tämä anturi mittaa aivojen liikettä ja pyörimistä.
Inertia-anturi käyttää tähän kahta osaa. Gyroskooppi mittaa kääntymistä, kuten suuntaa, pyörimistä, gyroskoopin nopeutta ja suuntaa. Kiihtyvyysanturi mittaa liikkeen muutoksia, kuten kiihtymistä tai hidastumista x-, y- ja z-akseleiden suuntaisesti.
Tällä sivulla käytetään esimerkkinä inertia-anturin nimeä brain_inertial Korvaa se tarvittaessa omalla määrittämälläsi nimellä.
Alla on luettelo kaikista käytettävissä olevista menetelmistä:
Suunta — Lue ja ohjaa suuntaa, kiertoa ja anturin kalibrointia.
heading— Palauttaa anturin suunnan väliltä 0–359,99 astetta.rotation— Palauttaa anturin kääntymisasteen.calibrate— Kalibroi inertia-anturin.set_heading— Asettaa inertia-anturin nykyisen suunnan uuteen suunta-arvoon.set_rotation— Asettaa inertia-anturin nykyisen pyörimissuunnan uuteen pyörimisarvoon.is_calibrating— Palauttaa, onko inertia-anturi parhaillaan kalibroimassa.reset_heading— Palauttaa inertia-anturin nykyisen suunnan 0 asteeseen.reset_rotation— Palauttaa inertia-anturin nykyisen pyörimiskulman arvoon 0 astetta.changed— Rekisteröi funktion suoritettavaksi, kun inertia-anturin suunta muuttuu.
Liike — Mittaa kiihtyvyyttä, pyörimisnopeutta ja kallistusta.
acceleration— Palauttaa, kuinka nopeasti anturi kiihtyy tai hidastuu valitulla akselilla.gyro_rate— Palauttaa anturin pyörimisnopeuden valitulla akselilla.orientation— Palauttaa inertia-anturin vierintä-, kallistus- tai kääntökulman.
Konstruktorit — Inertia-anturin manuaalinen alustaminen ja konfigurointi.
Inertial— Luo inertia-anturin.
Suuntautuminen#
heading#
Suunta on anturin osoittama suunta, mitattuna asteina välillä 0 - 359,99. heading palauttaa anturin nykyisen suunnan.
Lähtösuunta on 0 astetta. Jos anturi kääntyy yli 359,99 asteen, suunta palautuu takaisin 0 asteeseen.
Usage:
brain_inertial.heading(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kulmayksikkö: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Kierto ilmaisee, kuinka paljon anturi on kääntynyt asteina. Toisin kuin suunnassa, kierto voi kasvaa yli 359,99 asteen tai laskea alle 0 asteen. Projektin alussa kiertoarvoksi asetetaan 0 astetta. rotation palauttaa inertia-anturin nykyisen kiertoliikkeen.
Kääntyminen oikealle lisää kiertoa ja kääntäminen vasemmalle vähentää sitä. Esimerkiksi kaksi täyttä kierrosta oikealle palauttaa 720 asteen kiertoa. Yksi täysi kierros vasemmalle 0 asteesta palauttaa -360 asteen kiertoa.
Usage:
brain_inertial.rotation(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kiertoyksikkö: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibroi inertia-anturin. Kaikki seuraavat rivit odottavat kalibroinnin valmistumista ennen suorittamista. Kalibrointi auttaa anturia mittaamaan käännöksiä oikein mittaamalla ja kompensoimalla anturin kohinaa ja ajautumista tietyn ajanjakson ajan. Tänä aikana aivojen on pysyttävä täysin paikallaan vakaalla pinnalla. Liike kalibroinnin aikana voi tuottaa epätarkkoja tuloksia.
VEX Brain yrittää automaattisesti kalibroida sisäänrakennetun inertia-anturin jokaisen projektin alussa. Jos robottia kuitenkin kannetaan tai liikutetaan projektin alkaessa, anturin kalibrointi ei välttämättä onnistu tai kalibrointi voi olla virheellistä.
Usage:
brain_inertial.calibrate()
Parametri |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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#
Suunta on anturin suunta, mitattuna asteina välillä 0 - 359,99. set_heading() muuttaa inertia-anturin nykyisen suunnan uuteen suunta-arvoon.
Jos anturi on esimerkiksi kääntynyt oikealle ja suunnan asettaminen 0 asteeseen tekee oikealle osoittavasta asennosta uuden 0 asteen. Tämän jälkeen anturi voi seurata muita suuntia tämän uuden suunnan perusteella.
Usage:
brain_inertial.set_heading(value, units)
Parametrit |
Kuvaus |
|---|---|
|
Anturille asetettava suunta-arvo asteina. Tämä voi olla arvo väliltä 0–359,99. |
|
Valinnainen. Kulmayksikkö: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Kierto ilmaisee, kuinka paljon anturi on kääntynyt asteina. Toisin kuin suunnassa, kierto voi kasvaa yli 359,99 asteen tai laskea alle 0 asteen. Projektin alussa kiertoarvoksi asetetaan 0 astetta. set_rotation() muuttaa inertia-anturin nykyisen kiertoliikkeen uuteen arvoon.
Jos anturi on esimerkiksi tehnyt kaksi täyttä käännöstä oikealle, sen kiertoarvo on 720 astetta. Kierron asettaminen 0 asteeseen palauttaa kiertoarvon 720 asteesta 0 asteeseen. Tämän jälkeen anturi voi seurata kierroksia tämän uuden arvon perusteella.
Usage:
brain_inertial.set_rotation(value, units)
Parametrit |
Kuvaus |
|---|---|
|
Anturille asetettava kiertoarvo asteina. Tämä voi olla kokonaisluku tai desimaaliluku (liukuluku). |
|
Valinnainen. Kiertoyksikkö: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating palauttaa, onko inertia-anturi parhaillaan kalibroimassa.
True— Inertia-anturi kalibroi.False— Inertia-anturi ei kalibroi.
Usage:
brain_inertial.is_calibrating()
Parametri |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 nollaa inertia-anturin nykyisen suunnan 0 asteeseen.
Tämän menetelmän käytön jälkeen anturin nykyisestä suunnasta tulee uusi 0 asteen suunta.
Usage:
brain_inertial.reset_heading()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 nollaa inertia-anturin nykyisen pyörimiskulman 0 asteeseen.
Tämän menetelmän käytön jälkeen anturi seuraa tulevia käännöksiä uudesta 0 asteen kiertoarvosta.
Usage:
brain_inertial.reset_rotation()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# 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 rekisteröi funktion kutsuttavaksi, kun inertia-anturin suunta muuttuu.
Usage:
brain_inertial.changed(callback, arg)
Parametrit |
Kuvaus |
|---|---|
|
Funktio, joka suoritetaan, kun inertia-anturin suunta muuttuu. |
|
Valinnainen. Joukko argumentteja, jotka välitetään takaisinkutsufunktiolle. |
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)
Liike#
acceleration#
Kiihtyvyys ilmaisee, kuinka nopeasti anturi kiihtyy tai hidastuu. acceleration palauttaa inertia-anturin kiihtyvyyden valitulla akselilla välillä -4,0 G - 4,0 G, liukulukuna.
G on kiihtyvyyden yksikkö. 1 G on suunnilleen painovoiman aiheuttama kiihtyvyys, jonka tunnet paikallasi istuessasi.
Arvo voi olla positiivinen tai negatiivinen valitun akselin kiihtyvyyden suunnasta riippuen. Akseleiden vaihtoehdot ovat XAXIS, YAXISja ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parametrit |
Kuvaus |
|---|---|
akseli |
Kiihtyvyyden mittausakseli:
|
# 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#
Gyrosnopeus ilmaisee inertia-anturin pyörimisnopeuden. gyro_rate palauttaa inertia-anturin nykyisen pyörimisnopeuden valitulla akselilla.
Arvo voi olla positiivinen tai negatiivinen riippuen siitä, mihin suuntaan anturi pyörii kyseisellä akselilla.
Usage:
brain_inertial.gyro_rate(axis, units)
Parametrit |
Kuvaus |
|---|---|
|
Akseli, josta gyroskoopin nopeus palautetaan:
|
|
Valinnainen. Gyroskoopin nopeusyksikkö:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Suunta on inertia-anturin nykyinen kulma valitulla kääntöakselilla. orientation palauttaa inertia-anturin vierintäkulman, kallistuksen tai kääntökulman.
Rullaus, kallistus ja kääntö kuvaavat eri tapoja, joilla anturi voi kallistua tai kääntyä.
Usage:
brain_inertial.orientation(axis, units)
Parametrit |
Kuvaus |
|---|---|
|
Palautuskulman suuntaus:
|
|
Valinnainen. Suuntayksikkö: |
# 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)
Rakentajat#
Konstruktoreita käytetään Inertial -objektien manuaaliseen luomiseen, esimerkiksi inertia-anturin konfiguroinnissa VEXcoden ulkopuolella.
Inertial#
Inertial luo inertia-anturin.
Usage:
Inertial(smartport)
Parametri |
Kuvaus |
|---|---|
|
Valinnainen. Jos käytät IQ (2. sukupolvi) Brainin sisäänrakennettua inertia-anturia, älyporttia ei tarvita. Jos kytket ulkoisen inertia-anturin, määritä älyportti, johon inertia-anturi on kytketty, muodossa |
# 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)


