| Bei OSOYOO kaufen | In den USA kaufen |
Inhalt
Dieses Tutorial zeigt, wie die autonomen Fähigkeiten des OSOYOO V3 Robot Car verbessert werden können, indem der MPU6050 Inertial Measurement Unit (IMU) eingesetzt wird, um eine gewünschte Fahrtrichtung beizubehalten. Der MPU6050 ist ein 3-Achsen-Bewegungssensor, der Winkelgeschwindigkeit (Gyroskop) und lineare Beschleunigung (Beschleunigungssensor) misst und so dem Roboter ermöglicht, seinen Kurs aktiv zu korrigieren. Diese Lektion behandelt Sensorfusions-Techniken und PID-Steueralgorithmen für eine stabile Geradeausfahrt.
Für diese Lektion benötigen Sie das folgende Bauteil. Stellen Sie sicher, dass Sie es bereitliegen haben, bevor Sie beginnen.
| Nr. | Bild | Gerät | Menge | Zubehör | Link |
| 1 | ![]() |
MPU6050 3-Achsen-Gyroskop | 1 | Hier kaufen |
Der MPU6050 vereint ein 3-Achsen-Gyroskop und einen 3-Achsen-Beschleunigungssensor. Das Gyroskop misst die Winkelgeschwindigkeit und liefert so Informationen über die Rotationsgeschwindigkeit des Roboters um seine X-, Y- und Z-Achse. Die Integration dieser Daten über die Zeit ergibt die Winkelverschiebung (z. B. den Gierwinkel). Rohgyroskopdaten unterliegen jedoch einem Drift, d. h. sie häufen mit der Zeit kleine Fehler an. Der Beschleunigungssensor misst die lineare Beschleunigung und kann zur Bestimmung der Geräteorientierung relativ zur Schwerkraft verwendet werden. Obwohl Beschleunigungssensoren über lange Zeiträume stabil sind, reagieren sie empfindlich auf Vibrationen und kurze Bewegungsimpulse, was die Rohdaten rauschig macht.

Schritt 1: Führen Sie den grundlegenden Hardware-Aufbau wie in Lektion 1 des Roboter-Autos beschrieben durch. Falls Sie Lektion 1 bereits abgeschlossen haben, belassen Sie alles wie es ist.

Schritt 2: Befestigen Sie das MPU6050-Modul sicher am Roboter-Chassis wie unten gezeigt. (Der MPU6050 kommuniziert mit dem Arduino über das I2C-Protokoll und benötigt nur zwei Datenleitungen: SDA (Serial Data) und SCL (Serial Clock), sowie Stromversorgung (VCC) und Masse (GND).)

| Open-Source Arduino Software (IDE) |
![]() |
Software hier herunterladen: https://www.arduino.cc/en/Main/Software?setlang=en |
| 7-Zip ist ein kostenloses Programm zum Entpacken von ZIP-Dateien |
![]() |
7-Zip kostenlos herunterladen: https://www.7-zip.org/ |
1. Arduino IDE einrichten: Laden Sie die neueste Arduino IDE herunter und installieren Sie sie: https://www.arduino.cc/en/Main/Software?setlang=en.

2. Beispielcode herunterladen: Laden Sie den Beispielcode für Lektion 2 hier herunter. Entpacken Sie den Inhalt – Sie finden eine Datei namens v3car-lesson2.ino im Ordner v3car-lesson2. Öffnen Sie v3car-lesson2.ino in der Arduino IDE.

3. Bibliotheken installieren
Laden Sie zunächst die Bibliotheks-ZIP-Dateien über die folgenden Links herunter:
https://osoyoo.com/driver/2wd/MPU6050_light.zip
https://osoyoo.com/driver/2wd/PID.zip
Entpacken Sie die Dateien nicht. Öffnen Sie die Arduino IDE -> Sketch -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen. Fügen Sie die ZIP-Dateien nacheinander zur Arduino IDE hinzu.

4. Board und Port auswählen: Verbinden Sie das OSOYOO Basic Board (kompatibel mit Arduino UNO) über ein USB-Kabel mit Ihrem Computer (Wichtig: Stellen Sie sicher, dass der Netzschalter des Roboter-Autos ausgeschaltet und der Akku abgetrennt ist, bevor Sie das Board mit dem PC verbinden). Starten Sie die Arduino IDE. Gehen Sie zu Werkzeuge > Board und wählen Sie Arduino Uno. Gehen Sie dann zu Werkzeuge > Port und wählen Sie den richtigen seriellen Port. Falls Sie unsicher sind, prüfen Sie den Geräte-Manager Ihres Betriebssystems.

5. Code hochladen: Klicken Sie auf die Schaltfläche „Hochladen” (Pfeil-nach-rechts-Symbol), um den Sketch zu kompilieren und auf das OSOYOO Basic Board zu übertragen.

6. Prüfen, ob Arduino den MPU6050 erkennt
Öffnen Sie den Seriellen Monitor (oben rechts in der Arduino IDE), stellen Sie die Baudrate auf 9600 ein, und Sie sollten MPU6050 Found! wie unten abgebildet sehen. Herzlichen Glückwunsch! Der Arduino erkennt den MPU6050 – Sie können das Auto jetzt testen.

Hinweis: Falls „Failed to find MPU6050 chip” angezeigt wird, liegt ein Verkabelungsproblem vor. Stellen Sie sicher, dass:
1) VCC/GND/SDA/SCL des MPU6050 korrekt mit dem OSOLINK Wi-Fi/BLE I/O-Shield gemäß unserer Anleitung verbunden sind
2) Die Arduino-Pins A4/A5 und die SDA/SCL-Pins keine weiteren Kabel haben (bei Linienverfolgungsprojekten können A4/A5 bereits durch den Spurfolgesensor belegt sein)
1) Wie steuert die Move()-Funktion Bewegung und Lenkung des Autos?
Das OSOYOO-Roboter-Auto verwendet Differenzialantrieb. Die Funktion move(speedL, speedR) hat zwei Parameter, speedL und speedR, die die Rotationsgeschwindigkeit des linken bzw. rechten Rades angeben. Der Geschwindigkeitswert liegt zwischen -255 und +255, wobei ein positiver Wert Vorwärtsdrehung und ein negativer Wert Rückwärtsdrehung bedeutet. Zum Beispiel bedeutet move(-50, 100), dass das linke Rad mit Geschwindigkeit 50 rückwärts und das rechte Rad mit Geschwindigkeit 100 vorwärts dreht, was eine scharfe Linkskurve ergibt.
2) Einführung in die MPU6050-Programmierung
Nach der Initialisierung verfolgt das Gyroskop MPU6050 zuverlässig die Ausrichtung des Roboters relativ zu seiner Startrichtung. Wenn das Roboter-Auto von dieser anfänglichen Richtung abweicht, meldet der MPU6050 die Abweichung an den Arduino zurück.
In unserem Code repräsentiert die Variable Direction die Ausrichtung des Autos in dem Moment, in dem es auf den Boden gestellt wird (wir gehen davon aus, dass es vorwärts zeigt, daher setzen wir Direction auf 0).
Nach den Berechnungen in den ersten Zeilen der loop()-Funktion erhalten wir die aktuelle Ausrichtung des Autos in der Variable currentAngle auf Zeile 129.
Durch die Kombination der Antworten auf diese drei Fragen nimmt der PID-Regler eine sanfte und effiziente Lenkkorrektur vor.
PID_v1.h-Bibliothek und Ihrem Code.setup()):// We tell the PID controller what to watch and what to control.
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
Direction = 0; // Our TARGET is to have an angle of 0 degrees.
myPID.SetMode(AUTOMATIC); // Turn on the controller.
loop()):// 1. We get the sensor reading and put it into the Input variable.
Input = currentAngle;
// 2. We call the compute function. This is where the PID magic happens!
myPID.Compute();
// 3. We use the result to control the motors.
int speedL = baseSpeed - Output;
int speedR = baseSpeed + Output;
move(speedL, speedR);
myPID.Compute() erledigt die ganze Arbeit intern. Jedes Mal, wenn sie aufgerufen wird (die Bibliothek verwaltet das Timing basierend auf SetSampleTime), führt sie folgende Schritte durch:Output also +15 ist, benötigt der Roboter eine Korrektur von 15 Einheiten. Wir wenden dies an, indem wir einen Motor verlangsamen (baseSpeed - 15) und den anderen beschleunigen (baseSpeed + 15), wodurch der Roboter dreht und seinen Fehler reduziert. Wenn der Roboter perfekt geradeaus fährt, ist Input gleich 0, der Fehler ist 0 und Output ist 0, sodass beide Motoren mit baseSpeed laufen.4) Kp, Ki und Kd für eine stabile Bewegung einstellen
Ki = 0.0 und Kd = 0.0 in Ihrem Code.Kp-Wert, der stabil ist und nicht (oder kaum) schwingt. Dieser Wert liegt wahrscheinlich unter 1,5.Totzone von etwa 0,5 Grad hinzu, um Sensorrauschen zu ignorieren.Kp stabil ist, erhöhen Sie Kd langsam, um verbliebenes Überschwingen zu reduzieren.Ki langsam, um langfristigen Drift zu eliminieren.Indem Sie diese Richtlinien befolgen und die zugrunde liegenden Prinzipien verstehen, können Sie das OSOYOO V3 Robot Car in eine leistungsfähige Plattform für autonome Navigation verwandeln und damit den Grundstein für fortgeschrittenere Robotikprojekte legen.
DownLoad Url osoyoo.com