Inertiaalinen#
Johdanto#
Inertia-anturi mittaa robotin liikettä ja kääntymistä.
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.
Alla on luettelo 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.gyro_rate— Palauttaa anturin pyörimisnopeuden valitulla akselilla.orientation— Palauttaa inertia-anturin vierintä-, kallistus- tai kääntökulman.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.reset_heading— Palauttaa inertia-anturin nykyisen suunnan 0 asteeseen.reset_rotation— Palauttaa inertia-anturin nykyisen pyörimiskulman arvoon 0 astetta.is_calibrating— Palauttaa, onko inertia-anturi parhaillaan kalibroimassa.changed— Rekisteröi funktion suoritettavaksi, kun inertia-anturin arvo muuttuu.installed— Tarkistaa, onko inertia-anturi asennettu.
Liike — Mittaa kiihtyvyyttä, törmäyksiä ja kääntymissuunnan käyttäytymistä.
acceleration— Palauttaa, kuinka nopeasti anturi kiihtyy tai hidastuu valitulla akselilla.collision— Rekisteröi funktion suoritettavaksi, kun inertia-anturi havaitsee törmäyksen.set_turn_type— Asettaa, mitkä käännössuunnat palauttavat positiivisia suunta-arvoja.get_turn_type— Palauttaa arvon, jonka käännössuunta palauttaa positiivisiksi suunta-arvoiksi.
Rakentaja
Inertial– Luo inertia-anturin.
Suuntautuminen#
heading#
Suunta on anturin osoittama suunta, mitattuna asteina välillä 0 - 359,99. heading palauttaa anturin nykyisen suunnan liukulukuna.
Lähtösuunta on 0 astetta. Jos anturi kääntyy yli 359,99 asteen, suunta palautuu takaisin 0 asteeseen.
Usage:
inertial_1.heading(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kulmayksikkö: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.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 kiertonopeuden liukulukuna.
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:
inertial_1.rotation(units)
Parametrit |
Kuvaus |
|---|---|
|
Valinnainen. Kiertoyksikkö: |
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())
gyro_rate#
Gyrosnopeus ilmaisee inertia-anturin pyörimisnopeuden. gyro_rate palauttaa inertia-anturin nykyisen pyörimisnopeuden valitulla akselilla liukulukuna.
Arvo voi olla positiivinen tai negatiivinen riippuen siitä, mihin suuntaan anturi pyörii kyseisellä akselilla.
Usage:
inertial_1.gyro_rate(axis, units)
Parametrit |
Kuvaus |
|---|---|
|
Akseli, josta gyroskoopin nopeus palautetaan:
|
|
Valinnainen. Gyroskoopin nopeusyksikkö:
|
# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()
orientation#
Suunta on inertia-anturin nykyinen kulma valitulla kääntöakselilla. orientation palauttaa inertia-anturin vierintäkulman, kallistuksen tai kääntökulman välillä -180,00 - 180,00 astetta liukulukuna.
Rullaus, kallistus ja kääntö kuvaavat eri tapoja, joilla anturi voi kallistua tai kääntyä.
Usage:
inertial_1.orientation(type, units)
Parametrit |
Kuvaus |
|---|---|
|
Palautettava suuntakulma:
|
|
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(inertial_1.orientation(AxisType.ROLL, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
calibrate#
calibrate kalibroi inertia-anturin.
Kalibrointi auttaa anturia mittaamaan käännökset oikein. Pidä anturi paikallaan kalibroinnin aikana. Jos anturi liikkuu kalibroinnin aikana, suunta-, kierto-, gyroskooppinopeus- ja suunta-arvot eivät välttämättä mittaudu oikein.
Projekti odottaa kalibroinnin valmistumista ennen seuraavan koodirivin suorittamista.
Usage:
inertial_1.calibrate()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
brain.screen.clear()
brain.screen.print("Inertial Sensor Calibrating")
wait(50, MSEC)
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:
inertial_1.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
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)
set_rotation#
Kierto ilmaisee, kuinka paljon anturi on kääntynyt, mitattuna 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:
inertial_1.set_rotation(value, units)
Parametrit |
Kuvaus |
|---|---|
|
Anturille asetettava kiertoarvo asteina. Tämä voi olla kokonaisluku tai desimaaliluku (liukuluku). |
|
Valinnainen. Kiertoyksikkö: |
# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)
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:
inertial_1.reset_heading()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
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:
inertial_1.reset_rotation()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
is_calibrating#
is_calibrating palauttaa, onko inertia-anturi parhaillaan kalibroimassa.
True— Inertia-anturi kalibroi.False— Inertia-anturi ei kalibroi.
Usage:
inertial_1.is_calibrating()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
changed#
changed rekisteröi funktion kutsuttavaksi aina, kun inertia-anturin arvo muuttuu.
Usage:
inertial_1.changed(callback, arg)
Parametrit |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan, kun inertia-anturin arvo muuttuu. |
|
Valinnainen. Tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktioiden käyttö parametrien kanssa. |
def my_function():
brain.screen.print("Value changed!!")
# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)
installed#
installed tarkistaa, onko inertia-anturi asennettu.
True— Inertia-anturi on asennettu.False— Inertia-anturia ei ole asennettu.
Usage:
inertial_1.installed()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
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. Akselivaihtoehdot ovat AxisType.XAXIS, AxisType.YAXISja AxisType.ZAXIS.
Usage:
inertial_1.acceleration(type)
Parametrit |
Kuvaus |
|---|---|
|
Kiihtyvyyden mittausakseli:
|
# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)
collision#
collision rekisteröi funktion kutsuttavaksi aina, kun inertia-anturi havaitsee äkillisen iskun tai törmäyksen.
Usage:
inertial_1.collision(callback, arg)
Parametrit |
Kuvaus |
|---|---|
|
Aiemmin määritelty function, joka suoritetaan, kun törmäys havaitaan. |
|
Valinnainen. Tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktioiden käyttö parametrien kanssa. |
def my_function():
brain.screen.print("Collision!")
# Call my_function whenever a collision is detected
inertial_1.collision(my_function)
set_turn_type#
set_turn_type asettaa, mikä käännössuunta palauttaa positiivisia suunta-arvoja.
Usage:
inertial_1.set_turn_type(turntype)
Parametrit |
Kuvaus |
|---|---|
|
Asetettava käännöstyyppi:
|
get_turn_type#
get_turn_type palauttaa mikä käännössuunta palauttaa positiiviset suunta-arvot.
LEFT— Vasemmalle kääntyminen palauttaa positiiviset suunta-arvot.RIGHT— Oikealle kääntyminen palauttaa positiiviset suunta-arvot.
Usage:
inertial_1.get_turn_type()
Parametrit |
Kuvaus |
|---|---|
Tällä menetelmällä ei ole parametreja. |
Rakentajat#
Inertial#
Inertial luo inertia-anturin.
Usage:
Inertial(smartport)
Parametrit |
Kuvaus |
|---|---|
|
Älyportti, johon inertia-anturi on kytketty, kirjoitetaan muodossa |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)