Inertia-anturi#
Johdanto#
inertial -luokkaa käytetään älyporttiin kytketyn V5-inertia-anturin tietojen ohjaamiseen ja käyttämiseen.
V5-inertia-anturi mittaa robotin liikettä ja kääntymistä. 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.
Luokanrakentajat#
inertial(
int32_t index,
turnType dir = turnType::right );
Luokan tuhoaja#
Tuhoaa inertiaalisen inertial objektin ja vapauttaa siihen liittyvät resurssit.
~inertial();
Parametrit#
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Älyportti, johon inertia-anturi on kytketty, kirjoitetaan muodossa |
|
|
Valinnainen. Suunta, joka palauttaa positiivisia arvoja:
|
Esimerkkejä#
// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
Jäsenten toiminnot#
inertial -luokka sisältää seuraavat jäsenfunktiot:
heading— Palauttaa anturin suunnan.rotation— Palauttaa anturin kääntymisasteen.setHeading— Asettaa anturin nykyisen suunnan uuteen suunta-arvoon.setRotation— Asettaa anturin nykyisen pyörimissuunnan uuteen pyörimisarvoon.calibrate— Kalibroi inertia-anturin.resetHeading— Palauttaa anturin nykyisen suunnan 0 asteeseen.resetRotation— Palauttaa anturin nykyisen kierron arvoon 0 astetta.isCalibrating— Palauttaa, onko inertia-anturi parhaillaan kalibroimassa.changed— Rekisteröi takaisinkutsufunktion, joka suoritetaan, kun otsikko muuttuu.installed— Palauttaa, onko inertia-anturi asennettu.acceleration— Palauttaa, kuinka nopeasti anturi kiihtyy tai hidastuu valitulla akselilla.gyroRate— Palauttaa anturin pyörimisnopeuden valitulla akselilla.orientation— Palauttaa inertia-anturin vierintä-, kallistus- tai kääntökulman.collision— Rekisteröi takaisinkutsufunktion, joka suoritetaan, kun törmäys havaitaan.setTurnType— Asettaa, mikä kääntymissuunta palauttaa positiivisia arvoja.getTurnType— Palauttaa arvon, jonka mukaan kääntymissuunta tuottaa positiivisia arvoja.
Ennen minkään inertial jäsenfunktion kutsumista on luotava inertial instanssi, kuten alla on esitetty:
/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);
heading#
Suunta on anturin osoittama suunta, mitattuna asteina välillä 0 - 359,99. Tämä funktio palauttaa anturin nykyisen suunnan.
Lähtösuunta on 0 astetta. Jos anturi kääntyy yli 359,99 asteen, suunta palautuu takaisin 0 asteeseen.
Available Functionsdouble heading( rotationUnits units = degrees );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Suuntayksikkö:
|
Palauttaa arvon double joka edustaa anturin nykyistä suuntaa määritetyissä yksiköissä.
Otsikon arvo kiertyy 0 ja 359,99 asteen välille. Käytä
rotationsaadaksesi jatkuvan kierron arvon.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Palauttaa inertia-anturin nykyisen pyörimisliikkeen.
Kierto ilmaisee, kuinka paljon anturi on kääntynyt. Toisin kuin suunnassa, kierto voi kasvaa yli 359,99 asteen tai laskea alle 0 asteen. Esimerkiksi kahden täyden käännöksen tekeminen oikealle palauttaa 720 asteen kiertoliikkeen. Yhden täyden käännöksen tekeminen vasemmalle 0 asteesta palauttaa -360 asteen kiertoliikkeen.
Available Functionsdouble rotation( rotationUnits units = degrees );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Pyörimisyksikkö:
|
Palauttaa arvon double joka edustaa nykyistä kiertoa määritetyissä yksiköissä.
Kiertoarvo on jatkuva eikä kierry 0 ja 359,99 asteen välillä. Käytä
headingpäästäksesi kierretyn otsikon arvoon.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Suunta on anturin suunta, mitattuna asteina välillä 0 - 359,99. Tämä funktio muuttaa inertia-anturin nykyisen suunnan uudeksi suunta-arvoksi.
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.
Available Functionsvoid setHeading( double value, rotationUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Anturille asetettava suunta-arvo asteina. Tämä voi olla arvo väliltä 0–359,99. |
|
|
Suuntayksikkö:
|
Tämä funktio ei palauta arvoa.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
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. Tämä funktio 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.
Available Functionsvoid setRotation( double value, rotationUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Anturille asetettava kiertoarvo asteina. Tämä voi olla kokonaisluku tai desimaaliluku. |
|
|
Pyörimisyksikkö:
|
Tämä funktio ei palauta arvoa.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
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.
Available Functionsvoid calibrate( );
Tämä funktio ei hyväksy parametreja.
Return ValuesTämä funktio ei palauta arvoa.
NotesAnturin tulisi pysyä paikallaan kalibroinnin aikana.
Käytä
isCalibratingmäärittääksesi, milloin kalibrointi on valmis.
resetHeading#
Palauttaa inertia-anturin nykyisen suunnan 0 asteeseen.
Tämän funktion käytön jälkeen anturin nykyisestä suunnasta tulee uusi 0 asteen suunta.
Available Functionsvoid resetHeading();
Tämä funktio ei ota vastaan parametreja.
Return ValuesTämä funktio ei palauta arvoa.
resetRotation#
Palauttaa inertia-anturin nykyisen pyörimiskulman 0 asteeseen.
Tämän toiminnon käytön jälkeen anturi seuraa tulevia käännöksiä uudesta 0 asteen kiertoarvosta.
Available Functionsvoid resetRotation();
Tämä funktio ei ota vastaan parametreja.
Return ValuesTämä funktio ei palauta arvoa.
isCalibrating#
Palauttaa tiedon siitä, kalibroidaanko inertia-anturia parhaillaan.
Available Functionsbool isCalibrating();
Tämä funktio ei ota vastaan parametreja.
Return ValuesPalauttaa totuusarvon, joka ilmaisee, kalibroiko inertia-anturi:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
Rekisteröi takaisinkutsufunktion, joka suoritetaan, kun inertia-anturin suunta-arvo muuttuu.
Available Functionsvoid changed( void (* callback)(void) );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Osoitin funktioon, jota kutsutaan, kun otsikon arvo muuttuu. Funktio ei saa ottaa parametreja ja palauttaa arvon |
Tämä funktio ei palauta arvoa.
ExamplesMäärittele takaisinkutsufunktio (
int main())// Display the heading when the Inertial Sensor's heading value changes. void onHeadingChanged() { Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Heading: %.2f", myInertial.heading()); }Rekisteröi takaisinkutsu
int main()int main() { // Run onHeadingChanged when the Inertial Sensor's heading value changes. myInertial.changed(onHeadingChanged); }
installed#
Palauttaa, onko inertia-anturi asennettu ja kytketty.
Available Functionsbool installed();
Tämä funktio ei ota vastaan parametreja.
Return ValuesPalauttaa totuusarvon, joka ilmaisee, onko inertia-anturi asennettu ja kytketty:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
Kiihtyvyys ilmaisee, kuinka nopeasti anturi kiihtyy tai hidastuu. Tämä funktio palauttaa inertia-anturin kiihtyvyyden valitulla akselilla välillä -4,0 G - 4,0 G.
G on kiihtyvyyden mittayksikkö. 1 G on suunnilleen painovoiman aiheuttama kiihtyvyys paikallaan istuessasi. Arvo voi olla positiivinen tai negatiivinen riippuen kiihtyvyyden suunnasta valitulla akselilla.
double acceleration( axisType axis );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Kiihtyvyyden mittausakseli:
|
Palauttaa luvun double joka edustaa kiihtyvyyttä määritetyn akselin suuntaisesti yksiköissä G (gravitaatioyksikkö).
Kiihtyvyysarvot ilmoitetaan yksiköissä
G.
gyroRate#
Gyroskooppinopeus on inertia-anturin pyörimisnopeus. Tämä funktio palauttaa inertia-anturin nykyisen pyörimisnopeuden valitulla akselilla.
Arvo voi olla positiivinen tai negatiivinen riippuen siitä, mihin suuntaan anturi pyörii kyseisellä akselilla.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Akseli, josta gyroskoopin nopeus palautetaan:
|
|
|
Gyroskoopin nopeusyksikkö:
|
Palauttaa luvun double joka edustaa nykyistä pyörimisnopeutta määritetyn akselin suuntaisesti valituissa yksiköissä.
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);
Brain.Screen.print(myInertial.gyroRate(zaxis, dps));
Drivetrain.stop();
orientation#
Suunta on inertia-anturin nykyinen kulma valitulla akselilla. Tämä funktio palauttaa inertia-anturin nykyisen suunnan määritetyllä akselilla.
Valittu x-, y- tai z-akseli vastaa yhtä anturin suunta-akseleista.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Akseli, jolle suunta palautetaan:
|
|
|
The orientation unit:
|
Palauttaa luvun double joka edustaa valittua suuntakulmaa määritetyissä yksiköissä.
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1,1);
// Show the Inertial Sensor's orientation value
// for roll in degrees
double orient = myInertial.orientation(xaxis, deg);
Brain.Screen.print("%f", orient);
wait(0.1, seconds);
}
collision#
Rekisteröi takaisinkutsufunktion, joka suoritetaan, kun inertia-anturi havaitsee äkillisen iskun tai törmäyksen.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Osoitin funktioon, jota kutsutaan törmäyksen havaittaessa. Takaisinkutsufunktion on hyväksyttävä seuraavat parametrit:
void. |
Tämä funktio ei palauta arvoa.
ExamplesMäärittele takaisinkutsufunktio (
int main())// Display a message when the Inertial Sensor detects a collision. void onCollision(axisType axis, double x, double y, double z) { Brain.Screen.print("Collision detected!"); }Rekisteröi takaisinkutsu
int main()int main() { // Run onCollision when the Inertial Sensor detects a collision. myInertial.collision(onCollision); }
setTurnType#
Asettaa, mitkä kääntymissuunnat palauttavat positiivisia arvoja.
Available Functionsvoid setTurnType( turnType dir );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Positiivisia arvoja palauttava suunta:
|
Tämä funktio ei palauta arvoa.
NotesTämä asetus vaikuttaa siihen, miten
headingjarotationraportoivat positiiviset ja negatiiviset arvot.Tämän funktion kutsuminen korvaa inertiaaliobjektin
inertialyhteydessä määritetyndirarvon.
getTurnType#
Palautussuuntaan kääntyvät arvot tuottavat positiivisia arvoja.
Available FunctionsturnType getTurnType();
Tämä funktio ei ota vastaan parametreja.
Return ValuesPalauttaa arvon turnType joka osoittaa, mikä suunta tuottaa positiivisia arvoja:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
This value is set during construction of the
inertialobject or by callingsetTurnType.