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

units

Optioneel. De richtingseenheid: DEGREES (standaard) of TURNS

# 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

units

Optioneel. De rotatie-eenheid: DEGREES (standaard) of TURNS

# 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 IQ Brain met het scherm naar rechts gekanteld, waarbij de x-, y- en z-assen worden weergegeven door pijlen die vanuit het midden van het scherm naar buiten wijzen. Een rode pijl met het label x wijst naar rechts, een groene pijl met het label y wijst naar voren en een blauwe pijl met het label z wijst naar beneden.Dezelfde afbeelding als de vorige, maar nu met het hersenscherm naar links gekanteld, en de x-, y- en z-pijlen die hun oriëntatie behouden.Dezelfde afbeelding als de vorige, maar nu met het hersenscherm naar boven gericht, alsof het plat op een oppervlak ligt. De x-, y- en z-oriëntatie is hetzelfde.

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

value

De richtingswaarde in graden die voor de sensor moet worden ingesteld. Dit kan een waarde zijn van 0 tot 359,99.

units

Optioneel. De richtingseenheid: DEGREES (standaard) of TURNS

# 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

value

De rotatiewaarde in graden die voor de sensor moet worden ingesteld. Dit kan een geheel getal of een decimaal getal (float) zijn.

units

Optioneel. De rotatie-eenheid: DEGREES (standaard) of TURNS

# 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

callback

Een functie die wordt uitgevoerd wanneer de richting van de traagheidssensor verandert.

arg

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:

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

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

axis

De as van waaruit de gyroscoopsnelheid wordt geretourneerd:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Optioneel. De eenheid voor de gyroscoopsnelheid:

  • DPS (standaard) — graden per seconde
  • RPM — rotaties per minuut
  • 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#

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

axis

De oriëntatiehoek voor terugkeer:

  • ROLL
  • PITCH
  • YAW

units

Optioneel. De oriëntatie-eenheid: DEGREES (standaard) of 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)

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

smartport

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 PORTx, waarbij x het poortnummer is.

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