SDE SoSe26: AP 1.2 Messung und Verarbeitung der Gierrate

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abbildung 1: IMU MPU-9250/6500
Abb. 2: Task 1.2 des KANBAN Brett
Autor: Julius von Agris
Modul Mechatronik, Systementwicklung (Wahlpflichtprofil „Systems Design Engineering“), Sommersemester
Lehrveranstaltung: Praktikum Systementwicklung
Sprint: Bildbasierte Spurführung für autonomes Fahren
SVN-URL https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/AlphaBot/

Sprint 1

Sprint 2

Einleitung

Im Rahmen der Lehrveranstaltung SDE Systementwicklung soll eine bildbasierte Spurführung für autonomes Fahren eines AlphaBotserstellt werden. Um diesen im späteren Verlauf vernünftig regeln zu können, ist es notwendig, die Gierrate des AlphaBots zu messen. In diesem Abschnitt soll es darum gehen, mithilfe des IMU MPU-9250/6500 Gierratensensors, die Gierrate zu messen . Dafür muss der Gierratensensor angeschlossen werden und anschließend muss ein Simulink-Programm erstellt werden. Mit den Messwerten des Gierratensensors soll die Querregelung geregelt werden können.

Planung (Plan)

Ist-Zustand

Die Arbeitsgruppe des vorherigen Semesters hat die bildbasierte Spurführung für autonomes Fahren ohne den Gierratensensor IMU MPU-9250/6500 realisiert. Der Drehwinkel der Räder bzw. das Lenken des AlphaBots wurden bis jetzt ausschließlich über die Pixy2.1-Kamera realisiert.

Soll-Zustand

Die Spurregelung des AlphaBots soll mit dem IMU MPU-9250 gestützt werden. Der AlphaBot soll auf einer geraden Strecke mit Maximalgeschwindigkeit fahren und in Kurven passend nach der Krümmung langsamer fahren. Für die Regelung des AlphaBots wir die Gierrate, die Geschwindigkeit und die Krümmung benötigt

Tabelle 1: Anforderungen an die Spurerkennung
ID Priorität Inhalt Ersteller Datum
1 1 Der Gierratensensor muss am Alphabot montiert werden. (Foto und keine Bewegung mit der Hand möglich) Julius von Agris 30.09.2026
2 1 Die Datenübertragung muss über I2C erfolgen (Messdaten sind in Simulink einlesbar) Julius von Agris 30.09.2026
3 1 Mit dem Gierratenensor muss die Gierrate gemessen und gefiltert werden Julius von Agris 30.09.2026
4 1 Mit dem Gierratenensor muss die Beschleunigung gemessen und die Geschwindigkeit berechnet werden Julius von Agris 30.09.2026
5 1 Mit der Berechneten Geschwindigkeit muss die Krümmung berechnet werden Julius von Agris 30.09.2026
6 1 Die Anforderungen 1-5 müssen in Matlab/Simulink umgesetzt werden Julius von Agris 30.09.2026

Der Gierratensensor muss zu nächst an dem AlphaBot montiert werden. Am AlphaBot gibt es bereits eine Halterung für den Gierratensensor mittig zwischen den Rädern (siehe Abb. 3). Des Weiteren soll die Datenübertragung über I2C erfolgen. Dafür müssen die Anschlüsse SCL und SDA verwendet werden. Anschließend muss eine Simulink Programm geschrieben werden mit dem die Messwerte des Gierratensensors dargestellt werden können. Für den IMU MPU-9250/6500 Gierratensensor gibt es bereits den MPU9250 IMU Sensor Qwiic-Block aus der Library HSHL_Sensoren. Mit dem MPU9250 IMU Sensor Qwiic-Block soll die Gierrate und die Beschleunigung gemessen werden. Die Gierrate wird in °/s ausgegeben und die Beschleunigung in g (g≈9,81m/s2). Neben der Gierrate muss auch die Geschwindigkeit berechnet werden. Der MPU-9250 Block ist kann nicht nur die Gierrate sondern auch die Beschleunigungswerte des Sensors in x-, y- und z-Richtung ausgeben. Mit Hilfe der Formeln der Beschleunigten Bewegung können aus den Beschleunigungswerten auch die Geschwindigkeitswerte in x-, y- und z-Richtung berechnet werden.

Im späteren Vorgehen wird in einer Halkreisfahrt die Gierrate gemessen. Dafür wird dann die Zeit gemessen, in der die 180° gefahren wurden. Anschließend wird mit der Dauer der Kreisfahrt ein berechneter Wert mit dem Mittelwert der Gierrate aus der Messung verglichen. Dieser wird als richtig angenommen, wenn er innerhalb ±15% des erwartenden Wertes liegt.

Vorgehen

Mir dem MPU9250 IMU Sensor Qwiic-Block der Library HSHL_Sensoren können die Beschleunigungsmesswerte so wie die Gierratenmesswerte des MPU9250 aufgenommen werden. Diese können anschließend weiter in Matlab verarbeitet werden.

Bei der Gierrte sind nur die Messwerte in z-Richtung relevant. Diese müssen mit Hilfe eines rekursiven Mittelwerfilter gefiltert werden, um dem Regler vernünftige Werte zu liefern.

Formel für den rekursiven Mittelwertfilter

x‾(k)=k−1kx‾(k−1)+1kx(k)

Um später vernünftig Regeln zu können, wird außerdem noch die Geschwindigkeit des AlphaBots ermittelt. Die Ermittlung der Geschwindigkeit erfolgt über die Formeln der Beschleunigten Bewegung. Der MPU9250 IMU Sensor Qwiic-Block gibt die Beschleunigungen in die x-, y-, und z-Richtung aus. Für den AlphaBot sind die Beschleunigungswerte in x- und y-Richtung relevant. Diese werden zu nächst genormt um Betrag der resultierenden Beschleunigung zu erhalten.

Betrag der Beschleunigung

a=ax2+ay2

Mit dem Betrag der resultierenden Beschleunigung lassen sich anschließend die Geschwindigkeit und die gefahrene Strecke des AlphaBots mit Hilfe der Formeln der Beschleunigten Bewegung bestimmen.

Formeln der Beschleunigten Bewegung

v(t)=v0+a⋅t

s(t)=s0+v(t)⋅t+12⋅a⋅t2

Mit der vorher berechneten Geschwindigkeit kann anschließend die Krümmung berechnet werden. Zusätzlich kann auch der Radius aus der Krümmung berechnet werden, welcher später beim Testen benötigt wird.

Formeln der Krümmung und des Radius

κ=ψ˙v


R=1κ

Kurswinkel aus Gierrate
Die Gierrate ist die zeitliche Ableitung des Gierwinkels: ωz(t)=dψ(t)dt

Durch Integration ergibt sich der Gierwinkel: ψ(t)=ψ0+∫t0tωz(τ)dτ

Dabei bedeuten:

  • ψ: Gierwinkel bzw. Kurswinkel in rad
  • ωz: Gierrate in rad/s
  • ψ0: Anfangswinkel
  • t: Zeit in s

Krümmung aus Odometrie

Bei einem Differentialantrieb lässt sich die Krümmung der gefahrenen Bahn aus den Weginkrementen oder Geschwindigkeiten des linken und rechten Rades bestimmen. Die Krümmung beschreibt die Änderung des Kurswinkels bezogen auf die zurückgelegte Strecke.

Die translatorische Geschwindigkeit des Roboters ergibt sich aus den Radgeschwindigkeiten: v=vR+vL2

Die Winkelgeschwindigkeit um die Hochachse (Gierrate) beträgt: ωz=vR−vLl

Dabei bezeichnet l den Abstand zwischen den beiden Antriebsrädern.

Die Krümmung ist definiert als Verhältnis der Winkelgeschwindigkeit zur translatorischen Geschwindigkeit:

κ=ωzv

Durch Einsetzen ergibt sich: κ=2(vR−vL)b(vR+vL)

Berechnung aus den Weginkrementen Werden die zurückgelegten Radstrecken innerhalb eines Abtastintervalls verwendet, gilt:

  • ΔsL=vLΔt
  • ΔsR=vRΔt

Damit lässt sich die Krümmung direkt aus den Weginkrementen berechnen: κ=2(ΔsR−ΔsL)l(ΔsR+ΔsL)

Die Abtastzeit Δt kürzt sich bei dieser Berechnung heraus.

Umsetzung (Do)

Zuerst muss der IMU MPU-9250/6500 Gierratensensor auf dem Alphabot montiert werden. Mit einer Halterung für den Sensor wird mittig zwischen den Rädern befestigt. In Abbildung 3 ist der montierte Gierratensensor zu erkennen. Anschließend muss der Sensor angeschlossen werden. Durch die Verwendung der Anschlüsse SCL und SDA des Gierratensensors erfolgt die Datenübertragung über I2C. In der nachfolgenden Tabelle sind die verwendeten Anschlüsse aufgelistet.

Tabelle 2: Anforderungen an die Spurerkennung
Nr. Anschluss-PIN Senesor Anschluss-Pin Arduino
1 VCC 3V
2 GND GND
3 SCL A5
4 SDA A4


Programmierung in Simulink

Im nächsten Schritt muss ein Matlab/Simulink-Programm für den IMU MPU-9250/6500 Sensor erstellt werden. Dafür gibt es im Library-Browser ein Supportpackage mit dem Namen "Simulink Support Package for Arduino Hardware“." In dieser ist ein MPU9250 Block enthalten, für den IMU MPU-9250/6500 Gierratensensor. In dem MPU-9250 Block ist zu dem ein Tiefpassfilter enthalten, welcher hochfrequentes Rauschen blockiert. Der MPU-9250 Block ist in Abbildung 4 zu sehen.

In dem MPU-9250 Block wird die Gierrate als 3x1 Vektor ausgegeben. In diesem Vektor sind Werte für die Rotation um die x-Achse (Rollachse), die Rotation um die y-Achse (Nickachse) und die Rotation um die z-Achse (Gierachse) enthalten. Für die Querregelung wird allerdings nur die Gierachse benötigt. Aus diesem Grund werden die Werte in dem Simulink Programm separat ausgegeben, so dass die Werte für die Rotation um die z-Achse weiter genutzt werden können. In Abbildung 5 ist die Aufteilung der der Gierrate in x-, y- und z-Rotation zu sehen.



Test und Dokumentation (Check)

IDEEN SCH

1. Bestimmung der Krümmung aus der Gierrate κ=ψ˙v mit

  • κ: Krümmung in 1/m
  • ψ˙: Gierrate in rad/s
  • v: Fahrzeuggeschwindigkeit in m/s

2. Bestimmen Sie die Krümmung aus der differentiellen Odometrie.
3. Vergleichen Sie die beiden Ansätze.

In diesem Abschnitt werden die definierten Anforderungen überprüft. Der Gierratensensor wurde in sei er Halterung angebracht. Die Prüfung erfolgt in einem Test, bei dem mit der Hand geprüft wurde, dass der Sensor sich in der Halterung nicht bewegt. Die Prüfung der I2C Übertragung erfolgte durch eine Sichtkontrolle, in der die korrekten Anschlussleitungen geprüft wurden. Die endgültige Überprüfung erfolgte anschließend, wenn die Messwerte in dem Simulink Programm zu erkennen sind. Zu Anschließend müssen die Messwerte des Gierratensensors auf Plausibilität geprüft werden. Dafür wurde mit dem AlphaBot eine Halbkreisfahrt gefahren. Für diese Halbkreisfahrt wurde die Zeit gemessen, die für die 180° gebraucht wurde. Mit dieser kann daraufhin die Gierrate berechnet werden. Anschließend wurde der Mittelwert der Gierrate aus den Messwerten des Gierratensensors ermittelt und mit dem berechneten Gierratenwert verglichen. Ein Wert von ±15% wird als korrekt angenommen. In der nachfolgenden Formel ist die Berechnung des Errechneten Gierratenwertes zu erkennen.

ω=πT=180∘13s=13,85∘/s  


In Abbildung 6 sind die Messwerte des Gierrartensensors zu erkennen, welche bei der Halbkreisfahrt aufgenommen wurden. In dem Diagramm wurden die Werte der Gierrate gegenüber der Zeit aufgetragen. Mit Matlab wurde ein Code erstellt, der die Messwerte des Gierratensensors in °/s gegen über der Zeit in s darstellt. Außerdem wurde der Mittelwert dieser Messwert berechnet. Dieser Mittelwert der Gierrate ist letztendlich der Wert, welcher mit dem Berechneten Mittelwert verglichen wurde um die Messwerte des Gierratensensors zu testen. Die Abweichung zwischen dem Mittelwert (15,2°/s) und dem Berechneten Wertes (13,85°/s) beträgt 9,75% und kann so als korrekt angenommen werden.

Δ=|15,2−13,85|13,85⋅100=9,75% 


Tabelle 3: Anforderungen an die Messung und Verarbeitung der Gierrate
ID Priorität Inhalt Testergebnis Erfüllt
1 1 Der Gierratensensor muss am Alphabot montiert werden. Der Gierratensensor wurde auf Höhe der Hinterreifen fest montiert. Ja
2 1 Die Datenübertragung muss über I2C erfolgen. Durch Verwendung der Anschlüsse SCL und SDA konnten erfolgreich Daten über I2C übertragen werden Ja
3 1 Der Gierratensensor muss die Gierrate mit einem Simulink Programm messen. (maximale Abweichung ±15 %) Die Abweichung ist mit 8,88% innerhalb der Abweichungstoleranz von ± 15% Ja

Fehlerbehebung (Act)

Bei der Verwendung des AlphaBots ist darauf zu achten, dass der richtige Sensor angeschlossen ist. Da die AlphaBots von mehreren Studierenden verwendet werden, kann es passieren, dass ein anderer Gierratensensor als der IMU MPU-9250/6500 verbaut ist. Darauf ist zu achten, da sonst der MPU9250-Simulinkblock keine bzw. falsche Werte ausgibt.

Nütliche Artikel



→ zurück zum Hauptartikel: Bildbasierte Spurführung für autonomes Fahren