Trägheitssensor#

Einführung#

Die Klasse inertial dient zur Steuerung und zum Zugriff auf Daten eines V5 Inertialsensors, der mit einem Smart Port verbunden ist.

Der V5-Inertialsensor misst die Bewegungen und Drehungen des Roboters. Das Gyroskop erfasst Drehungen wie Richtung, Rotation, Kreiselrate und Orientierung. Der Beschleunigungsmesser misst Bewegungsänderungen wie Beschleunigung oder Verlangsamung entlang der x-, y- und z-Achse.

Klassenkonstruktoren#

inertial(
  int32_t  index,
  turnType dir = turnType::right );

Klassendestruktor#

Zerstört das Trägheitsobjekt inertial und gibt zugehörige Ressourcen frei.

~inertial();

Parameter#

Parameter

Typ

Beschreibung

index

int32_t

Der Smart Port, an den der Inertialsensor angeschlossen ist, wird als PORTxgeschrieben, wobei x die Portnummer ist (zum Beispiel PORT1).

dir

turnType

Optional. Die Richtung, die positive Werte liefert:

  • right (Standard) – Rechtskurven liefern positive Werte.
  • left – Linkskurven liefern positive Werte.

Beispiele#

// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
    PORT1,      // Smart Port 1
    right);     // dir

Mitgliedsfunktionen#

Die Klasse inertial umfasst die folgenden Memberfunktionen:

  • heading — Gibt die Richtung zurück, in die der Sensor zeigt.

  • rotation — Gibt zurück, wie weit sich der Sensor gedreht hat.

  • setHeading — Setzt die aktuelle Richtung des Sensors auf einen neuen Richtungswert.

  • setRotation — Setzt die aktuelle Rotation des Sensors auf einen neuen Rotationswert.

  • calibrate — Kalibriert den Inertialsensor.

  • resetHeading — Setzt die aktuelle Ausrichtung des Sensors auf 0 Grad zurück.

  • resetRotation — Setzt die aktuelle Drehung des Sensors auf 0 Grad zurück.

  • isCalibrating — Gibt zurück, ob der Inertialsensor gerade kalibriert wird.

  • changed — Registriert eine Rückruffunktion, die ausgeführt wird, wenn sich die Überschrift ändert.

  • installed — Gibt zurück, ob der Inertialsensor installiert ist.

  • acceleration — Gibt zurück, wie schnell der Sensor auf der ausgewählten Achse beschleunigt oder abbremst.

  • gyroRate — Gibt zurück, wie schnell sich der Sensor um die ausgewählte Achse dreht.

  • orientation — Gibt den Roll-, Nick- oder Gierwinkel des Inertialsensors zurück.

  • collision — Registriert eine Rückruffunktion, die ausgeführt wird, wenn eine Kollision erkannt wird.

  • setTurnType — Legt fest, welche Drehrichtung positive Werte zurückgibt.

  • getTurnType — Gibt zurück, welche Drehrichtung positive Werte erzeugt.

Bevor inertial Memberfunktionen aufgerufen werden können, muss eine inertial -Instanz erstellt werden, wie unten gezeigt:

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);

heading#

Die Richtung, in die der Sensor zeigt, wird in Grad von 0 bis 359,99 gemessen. Diese Funktion gibt die aktuelle Richtung des Sensors zurück.

Der Ausgangskurs beträgt 0 Grad. Wenn der Sensor über 359,99 Grad hinaus dreht, springt der Kurs wieder auf 0 Grad zurück.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Parameter

Typ

Beschreibung

units

rotationUnits

Die Kurseinheit:

  • deg / degrees (Standard) — Grad
  • turns / rev — Umdrehungen

Return Values

Gibt einen Wert vom double zurück, der die aktuelle Richtung des Sensors in den angegebenen Einheiten darstellt.

Notes
  • Der Kurswert wird zwischen 0 und 359,99 Grad umgebrochen. Verwenden Sie rotation, um auf den kontinuierlichen Rotationswert zuzugreifen.

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

Gibt die aktuelle Rotation des Inertialsensors zurück.

Die Rotation gibt an, um welchen Grad sich der Sensor gedreht hat. Im Gegensatz zur Kursrichtung kann die Rotation über 359,99 Grad hinausgehen oder unter 0 Grad fallen. Beispielsweise entspricht eine zweifache Drehung nach rechts einer Rotation von 720 Grad. Eine volle Drehung nach links von 0 Grad entspricht einer Rotation von -360 Grad.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Parameter

Typ

Beschreibung

units

rotationUnits

Die Rotationseinheit:

  • deg / degrees (Standard) — Grad
  • turns / rev — Umdrehungen

Return Values

Gibt einen Wert vom double zurück, der die aktuelle Rotation in den angegebenen Einheiten darstellt.

Notes
  • Der Rotationswert ist stetig und springt nicht zwischen 0 und 359,99 Grad. Verwenden Sie heading, um auf den Wert des umgebrochenen Kurses zuzugreifen.

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

Die Richtung, in die der Sensor zeigt, wird in Grad von 0 bis 359,99 gemessen. Diese Funktion ändert die aktuelle Richtung des Inertialsensors auf einen neuen Richtungswert.

Wenn sich der Sensor beispielsweise nach rechts gedreht hat, wird durch Einstellen der Ausrichtung auf 0 Grad diese Ausrichtung nach rechts zum neuen 0-Grad-Wert. Anschließend kann der Sensor basierend auf dieser neuen Richtung andere Ausrichtungen verfolgen.

Available Functions
void setHeading( double value, rotationUnits units );

Parameters

Parameter

Typ

Beschreibung

value

double

Der für den Sensor einzustellende Kurswert in Grad. Dieser Wert kann zwischen 0 und 359,99 liegen.

units

rotationUnits

Die Kurseinheit:

  • deg / degrees — Grad
  • turns / rev — Umdrehungen

Return Values

Diese Funktion gibt keinen Wert zurück.

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

Die Rotation gibt an, um welchen Winkel sich der Sensor gedreht hat, gemessen in Grad. Im Gegensatz zur Ausrichtung kann die Rotation über 359,99 Grad steigen oder unter 0 Grad fallen. Zu Beginn eines Projekts ist der Rotationswert auf 0 Grad eingestellt. Diese Funktion ändert die aktuelle Rotation des Inertialsensors auf einen neuen Wert.

Hat der Sensor beispielsweise zwei volle Umdrehungen nach rechts ausgeführt, beträgt sein Rotationswert 720 Grad. Durch Setzen der Rotation auf 0 Grad wird dieser Wert von 720 auf 0 Grad zurückgesetzt. Anschließend kann der Sensor Rotationen basierend auf diesem neuen Wert erfassen.

Available Functions
void setRotation( double value, rotationUnits units );

Parameters

Parameter

Typ

Beschreibung

value

double

Der für den Sensor einzustellende Rotationswert in Grad. Dies kann eine ganze Zahl oder eine Dezimalzahl sein.

units

rotationUnits

Die Rotationseinheit:

  • deg / degrees — Grad
  • turns / rev — Umdrehungen

Return Values

Diese Funktion gibt keinen Wert zurück.

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

Kalibriert den Trägheitssensor.

Die Kalibrierung hilft dem Sensor, Drehungen korrekt zu messen. Halten Sie den Sensor während der Kalibrierung ruhig. Bewegt sich der Sensor während der Kalibrierung, werden Kurs, Rotation, Kreiselrate und Orientierung möglicherweise nicht korrekt gemessen.

Available Functions
void calibrate( );

Parameters

Diese Funktion akzeptiert keine Parameter.

Return Values

Diese Funktion gibt keinen Wert zurück.

Notes
  • Der Sensor sollte während der Kalibrierung unbeweglich bleiben.

  • Verwenden Sie isCalibrating, um festzustellen, wann die Kalibrierung abgeschlossen ist.

resetHeading#

Setzt die aktuelle Ausrichtung des Trägheitssensors auf 0 Grad zurück.

Nach Anwendung dieser Funktion wird die aktuelle Richtung des Sensors zur neuen 0-Grad-Richtung.

Available Functions
void resetHeading();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Diese Funktion gibt keinen Wert zurück.

resetRotation#

Setzt die aktuelle Drehung des Inertialsensors auf 0 Grad zurück.

Nach der Verwendung dieser Funktion verfolgt der Sensor zukünftige Drehungen vom neuen Drehwert von 0 Grad aus.

Available Functions
void resetRotation();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Diese Funktion gibt keinen Wert zurück.

isCalibrating#

Gibt zurück, ob der Inertialsensor gerade kalibriert wird.

Available Functions
bool isCalibrating();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Gibt einen booleschen Wert zurück, der angibt, ob der Inertialsensor kalibriert wird:

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

Registriert eine Rückruffunktion, die ausgeführt wird, wenn sich der Kurswert des Inertialsensors ändert.

Available Functions
void changed( void (* callback)(void) );

Parameters

Parameter

Typ

Beschreibung

callback

void (*)(void)

Ein Zeiger auf eine Funktion, die aufgerufen wird, wenn sich der Wert der Überschrift ändert. Die Funktion darf keine Parameter annehmen und muss void zurückgeben.

Return Values

Diese Funktion gibt keinen Wert zurück.

Examples

Definiere die Callback-Funktion (außerhalb von int main())

// Display the heading when the Inertial Sensor's heading value changes.
void onHeadingChanged() {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Heading: %.2f", myInertial.heading());
}

Registriere den Callback innerhalb von int main()

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

Gibt zurück, ob der Inertialsensor installiert und angeschlossen ist.

Available Functions
bool installed();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Gibt einen booleschen Wert zurück, der angibt, ob der Inertialsensor installiert und angeschlossen ist:

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

Die Beschleunigung gibt an, wie schnell der Sensor beschleunigt oder abbremst. Diese Funktion liefert die Beschleunigung des Inertialsensors auf der ausgewählten Achse im Bereich von -4,0 G bis 4,0 G.

G G entspricht etwa der Beschleunigung, die man im Ruhezustand durch die Schwerkraft spürt. Der Wert kann positiv oder negativ sein, je nach Richtung der Beschleunigung auf der gewählten Achse.

Available Functions
double acceleration( axisType axis );

Parameters

Parameter

Typ

Beschreibung

axis

axisType

Die Achsen zur Messung der Beschleunigung:

  • xaxis
  • yaxis
  • zaxis

Return Values

Gibt einen Wert vom Typ double zurück, der die Beschleunigung entlang der angegebenen Achse in G (Gravitationseinheiten) darstellt.

Notes
  • Die Beschleunigungswerte werden in Einheiten von G angegeben.

gyroRate#

Die Kreiselrate gibt an, wie schnell sich der Inertialsensor dreht. Diese Funktion liefert die aktuelle Rotationsgeschwindigkeit des Inertialsensors um die ausgewählte Achse.

Der Wert kann positiv oder negativ sein, je nachdem, in welche Richtung sich der Sensor um diese Achse dreht.

Available Functions
double gyroRate( axisType axis, velocityUnits units );

Parameters

Parameter

Typ

Beschreibung

axis

axisType

Die Achsen, von denen die Gyro-Rate zurückgegeben wird:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Die Kreiselrateneinheit:

  • dps — Grad pro Sekunde
  • rpm — Umdrehungen pro Minute

Return Values

Gibt einen Wert vom Typ double zurück, der die aktuelle Rotationsgeschwindigkeit entlang der angegebenen Achse in den ausgewählten Einheiten darstellt.

Examples
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);

Brain.Screen.print(myInertial.gyroRate(zaxis, dps));

Drivetrain.stop();

orientation#

Die Orientierung ist der aktuelle Winkel des Inertialsensors auf einer ausgewählten Achse. Diese Funktion gibt die aktuelle Orientierung des Inertialsensors für die angegebene Achse zurück.

Die ausgewählte x-, y- oder z-Achse entspricht einer der Orientierungsachsen des Sensors.

Available Functions
double orientation(
  axisType      axis,
  rotationUnits units );

Parameters

Parameter

Typ

Beschreibung

axis

axisType

Die Achse, für die die Orientierung zurückgegeben wird:

  • xaxis
  • yaxis
  • zaxis

units

rotationUnits

Die Orientierungseinheit:

  • deg / degrees — Grad
  • turns / rev — Umdrehungen

Return Values

Gibt einen Wert vom double zurück, der den ausgewählten Orientierungswinkel in den angegebenen Einheiten darstellt.

Examples
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  // Show the Inertial Sensor's orientation value
  // for roll in degrees
  double orient = myInertial.orientation(xaxis, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

Registriert eine Rückruffunktion, die ausgeführt wird, wenn der Inertialsensor einen plötzlichen Aufprall oder eine Kollision erkennt.

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Parameter

Typ

Beschreibung

callback

void (*)(axisType, double, double, double)

Ein Zeiger auf eine Funktion, die bei Erkennung einer Kollision aufgerufen wird. Die Callback-Funktion muss folgende Parameter akzeptieren:

  • axisType — Die Achse, auf der die Kollision erkannt wurde.
  • Beschleunigungswerte zum Zeitpunkt des Aufpralls, in der Reihenfolge:
    • double — Beschleunigung entlang der x-Achse (in G).
    • double — Beschleunigung entlang der y-Achse (in G).
    • double — Beschleunigung entlang der z-Achse (in G).
Die Funktion muss void zurückgeben.

Return Values

Diese Funktion gibt keinen Wert zurück.

Examples

Definiere die Callback-Funktion (außerhalb von int main())

// Display a message when the Inertial Sensor detects a collision.
void onCollision(axisType axis, double x, double y, double z) {
  Brain.Screen.print("Collision detected!");
}

Registriere den Callback innerhalb von int main()

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

Mengen, die die Drehrichtung bestimmen, liefern positive Werte.

Available Functions
void setTurnType( turnType dir );

Parameters

Parameter

Typ

Beschreibung

dir

turnType

Die Richtung, die positive Werte liefert:

  • right
  • left

Return Values

Diese Funktion gibt keinen Wert zurück.

Notes

getTurnType#

Rückgabewerte, die eine Richtungsänderung bewirken, ergeben positive Werte.

Available Functions
turnType getTurnType();

Parameters

Diese Funktion benötigt keine Parameter.

Return Values

Gibt einen turnType zurück, der angibt, welche Richtung positive Werte erzeugt:

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes