Inhaltsverzeichnis:
- Schritt 1: Warum eine Trägheitsmesseinheit verwenden?
- Schritt 2: Wie verwende ich BNO055 für die 2D-Lokalisierung?
- Schritt 3: Hardware Point of Vue
- Schritt 4: Wie funktioniert es?
- Schritt 5: Die Architektur und Software
- Schritt 6: Was habe ich gelernt?
Video: Eine Möglichkeit, eine Trägheitsmesseinheit zu verwenden? - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Der Kontext:
Ich baue zum Spaß einen Roboter, den ich autonom in einem Haus bewegen möchte.
Es ist eine lange Arbeit und ich arbeite Schritt für Schritt.
Ich habe bereits 2 instructables zu diesem Thema veröffentlicht:
- eine über die Herstellung eines Rad-Encoders
- eine über WLAN-Verbindung
Mein Roboter wird mit Hilfe meines selbstgebauten Radencoders von 2 DC-Motoren angetrieben.
Ich verbessere derzeit die Bewegungssteuerung und habe einige Zeit mit Gyroskop, Beschleunigungsmesser und IMU verbracht. Diese Erfahrung möchte ich gerne teilen.
Sie möchten mehr über die Lokalisierung erfahren? Hier ist ein Artikel darüber, wie man künstliche Intelligenz und Ultraschall kombiniert, um den Roboter zu lokalisieren
Schritt 1: Warum eine Trägheitsmesseinheit verwenden?
Warum habe ich also eine IMU verwendet?
Der erste Grund war, dass, wenn der Rad-Encoder präzise genug ist, um eine gerade Bewegung zu kontrollieren, ich selbst nach dem Tuning keine Genauigkeit für die Drehung von weniger als +- 5 Grad erreichen konnte, und das ist nicht genug.
Also habe ich 2 verschiedene Sensoren ausprobiert. Zuerst verwende ich ein Magnetometer (LSM303D). Das Prinzip war einfach: Vor der Drehung die Nordausrichtung ermitteln, das Ziel berechnen und die Bewegung anpassen, bis das Ziel erreicht ist. Es war etwas besser als mit dem Encoder, aber mit zu viel Dispersion. Danach habe ich versucht, ein Gyroskop (L3GD20) zu verwenden. Das Prinzip bestand darin, nur die vom Sensor gelieferte Rotationsgeschwindigkeit zu integrieren, um die Rotation zu berechnen. Und es hat gut funktioniert. Ich konnte die Rotation bei +- 1 Grad kontrollieren.
Trotzdem war ich neugierig, einige IMU auszuprobieren. Ich wähle eine BNO055-Komponente. Ich habe einige Zeit damit verbracht, diese IMU zu verstehen und zu testen. Am Ende habe ich mich aus folgenden Gründen für diesen Sensor entschieden
- Ich kann die Rotation genauso gut steuern wie mit dem L3GD20
- Ich kann eine leichte Drehung erkennen, wenn ich mich geradeaus bewege
- Ich benötige eine Nordorientierung für die Roboterlokalisierung und die Kompasskalibrierung des BNO055 ist sehr einfach
Schritt 2: Wie verwende ich BNO055 für die 2D-Lokalisierung?
BNO055 IMU ist ein intelligenter 9-Achsen-Sensor von Bosch, der absolute Orientierung bieten kann.
Das Datenblatt bietet eine vollständige Dokumentation. Es ist eine High-Tech-Komponente, es ist ein ziemlich komplexes Produkt, und ich habe einige Stunden damit verbracht, zu lernen, wie es funktioniert und verschiedene Möglichkeiten auszuprobieren, es zu verwenden.
Ich denke, es könnte nützlich sein, diese Erfahrung zu teilen.
Zuerst habe ich die Adafruit-Bibliothek verwendet, die ein gutes Werkzeug zum Kalibrieren und Entdecken des Sensors bietet.
Am Ende und nach vielen Tests habe ich mich dafür entschieden
- Verwenden Sie die Adafruit-Bibliothek nur zum Speichern der Kalibrierung
- Verwenden Sie 3 aller möglichen Modi von BNO055 (NDOF, IMU, Compss)
- Widmen Sie einen Arduino Nano, um die Lokalisierung basierend auf BNO055-Messungen zu berechnen
Schritt 3: Hardware Point of Vue
BNO055 ist eine I2C-Komponente. Es braucht also Stromversorgung, SDA und SCL, um zu kommunizieren.
Achten Sie nur auf die Vdd-Spannung entsprechend dem von Ihnen gekauften Produkt. Der Bosch-Chip funktioniert im Bereich: 2,4 V bis 3,6 V und Sie können 3,3 V- und 5 V-Komponenten finden.
Die Verbindung zwischen Nano und BNO055 ist problemlos.
- Der BNO055 wird vom Nano. angetrieben
- SDA & SCL sind mit 2 x 2k Pull-Up-Widerständen verbunden.
- 3 LED zur Diagnose am Nano angeschlossen (mit Widerständen)
- 2 Anschlüsse, die verwendet werden, um den Modus nach dem Booten zu definieren
- 1 Stecker in Richtung BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 Stecker zum Roboter/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
Ein bisschen löten und das wars!
Schritt 4: Wie funktioniert es?
Aus kommunikativer Sicht:
- Der Nano ist der I2C-Busmaster
- Der Robot/Mega und der BNO055 sind I2C-Slaves
- Der Nano liest permanent die BNO055-Register
- Der Roboter/Mega gibt ein numerisches Signal aus, um das Wort vom Nano anzufordern
Aus rechnerischer Sicht: Der Nano in Kombination mit dem BNO055 liefert
- Der Kompasskurs (zur Lokalisierung verwendet)
- Ein relativer Kurs (wird verwendet, um Drehungen zu steuern)
- Der absolute Kurs und die absolute Position (wird verwendet, um Bewegungen zu steuern)
Aus funktionaler Sicht: Der Nano:
- verwaltet die BNO055-Kalibrierung
- verwaltet die Parameter und Befehle des BNO055
Das Subsystem Nano & BNO055:
- Berechnen Sie für jedes Roboterrad den absoluten Kurs und die Position (mit einem Skalierungsfaktor)
- Berechnen des relativen Kurses während der Rotation des Roboters
Schritt 5: Die Architektur und Software
Die Hauptsoftware läuft auf einem Arduino Nano
- Architektur basiert auf I2C-Kommunikation.
- Ich habe mich für einen Nano entschieden, da der Atmega, auf dem der Roboter läuft, eher bereits geladen war und diese Architektur die Wiederverwendung an anderer Stelle am einfachsten macht.
- Der Nano liest die BNO055-Register, berechnet und speichert Kurs und Lokalisierung in seinen eigenen Registern.
- Der Arduino Atmega, der den Robotercode ausführt, sendet Rad-Encoder-Informationen an den Nano und liest die Überschriften und die Lokalisierung in den Nano-Registern.
Der Subsystem-Code (Nano) ist hier auf GitHub verfügbar
Das Adafruit-Kalibrierungstool, wenn hier auf GitHub (Kalibrierung wird auf eeproom gespeichert)
Schritt 6: Was habe ich gelernt?
Bezüglich I2C
Zuerst habe ich versucht, 2 Master (Arduino) und 1 Slave (Sensor) am selben Bus zu haben, aber am Ende ist es möglich und am einfachsten, nur den Nano als Master einzustellen und die GPIO-Verbindung zwischen den 2 Arduinos zu verwenden, um den Token anzufordern.
Zu BNO055 zur 2D-Orientierung
Ich kann mich auf 3 verschiedene Betriebsmodi konzentrieren: NDOF (Kombinationsgyroskop, Beschleunigungsmesser und Compas) wenn der Roboter im Leerlauf ist, IMU (Kombinationsgyroskop, Beschleunigungsmesser) wenn sich der Roboter bewegt und Kompass während der Lokalisierungsphase. Das Umschalten zwischen diesen Modi ist einfach und schnell.
Um die Codegröße zu reduzieren und die Möglichkeit zu behalten, den BNO055-Interrupt zur Erkennung von Kollisionen zu verwenden, ziehe ich es vor, die Adafruit-Bibliothek nicht zu verwenden und dies selbst zu tun.
Empfohlen:
So richten Sie einen Raspberry Pi ein und verwenden ihn – wikiHow
So richten Sie einen Raspberry Pi ein und verwenden ihn: Für die Leser der Zukunft sind wir im Jahr 2020. Das Jahr, in dem Sie, wenn Sie das Glück haben, gesund zu sein und nicht mit Covid-19 infiziert sind, plötzlich , hat viel mehr Freizeit, als du dir jemals vorgestellt hast. Wie kann ich mich also nicht zu dumm beschäftigen? Oh ja
So verwenden Sie Fritzing, um eine Leiterplatte zu erstellen – wikiHow
So verwenden Sie Fritzing, um eine Leiterplatte herzustellen: In diesem Instructable zeige ich Ihnen, wie Sie Fritzing verwenden. In diesem Beispiel werde ich einen Energieschild für Arduino erstellen, mit dem das Arduino mit einer Batterie mit Strom versorgt werden kann
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde: HintergrundgeschichteIch habe sechs automatisierte Gewächshäuser, die über Dublin, Irland, verteilt sind. Durch die Verwendung einer maßgeschneiderten Handy-App kann ich die automatisierten Funktionen in jedem Gewächshaus aus der Ferne überwachen und mit ihnen interagieren. Ich kann den Win manuell öffnen / schließen
So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): 4 Schritte
So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): In dieser Anleitung zeige ich Ihnen, wie die meisten Webentwickler ihre Websites erstellen und wie Sie teure Website-Builder vermeiden können, die für eine größere Website oft zu begrenzt sind helfen Ihnen, einige Fehler zu vermeiden, die ich am Anfang gemacht habe
Schnelle und einfache Möglichkeit, Ihren Sperrbildschirm in 6 einfachen Schritten zu ändern (Windows 8-10): 7 Schritte
Schnelle und einfache Möglichkeit, Ihren Sperrbildschirm in 6 einfachen Schritten zu ändern (Windows 8-10): Möchten Sie die Dinge auf Ihrem Laptop oder PC ändern? Möchten Sie eine Veränderung in Ihrer Atmosphäre? Befolgen Sie diese schnellen und einfachen Schritte, um den Sperrbildschirm Ihres Computers erfolgreich zu personalisieren