Tröghets#
Introduktion#
IQ (2:a generationen) Brain har en inbyggd tröghetssensor. Denna sensor mäter hur hjärnan rör sig och vrider sig.
Tröghetssensorn använder två delar för att göra detta. Gyroskopet mäter svängningar, såsom kurs, rotation, gyrohastighet och orientering. Accelerometern mäter förändringar i rörelse, såsom att öka eller minska hastigheten längs x-, y- och z-axlarna.
Den här sidan använder brain_inertial som exempelnamn för tröghetssensorn. Ersätt det med ditt eget konfigurerade namn efter behov.
Nedan följer en lista över alla tillgängliga metoder:
Orientering — Läs och kontrollera kurs, rotation och sensorkalibrering.
heading— Returnerar riktningen som sensorn är vänd i, från 0 till 359,99 grader.rotation— Returnerar hur långt sensorn har vridit sig.calibrate— Kalibrerar tröghetssensorn.set_heading— Ställer in tröghetssensorns aktuella kurs till ett nytt kursvärde.set_rotation— Ställer in tröghetssensorns aktuella rotation till ett nytt rotationsvärde.is_calibrating— Returnerar om tröghetssensorn för närvarande kalibrerar.reset_heading— Återställer tröghetssensorns aktuella kurs till 0 grader.reset_rotation— Återställer tröghetssensorns aktuella rotation till 0 grader.changed— Registrerar en funktion som ska köras när tröghetssensorns kurs ändras.
Rörelse — Mät acceleration, rotationshastighet och lutning.
acceleration— Returnerar hur snabbt sensorn accelererar eller saktar ner på den valda axeln.gyro_rate— Returnerar hur snabbt sensorn roterar på den valda axeln.orientation— Returnerar tröghetssensorns rullnings-, lutnings- eller girningsvinkel.
Konstruktörer — Initiera och konfigurera en tröghetssensor manuellt.
Inertial— Skapar en tröghetssensor.
Orientering#
heading#
En kurs är den riktning sensorn är vänd i, mätt i grader från 0 till 359,99. heading returnerar sensorns aktuella kurs.
Startkursen är 0 grader. Om sensorn svänger förbi 359,99 grader, återgår kursen till 0 grader.
Usage:
brain_inertial.heading(units)
Parametrar |
Beskrivning |
|---|---|
|
Valfritt. Kursenheten: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Rotation är hur mycket sensorn har vridit sig, mätt i grader. Till skillnad från riktning kan rotationen öka över 359,99 grader eller minska under 0 grader. I början av ett projekt är rotationsvärdet inställt på 0 grader. rotation returnerar tröghetssensorns aktuella rotation.
Om du vrider åt höger ökar rotationen och om du vrider åt vänster minskar den. Om du till exempel gör två hela varv åt höger ger du en rotation på 720 grader. Om du vrider ett helt varv åt vänster från 0 grader ger du en rotation på -360 grader.
Usage:
brain_inertial.rotation(units)
Parametrar |
Beskrivning |
|---|---|
|
Valfritt. Rotationsenheten: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibrerar tröghetssensorn. Alla efterföljande rader väntar på att kalibreringen är klar innan de körs. Kalibrering hjälper sensorn att mäta svängar korrekt genom att mäta och kompensera för sensorbrus och drift under en viss period. Under denna tid måste hjärnan förbli helt stilla på en stabil yta. Rörelse under kalibrering kan ge felaktiga resultat.
VEX Brain försöker automatiskt kalibrera den inbyggda tröghetssensorn i början av varje projekt. Om roboten bärs eller flyttas under projektstarten kan det dock hända att sensorn inte kalibrerar korrekt eller ger felaktig kalibrering.
Usage:
brain_inertial.calibrate()
Parameter |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
# 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#
En kurs är den riktning sensorn är vänd i, mätt i grader från 0 till 359,99. set_heading() ändrar tröghetssensorns aktuella kurs till ett nytt kursvärde.
Om sensorn till exempel har vridit åt höger, och kursen ställs in på 0 grader, blir den högervända positionen den nya 0 grader. Då kan sensorn spåra andra kurser baserat på den nya riktningen.
Usage:
brain_inertial.set_heading(value, units)
Parametrar |
Beskrivning |
|---|---|
|
Kursvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett värde från 0 till 359,99. |
|
Valfritt. Kursenheten: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Rotation är hur mycket sensorn har vridit sig, mätt i grader. Till skillnad från riktning kan rotationen öka över 359,99 grader eller minska under 0 grader. I början av ett projekt sätts rotationsvärdet till 0 grader. set_rotation() ändrar tröghetssensorns aktuella rotation till ett nytt värde.
Om sensorn till exempel har gjort två hela varv åt höger blir dess rotationsvärde 720 grader. Om rotationen ställs in på 0 grader återställs den rotationen från 720 till 0 grader. Sedan kan sensorn spåra rotationer baserat på det nya värdet.
Usage:
brain_inertial.set_rotation(value, units)
Parametrar |
Beskrivning |
|---|---|
|
Rotationsvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett heltal eller ett decimaltal (flyttal). |
|
Valfritt. Rotationsenheten: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating returnerar om tröghetssensorn för närvarande kalibrerar.
True— Tröghetssensorn kalibrerar.False— Tröghetssensorn kalibrerar inte.
Usage:
brain_inertial.is_calibrating()
Parameter |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
# 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 återställer tröghetssensorns aktuella kurs till 0 grader.
Efter att den här metoden har använts blir sensorns aktuella riktning den nya 0-gradersriktningen.
Usage:
brain_inertial.reset_heading()
Parametrar |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
# 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 återställer tröghetssensorns aktuella rotation till 0 grader.
Efter att den här metoden har använts spårar sensorn framtida svängar från det nya rotationsvärdet på 0 grader.
Usage:
brain_inertial.reset_rotation()
Parametrar |
Beskrivning |
|---|---|
Den här metoden har inga parametrar. |
# 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 registrerar en funktion som ska anropas när tröghetssensorns kurs ändras.
Usage:
brain_inertial.changed(callback, arg)
Parametrar |
Beskrivning |
|---|---|
|
En funktion som körs när tröghetssensorns kurs ändras. |
|
Valfritt. En tupel med argument som ska skickas till callback-funktionen. |
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)
Rörelse#
acceleration#
Acceleration är hur snabbt sensorn ökar eller saktar ner. acceleration returnerar tröghetssensorns acceleration på den valda axeln, från -4,0 G till 4,0 G, som ett flyttal.
En G är en enhet som används för att mäta acceleration. 1 G motsvarar den acceleration du känner från gravitationen när du sitter stilla.
Värdet kan vara positivt eller negativt beroende på accelerationsriktningen på den valda axeln. Axelalternativen är XAXIS, YAXISoch ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parametrar |
Beskrivning |
|---|---|
axel |
Axeln att mäta acceleration på:
|
# 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#
Gyrohastigheten är hur snabbt tröghetssensorn roterar. gyro_rate returnerar tröghetssensorns aktuella rotationshastighet på den valda axeln.
Värdet kan vara positivt eller negativt beroende på i vilken riktning sensorn roterar på den axeln.
Usage:
brain_inertial.gyro_rate(axis, units)
Parametrar |
Beskrivning |
|---|---|
|
Axeln som gyrohastigheten ska returneras från:
|
|
Valfritt. Gyrohastighetsenhet:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Orientering är tröghetssensorns aktuella vinkel på en vald vridaxel. orientation returnerar tröghetssensorns rullning, lutning eller girning.
Rulla, luta och gira beskriver olika sätt som sensorn kan luta eller vrida sig.
Usage:
brain_inertial.orientation(axis, units)
Parametrar |
Beskrivning |
|---|---|
|
Orienteringsvinkeln för retur:
|
|
Valfritt. Orienteringsenheten: |
# 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)
Konstruktörer#
Konstruktorer används för att manuellt skapa Inertial objekt, till exempel när man konfigurerar en tröghetssensor utanför VEXcode.
Inertial#
Inertial skapar en tröghetssensor.
Usage:
Inertial(smartport)
Parameter |
Beskrivning |
|---|---|
|
Valfritt. Om du använder IQ (2:a generationen) Brain’s inbyggda tröghetssensor behövs ingen Smart Port. Om du ansluter en extern tröghetssensor anger du den Smart Port som tröghetssensorn är ansluten till, skrivet som |
# 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)


