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.

Een VEX AIM-codeerrobot met een blauwe pijl die vanuit het midden van de robot naar beneden wijst. Rond de blauwe pijl loopt een zwarte, gebogen pijl die met de klok mee wijst en de positieve gierrichting aangeeft.

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.

Een VEX AIM-codeerrobot met een groene pijl die uit de voorkant van de robot steekt, in het midden van de AI Vision-sensor. Rond de groene pijl loopt een zwarte pijl die tegen de klok in buigt en de positieve rolrichting aangeeft.

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.

Een VEX AIM-codeerrobot met een rode pijl die uitsteekt aan de zijkant van de robot, onder het VEX-logo. Rond de rode pijl loopt een zwarte pijl die tegen de klok in buigt en de positieve richting voor de helling aangeeft.

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

heading

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

callback

Een functie die vooraf is gedefinieerd om te worden uitgevoerd wanneer een botsing wordt gedetecteerd.

arg

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

sensitivity

De botsingsgevoeligheid:

  • HIGH — Meest gevoelig; detecteert kleinere schokken en wordt geactiveerd bij 1G.
  • NORMAL — Standaardgevoeligheid; detecteert matige schokken en wordt geactiveerd bij 1,5G.
  • LOW — Minst gevoelig; detecteert sterkere schokken en wordt geactiveerd bij 2G.

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.

Een VEX AIM-codeerrobot met richtingspijlen die vanuit het midden van de robot uitsteken. Een groene pijl met het opschrift 'vooruit' steekt uit de voorkant van de robot, een blauwe pijl met het opschrift 'omlaag' steekt uit de onderkant van de robot en een rode pijl met het opschrift 'rechts' steekt uit de zijkant van de robot onder het VEX-logo.

Gebruik:

robot.inertial.get_acceleration(type)

Parameters

Beschrijving

type

De as waarop de versnelling wordt gemeten:

  • DOWNWARD — Meet de versnelling in de verticale richting van de robot.
  • FORWARD — Meet de versnelling in de richting van voor naar achter van de robot.
  • RIGHTWARD — Meet de versnelling in de richting van zij naar zij van de robot.

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

Een VEX AIM-codeerrobot met richtingspijlen die vanuit het midden van de robot uitsteken. Een groene pijl met het opschrift 'roll' steekt uit de voorkant van de robot, met een zwarte gebogen pijl die tegen de klok in eromheen wijst. Een blauwe pijl met het opschrift 'Yaw' steekt uit de onderkant van de robot, met een zwarte gebogen pijl die met de klok mee eromheen wijst. En een rode pijl met het opschrift 'Pitch' steekt uit de zijkant van de robot, onder het VEX-logo, met een zwarte gebogen pijl die tegen de klok in eromheen wijst.

Usage:
robot.inertial.get_turn_rate(axis)

Parameters

Beschrijving

axis

Welke oriëntatie moet worden gekozen:

  • YAW
  • ROLL
  • PITCH
# 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)