Traagheid#
Invoering#
De VEX AIM codeerrobot heeft een ingebouwde traagheidssensor. Deze sensor meet hoe de robot beweegt en draait.
De traagheidssensor gebruikt hiervoor twee onderdelen. De gyroscoop meet draaibewegingen, zoals de richting, rotatie, gier-, rol-, stamp- en draaisnelheid van de robot. De accelerometer meet veranderingen in beweging, zoals versnellen, vertragen of plotseling stoppen tijdens een botsing.
De inertiële methoden kunnen worden gebruikt om bochten te volgen, versnelling te meten, botsingen te detecteren, koers- of rotatiewaarden te resetten en de sensor te kalibreren.
Hieronder vindt u een lijst met alle methoden:
Oriëntatie — Bepaal en stel de kijkrichting, draairichting en kanteling van de robot in.
get_rotation— Geeft aan hoeveel de robot gedraaid is.get_heading— Geeft de richting aan waarin de robot kijkt, van 0 tot 359,99 graden.get_yaw— Retourneert de gierhoek van de robot.get_roll— Retourneert de rolhoek van de robot.get_pitch— Retourneert de hellingshoek van de robot.reset_rotation— Zet de huidige rotatie van de robot terug naar 0 graden.reset_heading— Zet de huidige richting van de robot terug naar 0 graden.set_heading— Stelt de huidige richting van de robot in op een nieuwe richtingwaarde.
Botsing — Botsingen detecteren.
crashed— Registreert een functie die moet worden uitgevoerd wanneer een crash wordt gedetecteerd.set_crash_sensitivity— Stelt in hoe gevoelig de botsingsdetectie is voor impacten.
Beweging — Meet versnelling en draaisnelheid.
get_acceleration— Geeft aan hoe snel de robot versnelt of vertraagt op de geselecteerde as.get_turn_rate— Geeft aan hoe snel de robot roteert om de geselecteerde as.
Kalibratie — Beheer de sensorkalibratie.
calibrate— Kalibreert de traagheidssensor.is_calibrating— Geeft aan of de traagheidssensor momenteel aan het kalibreren is.
Oriëntatie#
get_rotation#
Rotatie geeft aan hoeveel de robot 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. get_rotation retourneert de huidige rotatie van de robot als een float.
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:
robot.inertial.get_rotation()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Display the robot's rotation as it rotates
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
get_heading#
Een koers is de richting waarin de robot kijkt, gemeten in graden van 0 tot 359,99. get_heading retourneert de huidige koers van de robot als een zweefgetal.
De beginrichting is 0 graden. Als de robot verder draait dan 359,99 graden, keert de richting terug naar 0 graden.
Usage:
robot.inertial.get_heading()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Turn right until the heading reaches 90 degrees
robot.turn(RIGHT)
while robot.inertial.get_heading() < 90:
wait(50, MSEC)
robot.stop_all_movement()
# Display the robot's heading as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Heading: {robot.inertial.get_heading()} degrees")
wait(50, MSEC)
get_yaw#
De yaw-hoek beschrijft de beweging van de robot naar links of rechts rond zijn verticale as. get_yaw retourneert de yaw-hoek van de robot in het bereik van -180,00 tot 180,00 graden als een float.
De afbeelding hieronder gebruikt pijlen om de richting van de positieve rotatie voor de gierhoek aan te geven.
Usage:
robot.inertial.get_yaw()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Display the robot's yaw angle as it is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_yaw())
wait(50, MSEC)
get_roll#
Roll beschrijft de zijwaartse kanteling van de robot. get_roll retourneert de rolhoek van de robot in het bereik van -180,00 tot 180,00 graden als een zweefgetal.
De afbeelding hieronder gebruikt pijlen om de richting van de positieve rotatie bij het rollen aan te geven.
Usage:
robot.inertial.get_roll()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Display the robot's roll angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_roll())
wait(50, MSEC)
get_pitch#
Pitch beschrijft de kanteling van de robot naar voren of naar achteren. get_pitch retourneert de hellingshoek van de robot in het bereik van -90,00 tot 90,00 graden als een float.
De afbeelding hieronder gebruikt pijlen om de richting van de positieve rotatie voor de spoed aan te geven.
Usage:
robot.inertial.get_pitch()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Display the robot's pitch angle as it is tilted by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_pitch())
wait(50, MSEC)
reset_rotation#
reset_rotation zet de huidige rotatie van de robot terug naar 0 graden.
Na toepassing van deze methode volgt de robot toekomstige bochten vanaf de nieuwe rotatiewaarde van 0 graden.
Usage:
robot.inertial.reset_rotation()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Reset the robot's rotation if it exceeds 180 degrees
while True:
if robot.inertial.get_rotation() >= 180:
robot.inertial.reset_rotation()
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(f"Rotation: {robot.inertial.get_rotation():.2f}")
wait(50, MSEC)
reset_heading#
reset_heading zet de huidige richting van de robot terug naar 0 graden.
Na toepassing van deze methode wordt de huidige richting van de robot de nieuwe richting van 0 graden.
Usage:
robot.inertial.reset_heading()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Turn the robot around using a new 90 degree heading
robot.turn_to(90)
wait(1, SECONDS)
robot.inertial.reset_heading()
robot.turn_to(90)
set_heading#
Een koers is de richting waarin de robot kijkt, gemeten in graden van 0 tot 359,99. set_heading verandert de huidige koers van de robot naar een nieuwe koerswaarde.
Als de robot bijvoorbeeld naar rechts is gedraaid, zorgt het instellen van de richting op 0 graden ervoor dat die naar rechts gerichte positie de nieuwe 0 graden wordt. De robot kan vervolgens andere richtingen volgen op basis van die nieuwe richting.
Usage:
robot.inertial.set_heading(heading)
Parameters |
Beschrijving |
|---|---|
|
De richtingswaarde, in graden, die voor de robot moet worden ingesteld. Dit kan een waarde zijn van 0 tot 359,99. |
# Turn the robot to 90 degrees using its new heading
robot.inertial.set_heading(45)
robot.turn_to(90)
Botsing#
crashed#
crashed registreert een functie die moet worden aangeroepen wanneer de robot een plotselinge impact of botsing detecteert.
Gebruik:
robot.inertial.crashed(callback, arg)
Parameters |
Beschrijving |
|---|---|
|
Een functie die vooraf is gedefinieerd om te worden uitgevoerd wanneer een botsing wordt gedetecteerd. |
|
Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies gebruiken met parameters voor meer informatie. |
# Define what happens when a crash occurs
def crash_detected():
# Stop all movement and indicate a crash occurred
robot.screen.print("Crash detected")
robot.stop_all_movement()
robot.inertial.crashed(crash_detected)
# Drive forward until crash
robot.move_at(0, 100)
set_crash_sensitivity#
set_crash_sensitivity past aan hoeveel plotselinge acceleratie nodig is voordat de robot een botsing detecteert.
Usage:
robot.inertial.set_crash_sensitivity(sensitivity)
Parameters |
Beschrijving |
|---|---|
|
De botsingsgevoeligheid:
|
def crashed_callback():
robot.stop_all_movement()
robot.sound.play(CRASH)
# system event handlers
robot.inertial.crashed(crashed_callback)
# add 15ms delay to make sure events are registered correctly.
wait(15, MSEC)
# Detect a crash at a slow velocity.
robot.set_move_velocity(35, PERCENT)
robot.inertial.set_crash_sensitivity(HIGH)
robot.move_at(0)
Beweging#
get_acceleration#
Acceleratie geeft aan hoe snel de robot versnelt of vertraagt. get_acceleration retourneert de acceleratie van de robot op de geselecteerde as, van -4,00 G tot 4,00 G, als een float.
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 versnellingsrichting op de geselecteerde as. Op AIM zijn de asopties benoemd naar de richtingen op de robot: FORWARD, RIGHTWARDen DOWNWARD.

Gebruik:
robot.inertial.get_acceleration(type)
Parameters |
Beschrijving |
|---|---|
|
De as waarop de versnelling wordt gemeten:
|
# Display the acceleration as the robot begins to move
robot.screen.set_cursor(4,1)
sitting_accel = robot.inertial.get_acceleration(RIGHTWARD)
robot.screen.print(f"Resting: {sitting_accel:.2f}")
wait(0.5, SECONDS)
robot.screen.next_row()
robot.move_at(90, 100)
wait(0.1, SECONDS)
robot.screen.print(f"Startup: {robot.inertial.get_acceleration(RIGHTWARD):.2f}")
get_turn_rate#
De draaisnelheid geeft aan hoe snel de robot roteert. get_turn_rate retourneert de draaisnelheid van de robot in graden per seconde \(dps\) als een zwevendekommagetal, van -1000,00 tot 1000,00 dps.
De waarde kan positief of negatief zijn, afhankelijk van de draairichting van de robot rond de geselecteerde as. In de onderstaande afbeelding worden pijlen gebruikt om de richting van positieve rotatie voor rollen, stampen en gieren aan te geven.

Usage:
robot.inertial.get_turn_rate(axis)
Parameters |
Beschrijving |
|---|---|
|
Welke oriëntatie moet worden gekozen:
|
# Display the gyro rate as the robot is rotated by hand
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
robot.screen.print(robot.inertial.get_turn_rate(YAW))
wait(50, MSEC)
Kalibratie#
Kalibratie helpt de traagheidssensor om bochten correct te meten door sensorruis en drift gedurende een periode van 2 seconden te meten en te compenseren. Gedurende deze tijd moet de robot volledig stil blijven staan op een stabiele ondergrond. Beweging tijdens de kalibratie kan onnauwkeurige resultaten opleveren.
VEX-robots proberen zichzelf automatisch te kalibreren bij het opstarten en wachten tot ze geen beweging meer detecteren. Als de robot echter tijdens het opstarten wordt gedragen of verplaatst, kan de sensor mogelijk niet correct kalibreren of een onjuiste kalibratie opleveren.
Als uw project sterk afhankelijk is van een nauwkeurige koers, of als u consistente en herhaalbare bochten nodig hebt, kan het aanroepen van calibrate aan het begin van uw code helpen. Het is goede gewoonte om tijdens de kalibratie een bericht zoals “Kalibratie…” op het scherm van de robot weer te geven en dit daarna bij te werken naar “Kalibratie voltooid.” om u (en iedereen die de robot gebruikt) eraan te herinneren dat de robot gedurende deze periode stil moet blijven staan.
calibrate#
Kalibreren calibrate kalibreert de gyroscoop. Kalibratie helpt de traagheidssensor om bochten correct te meten door sensorruis en drift gedurende een periode van 2 seconden te meten en te compenseren. Gedurende deze tijd moet de robot volledig stil blijven staan op een stabiele ondergrond. Beweging tijdens de kalibratie kan onnauwkeurige resultaten opleveren.
VEX-robots proberen zichzelf automatisch te kalibreren bij het opstarten en wachten tot ze geen beweging meer detecteren. Als de robot echter tijdens het opstarten wordt gedragen of verplaatst, kan de sensor mogelijk niet correct kalibreren of een onjuiste kalibratie opleveren.
Usage:
robot.inertial.calibrate()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Calibrate the gyro before moving
robot.inertial.calibrate()
robot.screen.show_emoji(THINKING)
wait(2, SECONDS)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)
is_calibrating#
is_calibrating retourneert een Booleaanse waarde die aangeeft of de inertiële sensor aan het kalibreren is.
True— De inertiële sensor wordt gekalibreerd.False— De inertiële sensor wordt niet gekalibreerd.
Usage:
robot.inertial.is_calibrating()
Parameters |
Beschrijving |
|---|---|
Deze methode heeft geen parameters. |
# Move after the calibration is completed
robot.inertial.calibrate()
while robot.inertial.is_calibrating():
robot.screen.show_emoji(THINKING)
wait(50, MSEC)
robot.screen.show_emoji(PROUD)
robot.move_for(50, 90)