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

units

Valfritt. Kursenheten: DEGREES (standard) eller TURNS

# 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

units

Valfritt. Rotationsenheten: DEGREES (standard) eller TURNS

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

IQ-hjärnan med skärmen vinklad åt höger, med x-, y- och z-axlarna representerade av pilar som utgår från skärmens mitt och sträcker sig utåt. En röd pil märkt x pekar åt höger, en grön pil märkt y sträcker sig framåt och en blå pil märkt z pekar nedåt.Samma bild som den föregående, nu med hjärnskärmen vinklad mot vänster och x-, y- och z-pilarna som bibehåller sin orientering.Samma bild som den föregående, nu med hjärnskärmen vänd uppåt, som om den ligger platt på en yta. X-, y- och z-orienteringen är densamma.

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

value

Kursvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett värde från 0 till 359,99.

units

Valfritt. Kursenheten: DEGREES (standard) eller TURNS

# 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

value

Rotationsvärdet, i grader, som ska ställas in för sensorn. Detta kan vara ett heltal eller ett decimaltal (flyttal).

units

Valfritt. Rotationsenheten: DEGREES (standard) eller TURNS

# 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

callback

En funktion som körs när tröghetssensorns kurs ändras.

arg

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å:

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

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

axis

Axeln som gyrohastigheten ska returneras från:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Valfritt. Gyrohastighetsenhet:

  • DPS (standard) — grader per sekund
  • RPM — rotationer 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#

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

axis

Orienteringsvinkeln för retur:

  • ROLL
  • PITCH
  • YAW

units

Valfritt. Orienteringsenheten: DEGREES (standard) eller 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)

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

smartport

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 PORTx, där x är portnumret.

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