Traagheid#
Invoering#
De IQ (2e generatie) Brain bevat een ingebouwde traagheidssensor. Deze sensor meet hoe de Brain beweegt en draait.
De traagheidssensor gebruikt hiervoor twee onderdelen. De gyroscoop meet draaibewegingen, zoals richting, rotatie, gyroscoopsnelheid en oriëntatie. De accelerometer meet veranderingen in beweging, zoals versnellen of vertragen langs de x-, y- en z-assen.
Op deze pagina wordt brain_inertial als voorbeeldnaam voor de inertiële sensor gebruikt. Vervang dit door uw eigen geconfigureerde naam indien nodig.
Hieronder vindt u een lijst met alle beschikbare methoden:
Oriëntatie — Lees en regel de richting, rotatie en sensorkalibratie.
heading— Geeft de richting weer waarin de sensor wijst, van 0 tot 359,99 graden.rotation— Geeft aan hoeveel de sensor is gedraaid.calibrate— Kalibreert de traagheidssensor.set_heading— Stelt de huidige koers van de traagheidssensor in op een nieuwe koerswaarde.set_rotation— Stelt de huidige rotatie van de inertiële sensor in op een nieuwe rotatiewaarde.is_calibrating— Geeft aan of de traagheidssensor momenteel aan het kalibreren is.reset_heading— Reset de huidige koers van de traagheidssensor naar 0 graden.reset_rotation— Reset de huidige rotatie van de inertiële sensor naar 0 graden.changed— Registreert een functie die moet worden uitgevoerd wanneer de richting van de traagheidssensor verandert.
Beweging — Meet versnelling, rotatiesnelheid en kanteling.
acceleration— Geeft aan hoe snel de sensor versnelt of vertraagt op de geselecteerde as.gyro_rate— Geeft aan hoe snel de sensor roteert om de geselecteerde as.orientation— Geeft de rol-, stamp- of gierhoek van de traagheidssensor terug.
Constructors — Initialiseer en configureer handmatig een inertiële sensor.
Inertial— Creëert een inertiële sensor.
Oriëntatie#
heading#
Een koers is de richting waarin de sensor wijst, gemeten in graden van 0 tot 359,99. heading geeft de huidige koers van de sensor weer.
De beginrichting is 0 graden. Als de sensor voorbij 359,99 graden draait, springt de richting terug naar 0 graden.
Usage:
brain_inertial.heading(units)
Parameters |
Beschrijving |
|---|---|
|
Optioneel. De richtingseenheid: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Rotatie geeft aan hoeveel de sensor is gedraaid, gemeten in graden. In tegenstelling tot de richting kan de rotatie oplopen tot meer dan 359,99 graden of afnemen tot minder dan 0 graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. rotation geeft de huidige rotatie van de inertiële sensor weer.
Naar rechts draaien vergroot de rotatie, naar links draaien verkleint de rotatie. Twee volledige draaien naar rechts resulteren bijvoorbeeld in een rotatie van 720 graden. Eén volledige draai naar links vanuit 0 graden resulteert in een rotatie van -360 graden.
Usage:
brain_inertial.rotation(units)
Parameters |
Beschrijving |
|---|---|
|
Optioneel. De rotatie-eenheid: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibreert de traagheidssensor. Alle volgende regels wachten tot de kalibratie is voltooid voordat ze worden uitgevoerd. Kalibratie helpt de sensor bochten correct te meten door sensorruis en drift gedurende een bepaalde periode te meten en te compenseren. Gedurende deze tijd moet de Brain volledig stil blijven staan op een stabiele ondergrond. Beweging tijdens de kalibratie kan onnauwkeurige resultaten opleveren.
De VEX Brain probeert automatisch de ingebouwde traagheidssensor te kalibreren aan het begin van elk project. Als de robot echter tijdens de projectstart wordt gedragen of verplaatst, kan het zijn dat de sensor niet correct kalibreert of een onjuiste kalibratie oplevert.
Usage:
brain_inertial.calibrate()
Parameter |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# 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#
Een koers is de richting waarin de sensor wijst, gemeten in graden van 0 tot 359,99. set_heading() verandert de huidige koers van de inertiële sensor naar een nieuwe koerswaarde.
Als de sensor bijvoorbeeld naar rechts is gedraaid, zorgt het instellen van de koers op 0 graden ervoor dat die naar rechts gerichte positie de nieuwe 0 graden wordt. De sensor kan vervolgens andere koersen volgen op basis van die nieuwe richting.
Usage:
brain_inertial.set_heading(value, units)
Parameters |
Beschrijving |
|---|---|
|
De richtingswaarde in graden die voor de sensor moet worden ingesteld. Dit kan een waarde zijn van 0 tot 359,99. |
|
Optioneel. De richtingseenheid: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Rotatie geeft aan hoeveel de sensor is gedraaid, gemeten in graden. In tegenstelling tot de richting kan de rotatie oplopen tot meer dan 359,99 graden of afnemen tot minder dan 0 graden. Aan het begin van een project wordt de rotatiewaarde ingesteld op 0 graden. set_rotation() wijzigt de huidige rotatie van de inertiële sensor naar een nieuwe waarde.
Als de sensor bijvoorbeeld twee volledige omwentelingen naar rechts heeft gemaakt, is de rotatiewaarde 720 graden. Door de rotatie op 0 graden in te stellen, wordt deze gereset van 720 naar 0 graden. De sensor kan vervolgens rotaties registreren op basis van deze nieuwe waarde.
Usage:
brain_inertial.set_rotation(value, units)
Parameters |
Beschrijving |
|---|---|
|
De rotatiewaarde in graden die voor de sensor moet worden ingesteld. Dit kan een geheel getal of een decimaal getal (float) zijn. |
|
Optioneel. De rotatie-eenheid: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating geeft aan of de inertiële sensor momenteel aan het kalibreren is.
True— De inertiële sensor wordt gekalibreerd.False— De inertiële sensor wordt niet gekalibreerd.
Usage:
brain_inertial.is_calibrating()
Parameter |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# 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 zet de huidige koers van de traagheidssensor terug naar 0 graden.
Na toepassing van deze methode wordt de huidige richting van de sensor de nieuwe richting van 0 graden.
Usage:
brain_inertial.reset_heading()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# 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 zet de huidige rotatie van de inertiële sensor terug naar 0 graden.
Na toepassing van deze methode registreert de sensor toekomstige draaiingen vanaf de nieuwe rotatiewaarde van 0 graden.
Usage:
brain_inertial.reset_rotation()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# 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 registreert een functie die moet worden aangeroepen wanneer de richting van de traagheidssensor verandert.
Usage:
brain_inertial.changed(callback, arg)
Parameters |
Beschrijving |
|---|---|
|
Een functie die wordt uitgevoerd wanneer de richting van de traagheidssensor verandert. |
|
Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. |
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)
Beweging#
acceleration#
Acceleratie geeft aan hoe snel de sensor versnelt of vertraagt. acceleration geeft de acceleratie van de inertiële sensor op de geselecteerde as weer, van -4,0 G tot 4,0 G, als een zwevendekommagetal.
G is een eenheid die gebruikt wordt om versnelling te meten. 1 G is ongeveer de versnelling die je voelt door de zwaartekracht als je stilzit.
De waarde kan positief of negatief zijn, afhankelijk van de richting van de versnelling op de geselecteerde as. De asopties zijn XAXIS, YAXISen ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parameters |
Beschrijving |
|---|---|
as |
De as waarop de versnelling gemeten moet worden:
|
# 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#
De gyroscoopsnelheid geeft aan hoe snel de inertiële sensor roteert. gyro_rate geeft de huidige rotatiesnelheid van de inertiële sensor op de geselecteerde as weer.
De waarde kan positief of negatief zijn, afhankelijk van de draairichting van de sensor op die as.
Usage:
brain_inertial.gyro_rate(axis, units)
Parameters |
Beschrijving |
|---|---|
|
De as van waaruit de gyroscoopsnelheid wordt geretourneerd:
|
|
Optioneel. De eenheid voor de gyroscoopsnelheid:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
De oriëntatie geeft de huidige hoek van de inertiële sensor ten opzichte van een geselecteerde draaiingsas weer. Een oriëntatie orientation Deze geeft de rol-, stamp- of gierhoek van de inertiële sensor weer.
Rollen, stampen en gieren beschrijven verschillende manieren waarop de sensor kan kantelen of draaien.
Usage:
brain_inertial.orientation(axis, units)
Parameters |
Beschrijving |
|---|---|
|
De oriëntatiehoek voor terugkeer:
|
|
Optioneel. De oriëntatie-eenheid: |
# 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)
Constructeurs#
Constructors worden gebruikt om handmatig Inertial objecten te creëren, bijvoorbeeld bij het configureren van een inertiële sensor buiten VEXcode.
Inertial#
Inertial creëert een inertiële sensor.
Usage:
Inertial(smartport)
Parameter |
Beschrijving |
|---|---|
|
Optioneel. Als u de ingebouwde traagheidssensor van de IQ (2e generatie) Brain’s gebruikt, is een Smart Port niet nodig. Als u een externe traagheidssensor aansluit, geef dan de Smart Port op waarop de traagheidssensor is aangesloten, geschreven als |
# 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)


