Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Konzeptentwicklung
Hochschule Karlsruhe Logo Entwicklungsprojekt Master
FT32 - Positionserfassung
Sommersemester 2019
Alexander Haaf
Johannes Marquart

Konzeptentwicklung

1 Optische (Laser-)Maus

Optische Maussensoren nehmen laufend Bilder von der Unterlage auf und berechnen aus dem Kamerabild die Verschiebungen. Die Verschiebungen in x- und y-Richtung (relativ zum Sensor selbst) können direkt über SPI-Bus oder I²C-Bus ausgelesen werden.
Mit 2 Maussensoren kann auch die Ausrichtung durch die unterschiedlichen Quergeschwindigkeiten festgestellt werden, siehe Abbildung unten.

Konzept mit 2 (optischen) Maussensoren
Konzeptskizze: Verwendung von zwei Maussensoren

In einem ersten Versuch mit einem optischen Maussensor ADNS2051 wurde der Sensor erfolgreich von einem ESP32 ausgelesen und die Verschiebung Seriell an den PC übertragen:


ESP32 mit Maussensor ADNS2051

Die Ansteuerung erfolgt über einen Clock-Pin und einem Daten-Pin, die Belegung kann aus dem Datenblatt entnommen werden: ADNS2051_Datasheet.pdf
Das Programm erstellt(e) noch sehr rudimentär einen eigenen Clock, im folgenden wird geprüft, ob der I²C oder SPI-Bus dafür verwendet werden kann.

Ebenso wurde ein PAW3204DB-TJ3R mit einem ESP32 ausgelesen. Dieser Sensor wurde ausgewählt, da dieser (in einer Maus) auf einem spiegelnden Whiteboard sehr gut funktionierte. Wie im Video zu sehen, funktioniert der Sensor auch mit dem ESP32 auf dem Whiteboard:


ESP32 mit Maussensor PAW3204DB-TJ3R

Weitere Konzeptverfolgung:

1.1 Bau eines Prüfstandes zur ersten Kalibrierung des PAW3204DB-TJ3R-Sensors:

Zum Aufnehmen von Messreihen die zur Kalibrierung des PAW-Sensor dienen sollen, wurden unterschiedliche Konzepte verfolgt bzw. aufgebaut die jedoch nicht alle anwendbar waren. Im folgenden wird daher jedes Konzept kurz vorgestellt und ebenso kurz die Gründe warum es dann doch nicht anwendbar war, erläutert:


Prüfstand mit festem Sensor und beweglichem "Untergrund" (Rad)

Beim ersten Konzept war es vorgesehen das nicht die Maus selber bewegt werden sollte, sondern nur ein direkt vor dem Sensor angebrachtes und mit weißem Papier beklebtes Rad. Jedoch waren die hier aufgenommenen Messwerte nicht brauchbar. Es wurde vermutet das dies möglicherweiße an erhöhtem Lichteinfall liegen könnte, was sich jedoch nicht bestätigte und das Konzept darauf hin verweorfen wurde.


Prüfstand mit Spindeltrieb

Beim zweiten Konzept sollte die Maus an einer Spindel, an dessen Ende ein Motor montiert war, vorwärts und rückwärts bewegt werden. Da die Spindel jedoch ein zu großes Spiel hatte, bewegte sich auch die Maus nur mit relativ großen seitlichen Ausschlägen woraufhin auch dieses Konzept verworfen wurde.


Hebelprüfstand

Beim dritten Konzept war es vorgesehen die Maus über einen Hebel, an dessen Ende ein Motor samt Rad befestigt wurde, in einem Winkel von ca. 100° vor- und zurückfahren zu lassen wobei der Radius ca. 142,76mm und die damit gefahrene Strecke ca. 249,16mm betrug. Damit das Vor- Zurückfahren automatisch erfolgen konnte wurden auch zwei Endschalter installiert. Da hier die Bewegung der Maus ohne Auschläge erfolgte und die Messwerte brauchbar waren, wurde dieses Konzept weiterverfolgt und zur Aufnahme der Messreihen verwendet.

Der Prüfstand erlaubt die Bestimmung eines von der Fahrgeschwindigkeit näherungsweise unabhängigen Faktors, mit denen die Rohwerte in SI-Einheiten umgerechnet werden. Die Abtastrate des Sensors ist bei den Experimenten auf Standardeinstellung (1000 dpi (Dots per Inch))belassen:


Umrechnungsfaktoren bei verschiedenen Messungen

Eingestellte (Fischertechnik-) Geschwindigkeitsstufen und tatsächliche Geschwindigkeiten bei diesem Prüfstand:
Messung 1 und 2: Geschwindigkeitsstufe 8    0,1888 m/s
Messung 3: Geschwindigkeitsstufe 7               0,1785 m/s
Messung 4: Geschwindigkeitsstufe 6               0,1588 m/s
Messung 5: Geschwindigkeitsstufe 5               0,1107 m/s
Messung 6: Geschwindigkeitsstufe 4               0,0922 m/s
Messung 7: Geschwindigkeitsstufe 3               0,0504 m/s

Die aus dem Sensor erhaltenen (Roh-)Werte werden also mit 0.008735 m multipliziert um Werte in [m/s] zu erhalten.

Die Tabellen mit den Rohwerten und genauen Berechnungen befinden sich im Anhang.

1.2 Bau eines Experimentalfahrzeugs zum Tragen und Fahren des Breadboards

Mit einem Experimentalfahrzeug sollen erste Erfahrungen mit dem gleichzeitigen Fahren und Auslesen der Sensoren gesammelt werden. Das erste Fahrzeug war auf Basis der fischertechnik Robotics-Baukästen, die Ansteuerung erfolgte über die physikalische I²C-Schnittstelle des FT32. Zu beachten ist hier, dass es sich bei der Kommunikation mit dem Sensor nicht um das I²C-Protokoll handelt.

Experimentalfahrzeug V1
Experimentalfahrzeug 1, basiert auf fischertechnik Robotics, bzw. auf FT32-Minibot

Beim Bau des Fahrzeugs und bei den ersten Tests wurde festgestellt, dass die 3,3V Spannungsversorgung des PAW3204DB-TJ3R-Sensors diesen ggf. beschädigen kann. Eine Spannung von 3,3V ist zusätzlich kritisch, da der ESP32 (als Spannungsquelle) bis zu 3,6V ausgibt. Laut Datenblatt des PAW-Sensors liegt die ideale Versorgungsspannung bei 2,7V (+-0,2V). Es wurde daher beschlossen, einen Pegelwandler (TXB0105 von Adafruit) zu verwenden, welcher die Signale und Ausgangsspannung des ESP32 auf 2,7V skaliert. Diese Erweiterung erforderte ein neues Entwicklungsfahrzeug. Um spätere Erweiterungen leichter umsetzen zu können, trägt das Fahrzeug ein Steckbrett, auf dem alle Bauteile verbaut sind. Die Schaltung entspricht dabei weitestgehend der FT32-Platine.

Experimentalfahrzeug V1
Experimentalfahrzeug 2, Steckbrettträger für erleichterte Entwicklungen

Mit dem neuen Steckbrettaufbau wurde die Qualität der Sensorinformation zunehmend schlechter. Eine genaue Untersuchung mit einem Oszilloskop zeigt, dass die Signale sowohl nahe dem Sensor als auch nahe dem ESP32 so stark verrauscht waren, dass falsche Informationen gelesen werden. Unter anderem ist die Signalqualität stark von der Leitungslänge zwischen dem Sensor und dem neu verbauten Pegelwandler abhängig (Pixart empfiehlt an dieser Stelle des Datenblatts eine Leitungslänge um die 5mm für die Datenübertragung, siehe Datenblatt). Um die Leigungslängen minimal zu halten, wurde das Steckbrett auf dem Fahrzeug tiefer gelegt, sodass sich der Sensor nahe dem Pegelwandler befindet; die Leitungen können so mit kurzen Jumper-Kabeln realisiert werden.

Verkabelung zwischen PAW-Sensor und Pegelwandler
Verkabelung zwischen PAW-Sensor und Pegelwandler

Auch ist in diesem Fahrzeug die Radachse nicht mehr unter, sondern neben dem Steckbrett. Somit kann später ein Zeichenstift für (genaue) Zeichnungen in die Drehachse des Fahrzeugs platziert werden.

Da das Experimentalfahrzeug wie die Roboter mit Bauteilen der Fischertechnik gebaut wurde, wurde anstatt des Computermausunterbodens eine eigene Sensoraufnahme bzw. Gehäuse mittels CAD konstruiert. Die vorher noch relativ komplizierte Anbringung des Computermausunterbodens mit Hilfe von diversen Einzelteilen, bei der vor allem die genaue Platzierung des Sensors Probleme bereitet hat, entfällt dementsprechend durch die so neugewonnene Kompatibilität mit den Bauteilen der Fischertechnik. Die Aufnahme kann jederzeit leicht installiert bzw. entfernt werden. Konkret werden in der Aufnahme die Linse, der Maussensor sowie eine LED samt Vorwiderstand untergebracht. Bei der ersten Version war erstmal nur eine Nut vorgesehen, was allerdings die gezielte Platzierung des Sensors immer noch zu sehr einschränkte. Darüber hinaus gab es auch keine Aussparrungen in denen gezielt Leitungen verlegt werden konnten, wodurch Vorwiderstand und Masseleitung der LED in der Luft hingen.


Version 1 der Maussensoraufnahme

Bei Version 2 wurden daher anstatt nur einer Nut an allen Seiten horizontale Nuten in die Konstruktion eingearbeitet, mit denen die Flexibilität Bezüglich der Platzierung des Sensors weiter erhöht werden konnte. Ebenso wurden jetzt auch Aussparrungen zur Leitungsverlegung berücksichtigt.


Version 2 der Maussensoraufnahme

Aufgrund der noch relativ engen Platzverhältnisse innerhalb der Sensoraufnahme war die Platzierung und Entnahme der einzelnen Bauteile und insbesondere der Linse samt Maussensor leider noch relativ schwierig gestaltet. Daher wurde bei Version 3 etwas mehr Platz für Linse und Maussensor vorgesehen. Daneben wurde anstatt der vorher noch horizontalen Nuten nun vertikale Nuten verwendet. Der Grund hierfür ist, dass sich der 3D-Druck nun wesentlich einfacher gestaltet, da keine Stützstrukturen während des Druckes verwendet werden müssen. Eine weitere Annehmlichkeit, die hierdurch entsteht, ist dass die Nacharbeit fast gänzlich entfällt. Eine weitere Kleinigkeit, die ebenso in die Konstruktion eingearbeitet wurde, ist die Erweiterung der Aussparrungen zur Verlegung von Leitungen. Die ist nun durchgehend, wodurch nun auch hinter dem Maussensor und hinter der Led etwas Platz für Leitungen vorhanden ist.


Version 3 der Maussensoraufnahme

Es sei an dieser Stelle vorweggenommen das bei späteren Testfahrten, die unter Punkt 1.7 behandelt werden, herausgefunden wurde, dass je nach Oberfläche auf dem sich der Sensor befindet, die Höhe des Sensors bzw. der Linse über der Oberfläche angepasst werden muss. Nähere Details hierzu sind unter Punkt 1.7 zu finden.

1.3 Entwicklung der Schaltung für das Fahrzeug und die Ansteuerung des PAW3204DB-TJ3R-Sensors

Da der Sensor mit einem Spannungsbereich von 2,5V bis 2,9V arbeitet, der ESP32 hingegen mit 5V/3,3V mussten die Pegel von letzterem angepasst werden, da der Sensor ansonsten Schaden nehmen könnte. Hierzu wurde ein sogenannter Level Shifter bzw. Pegelwandler ausgewählt, der auf der B-Seite 3,3V und auf der A-Seite die eingangs genannte Spannung zwischen 2,5V und 2,9V benötigt. Während die 3,3V vom ESP32 abgegriffen werden kann, wird für die Versorgungsspannung des Sensors aus zeittechnischen Gründe ein einfacher Spannungsteiler verwendet. Dabei wurde nach der Besichtigung der im Labor vorhandenen Widerstände zunächst ein 1kOhm Widerstand ausgewählt und der untere Widerstand in dessen Abhängigkeit und unter der Vorgabe von 3,3V als Gesamtspannung sowie 2,7V (Mittelwert) als Versorgungssspannung des Sensors berechnet. Die Berechnung ergab einen Widerstandswert von 4,5kOhm. Da dieser jedoch nicht vorhanden war, wurde stattdessen ein 4,7kOhm Widerstand eingesetzt. Die Betriebsspannung betrug hier dann 2,72V. Nach ersten Tests hat sich dann allerdings herausgestellt, dass die Widerstandswerte zu hoch sind und der für den Sensor und die LED benötigte Strom nicht geliefert werden kann. Dies hat sich durch eine sehr instabile Erfassung der Geschwindigkeitswerte und Kommunikation mit dem ESP32 gezeigt. Nach Anpassung der Widerstände auf 15Ohm und 47Ohm konnte der benötigte Strom schließlich bereitgestellt werden. Die Betriebsspannung beträgt hier 2,5V und ist damit im zulässigen Bereich. Die Berechungen des Spannungsteilers können hier als PDF-Datei heruntergeladen werden: Download

Ergebnis der Pegelanpassung von 3,3V auf 2,7V
Gelb: 3,3V-Clock        Grün: 2,5V-Clock
Ergebnis der Pegelanpassung: Die A-Seite des Pegelwandlers gibt zuverlässig 2,5V entsprechend der Versorgungsspannung aus. Die "unsaubere" fallende Flanken fallen nicht ins gewicht, da die Pegel nur bei der steigenden Flanke ausgelesen werden

Zur Beseitigung der Überschwingungen war es notwendig Zenerdioden mit 3,3V Sperrspannung an GPIO22 (SCLK) und GPIO21 (SDIO) des ESP32 bzw. an der B-Seite des Pegelwandlers einzusetzen. Dabei wurden auch Strombegrenzungswiderstände zwischen ESP32 und Zenerdioden geschaltet. Die Berechnung des Widerstandswertes ergab ursprünglich 46,7Ohm. Es hat sich jedoch herausgestellt des jetztige Strom nicht mehr ausreicht, weshalb auf 12Ohm für beide Zenerdioden heruntergegangen wurde. Die Berechungen der Zener-Dioden und der ursprünglichen Strombegrenzungswiderstände können hier als PDF-Datei heruntergeladen werden: Download

Des Weiteren werden mehrere Kondensatoren zur sonstigen Spannungsstabilisierung bzw. -glättung eingesetzt. Konkret sind diese an GPIO22 (SCLK) und GPIO21 (SDIO) des ESP32 bzw. an der B-Seite des Pegelwandlers, am 3,3V Pin des ESP32 bzw. Versorgungspin der B-Seite des Pegelwandlers und am Spannungsteiler bzw. Versorgungspin der A-Seite des Pegelwandlers angebracht. Dabei wurde für die Berechnung der Kondensatoren an der B-Seite des Pegelwandlers die Taktrate von 2,6MHz aus Punkt 1.4 herangezogen um daraus die Periodenzeit T zu ermitteln. Für die Zeitkonstante Tau wurde 1/20 von T angenommen. Mithilfe von Tau und dem Strombegrenzungswiderstand konnte schließlich die Kapazität mit 1,6nF für die einzelnen Kondensatoren berechnet werden. Da solche Kondensatoren allerdings im Labor nicht vorhanden waren, wurden stattdessen einfache Verbindungsleitungen verwendet, die für die Berechnung der Kapazität als Plattenkondensatoren angenommen wurden. Die Berechnung ergab hier schließlich 6,638*10^-2pF. Trotz der Tatsache das dieser Wert niedriger ist als derjenige der ursprünglich berechnet wurde, haben Tests mit den einfachen Leitungen gezeigt das es hiermit gut funktioniert. Für den Glättungskondensator, der am Versorgungspin der A-Seite des Pegelwandlers angeschlossen ist, wurde ein Richtwert von 47uF genommen von dem man ausgeht, dass dieser einen ausreichend hohen Ladestrom liefert. Dies gilt ebenso für den Glättungskondensator der am 3,3V Pin des ESP32 angeschlossen ist, wobei hier die Kapazität 10uF beträgt. Die Berechnungen zu den Kondensatoren können hier als PDF-Datei heruntergeladen werden: Download

Am Taster der später zum starten und stoppen des Experimentalfahzeugs dienen soll, ist zudem noch ein Pull-Up-Widerstand angebracht. Dies wurde so von der ESP32-HWK-Gruppe übernommen.

Alle verwendeten elektronischen Bauteile:

1) PAW3204DB-TJ3R
2) Rote LED (Hier nur beispielhaft, die LED kann sich äußerlich und geometrisch hiervon unterscheiden)
3) Widerstand 100 Ohm
4) Keramik-Kondensator 47uF
5) Elektrolyt-Kondensator 1,5nF (Ursprünglich), dann 6,638*10^-2pF (Einfache Verbindungsleitung)
6) Elektrolyt-Kondensator 1,5nF (Siehe 5))
7) Druckschalter
8) Levelshifter TXB0104
9) Widerstand 15 Ohm
10) Widerstand 47 Ohm
11) ESP32
12) Wiederstand 10 kOhm
13) Elektrolyt-Kondensator 10 uF
14) NiMH Akku 8,4 V / 1800 mAh (Hierfür wurde ein im Programm Fritzing bereits vorhandenes Bauteil kopiert und bezüglich der Typ-Beschriftung angepasst, der tatsächlich verwendete Akku von der Fischertechnik unterscheidet sich äußerlich und geometrisch leicht davon)
15) Widerstand 12 Ohm
16) Widerstand 12 Ohm
17) Motortreiber A4990 (Hierfür wurde ein im Programm Fritzing bereits vorhandenes Bauteil kopiert und bezüglich der Anschluss-Beschriftung angepasst, der tatsächlich verwendete Motortreiber von POLOLU unterscheidet sich äußerlich und geometrisch leicht davon)
18) DC-DC-Wandler D24V22F5 (Hierfür wurde ein im Programm Fritzing bereits vorhandenes Bauteil kopiert und bezüglich der Anschluss-Beschriftung und deren Anzahl angepasst, der tatsächlich verwendete DC-DC-Wandler von POLOLU unterscheidet sich äußerlich und geometrisch leicht davon)
19) Zener-Diode 3,3 V Sperrspannung (Hierfür wurde eine im Programm Fritzing bereits vorhandene Zener-Diode ohne Abänderung verwendet, die tatsächlich verwendete Zener-Diode kann sich äußerlich und geometrisch hiervon unterscheiden)
20) Zener-Diode 3,3 V Sperrspannung(Siehe 19))
21) DC-Motor 9 V (Hierfür wurde eine im Programm Fritzing bereits vorhandene Zener-Diode ohne Abänderung verwendet, die tatsächlich verwendeten Moteren von der Fischertechnik unterscheiden sich äußerlich und geometrtisch davon)
22) DC-Motor 9 V (Siehe 21))

Nachfolgend ist die ungefähre Platzierung sowie die Verdrahtung der in der Liste genannten Bauteile (Fritzing-Steckplatine) zu sehen. Zwecks einfacherer Darstellung wurde auf die Fischertechnikbauteile als auch auf die Maussensoraufnahme verzichtet. Ausgenommen hiervon sind nur die Fischertechnik-Motoren, da diese am Motortreiber angeschlossen sind. Der dazugehörige Schaltplan ist im Unterkapitel Schaltplan zu finden.


Steckbrettaufbau des Experimentalfahrzeugs

Zum Vergleich ist nachfolgend der aktuelle reale Steckbrettauf inklusive aller Fischertechnikbauteile als auch der Maussensoraufnahme zu sehen.


Aktueller realer Steckbrettaufbau mit allen Bauteilen

1.4 Untersuchung der (korrekten) Ansteuerung des PAW3204DB-TJ3R-Sensors

Die Kommunikation mit dem Sensor (schreibend und lesend) erfolgt über das Ansprechen einer Adresse auf dem Sensor und der anschließenden Übertragung der Daten

Transmission Protocol
Übertragungsprotokoll für PAW3204DB-Sensoren

Anhand dem Datenblatt eines vergleichbaren Maussensors (PAW3204) werden die zum Betrieb notwendigen Register auf dem Sensor gesetzt. Im laufenden Betrieb muss das Register "Motion_Status" gelesen werden. Beim Lesen des Registers werden die Geschwindigkeitswerte intern eingefroren. Man erhält dabei auch die Information, ob seit dem letzten Auslesen eine Bewegung stattgefunden hat. Anschließend können die beiden Register "Delta_X" und "Delta_Y" ausgelesen werden, diese enthalten mit einer 8Bit Auflösung die Geschwindigkeitswerte. Jetzt kann der Vorgang mit dem Lesen des Registers "Motion_Status" wiederholt werden.

Vorbereitend kann über das Register "Configuration" der Sensor zurückgesetzt werden (Reset) und die Auflösung (DPI) des Sensors angepass werden.

Der I²C-Bus kann wegen einem (kleinen) Unterschied in den Protokollen nicht genutzt werden: das Lese-/Schreibe-Bit liegt beim I²C als LSB vor, bei dem PAW-Sensor ist dieses das MSB. Daher wird zur Kommunikation zwischen dem ESP32 und dem PAW-Sensor behelfsmäßig in einem eigenen Thread ein Clock durch abwechselndes setzen und zurücksetzen des Clockpins erstellt und parallel dazu der Datenpin beschrieben/ausgelesen. Der PAW-Sensor schreibt und liest die Daten auf der Datenleitung wärend der steigenden Flanke des Taktsignals, siehe Abbildung unten.

Pegel zum Beschreiben des PAW-Sensors
Pegel zum Beschreiben eines PAW3204DB-Sensors

Pegel zum Lesen des PAW-Sensors
Pegel zum Beschreiben eines PAW3204DB-Sensors

Umgesetzt wird das Takt- und Datensignal (im Programm) innerhalb einer Schleife, indem die Pegel der Pins mit den Arduino-C++-Befehlen  "digitalWrite()" und "digitalRead()" gesetzt bzw. gelesen werden. Eine solche Umsetzung ergibt eine Taktrate von ca. 2,5MHz bis 2,63MHz, siehe Abbildung unten. Laut Datenblatt können die PAW3204DB-Sensoren mit bis zu 10MHz ausgelesen werden.

Pegelverlauf beim Beschreiben des Sensors

Gelb: Clock        Grün: Daten
Beschreiben des Sensors (controllergesteuert), hier für das ansprechen einer Adresse (0x02 = Statusregister). Man sieht, dass der Datenpegel bei der steigenden Taktflanke einen definierten Pegel annimmt. (Gemessen auf Controllerseite des Pegelwandlers)
 

Pegelverlauf beim Lesen des Sensors

Gelb: Clock        Grün: Daten
Lesen des Sensors (sensorgesteuert), hier wird das vorher angefragte Register ausgelesen (0x04). Auch hier ändert sich der Datenpegel so, dass bei steigender Taktflanke ein definierter Pegel am Controllereingang anliegt. (Gemessen auf Controllerseite des Pegelwandlers)

Zu Beachten sind die Pausen zwischen den Nachrichten: Anhand von Experimenten wurde festgestellt, dass der Sensor nur dann zuverlässig funktioniert, wenn nach einer Übertragung mindestens 5µs gewartet wird. Auch braucht das Lesen des Sensors eine kleine Pause zwischen dem Ansprechen des Registers und der Ausgabe durch den Sensor selbst (in Abbilundung oben mit HI-Z gekennzeichnet) von mindestens 3µs. Aufgerundet wird dies auf 4µs, da der ESP32 nur ganzzahlige Vielfache von ca. 4µs warten kann.
In der folgenden Abbildung sieht man eine vollständige Übertragung der gemessenen Geschwindigkeit. Im ersten "Block" wird das "Motion_Status"-Register angefragt. Die Antwort (2. Block) enthält im 1. Bit, dass Bewegungsinformationen vorliegen. Darauf wird das "Delta_X"-Register (3. Block) abgerufen welches mit der Bewegungsinformation in X-Richtung (4. Block) antwortet. Genauso wird mit der Y-Richtung verfahren (5. und 6. Block).

Vollständige Abfrage aller Bewegungsinformationen
Gelb: Clock        Grün: Daten
Vollständige Übertragung aller Bewegungsinformationen

1.5 Verwendung eines Maussensors zur Feststellung der Position und Drehung eines Fahrzeugs

Zur Berechnung der Geschwindigkeit und Position des Fahrzeugs werden folgende Koordinaten verwendet:

Koordinatensysteme im Fahrzeug und Sensor
Koordinatensysteme im Fahrzeug und Sensor

A: Drehpunkt des Fahrzeugs, Ursprung des Fahrzeugkoordinatensystems xy
S: Position des Sensors, Ursprung des Sensorkoordinatensystems x'y'
l: Abstand des Sensors zur Radachse (muss bei einem Sensor immer ungleich 0 sein)
d: Abstand des Sensors zur Fahrzeuglängsachse
α: Winkel zwischen Fahrzeuglängsachse und Strecke AS:

Daraus kann die Winkelgeschwindigkeit berechnet werden:

Sowie die Fahrgeschwindigkeit:

Durch (numerische) Integration der beiden Geschwindigkeiten erhält man die tatsächliche Position relativ zum letzten Startpunkt.
Gefahrene Strecke:         Zurückgelegter Winkel:

Die ausführliche Herleitung befindet sich hier zum Download: Berechnungen Geschwindigkeit und Position.pdf

1.6 Testfahrten

Um die Positionsgenauigkeit des Experimentalfahrezugs nach einer Bewegung zu untersuchen, wurden diverse Testfahrten auf unterschiedlichen Oberflächen durchgefüht. Im Allgemeinen konnte hierdurch herausgefunden werden, dass je nach Oberfläche die Höhe des Sensors leicht angepasst werden musste, damit mit diesem eine Positionserfassung möglich war. Der Bereich in dem die Anpassung durchzuführen ist, beträgt laut Datenblatt 2,3 bis 2,5 mm zwischen Oberfläche und der Linse auf dem der Sensor befästigt ist. Für die eigens konstruierte Maussensoraufnahme wurde die Höhe von der ursprünglichen Microsoft-Maus übernommen und mit 2,2mm so im CAD-Programm eingetragen. Obwohl dies laut dem Datenblatt eigentlich zu niedrig ist, funktionierte die Microsoft-Maus zuverlässig auf allen Oberflächen. Die Testfahrten mit dem Experimentalfahrzeug haben jedoch gezeigt, dass dies hier nicht unbedingt der Fall ist. Auf den im Labor befindlichen Tischen als auch auf dem Whitboard konnten zunächst vielversprechende Testfahrten durchgeführt werden, die beweisen dass auf diesen Oberflächen die Positionserfassung zum einen möglich und zum anderen potenziell noch verbesserbar ist. Bezüglich den Tischen ist zum besseren Verständnis an dieser Stelle noch anzumerken, dass diese eine leicht angeraute Oberfläche und Hellgrau sind. Auf weißen Papier jedoch, welche von einer großen DIN A1 Rolle stammt, konnte plötzlich keine kontrollierte Fahrt mehr durchgeführt werden. Aus diesem Grund wurde beschlossen, den Abstand zur Oberfläche noch weiter auf 2mm zu verringern, woraufhin die Positionserfassung wieder auf allen getesteten Oberflächen und insbesondere auf weißen Papier möglich war, allerdings mit unterschiedlichem Erfolg. Nachfolgend befinden sich Videos die die Testfahrten dokumentieren:


Haus des Nikolaus Zeichnen

In diesem Video ist zu sehen wie das Experimentalfahrzeug mit einem auf der Drehachse eingespanntem Filzstift das Haus des Nikolaus zeichnet. Die Oberfläche auf dem es sich befindet ist weißes Papier. Trotz kleinerer Fehler und Ungenauigkeiten kann man klar erkennen das die Positionserfassung hier bereits respektable Ergebnisse liefert.


Kalibrierfahrt durch Geradeausfahren

In diesem Video ist zu sehen wie das Experimentalfahrzeug vier mal 10cm, also insgesamt 40cm, gerade aus fährt. Zur Überprüfung der Genauigkeit wurde direkt neben das Fahrzeug ein Maßstab plaziert. Die Oberfläche auf dem es befindet ist hier jetzt das Whiteboard. Auch hier ist zu erkennen das der Fehler in der Positionserfassung relativ klein ist, solange das Fahrzeug gerade aus fährt.


Geradeausfahren - hier ist die Arbeit der seitlichen Regelung zu sehen

Dieses Video dient ebenso zur Demonstration der Geradeausfahrt. Hier jedoch von vorne um zu sehen wie stark das Fahrzeug seitlich wegdriftet. Die seitliche Abweichung ist gering.


Drehungen des Fahrzeugs auf dem Whiteboard

Zuletzt ist diesem Video zu sehen wie sich das Experimentalfahrzeug 4 mal um 90° bzw. insegesamt um 360° dreht. Als Oberfläche dient hier ebenso das Whiteboard, auf dem zur besseren Visualisierung der Drehgenauigkeit ein Kreuz eingezeichnet wurde. Es ist klar zu erkennen, dass sich Fahrzeug bei jeder Drehung zu weit dreht, wodurch sich zum einen jeder Fehler fortpflanzt und sich zu den anderen addiert. Der Gesamtfehler nach vier 90° Drehungen beträgt ca. 15° bzw. ca 4% im Vergleich zum Sollwert.

In einem früheren Test war der Masussensor etwas höher platziert (ca. 0,2mm). Mit dieser Einstellung funktioniert der Sensor sogar sehr gut auf der Whiteboard-Fläche:


Vierecke Zeichnen auf dem Whiteboard

Am Anfang des Videos ist gut zu sehen, wie der Sensor einzelne Messungen verliert. In dem Fall gibt er der Geschwindigkeitsregelung zurück, dass er sich nicht bewegt, die Regelung versucht dann, mit höherer Raddrehzahl die Sollgeschwindigkeit zu erreichen. Dies führt zu den sichtbaren Sprüngen bei der Drehgeschwindigkeit. Besonders beim Whiteboard ist es daher Wichtig, die korrekte Höhenposition zu finden.

In einem weiteren Test wurde die Wiederholbarkeit des geradeausfahrens und 180°-Kehrten getestet:


Geradeausfahren und 180°-Kehrten auf dem Whiteboard

Bei dieser Testfahrt war noch keine Korrektur vorhanden für die leicht seitliche Positionierung des Sensors, daher fährt und zeichnet das Fahrzeug bei den 180°-Kehrten einen kleinen Kreis.

1.7 Verwendung von 2 Mäusen zur Feststellung der Drehung eines Fahrzeugs

In verschiedenen Forschungs- und Entwicklungsprojekten wurde die Verwendung mehrerer 2D-(Maus-)Sensoren untersucht. Zusammengefasst lässt sich sagen, dass für eine vollständige Bewegungserfassung auf einer 2D-Ebene (2 Linearachsen, eine Rotationsachse) 2 Sensoren ausreichend sind.

Unter den folgenden Links können wissenschaftliche Publikationen heruntergeladen werden, in denen Positionerfassung mit zwei Maussensoren durchgeführt und untersucht wird:

Titel: Dead Reckoning for Mobile Robots Using Two Optical Mice
Link: https://www.researchgate.net/publication/221645389_Dead_Reckoning_for_Mobile_Robots_Using_Two_Optical_Mice

Titel: Dead-Reckoning for Mobile Robots Using Multiple Optical Mouse Sensors
Link: https://www.researchgate.net/publication/226580141_Dead-Reckoning_for_Mobile_Robots_Using_Multiple_Optical_Mouse_Sensors

Titel: Optimal placement of optical mice for accurate mobile robot velocity estimation
Link: https://link.springer.com/article/10.1007/s12555-012-0462-x

In der bisherigen Konzeptentwicklung wird nur ein Sensor verwendet. Auch so ist eine vollständige Messung möglich, jedoch ist die Sensorpositionierung nicht beliebig möglich und es müssen Voraussetzungen an das Fahrzeug gestellt werden:
Das verwendete Experimentalfahrzeug hat nur eine angetriebene (Rad-)Achse und das Fahrzeug kann sich nur senkrecht zu dieser Achse bewegen, d.h. in X-Richtung des fahrzeugfesten Koordinatensystems. Eine Bewegung in Y-Richtung (parallel zur Radachse) ist nicht möglich und der Drehpunkt des Fahrzeugs immer liegt auf dieser Achse.
Der Sensor darf dabei nicht auf der Achse positioniert werden, da sonst keine Drehinformationen erhalten werden. Ideal positioniert ist der Sensor so, dass bei reinen Drehungen des Fahrzeugs die Absolutgeschwindigkeiten des Sensors in der gleichen Größenordnung liegt wie bei reinen Translationsbewegungen des Fahrzeugs.

Werden die obigen punkte beachtet, kann eine ausreichende Positionsbestimmung mit nur einem Sensor durchgeführt werden.

Ein weiteres Argument für die Verwendung von nur einem Sensor ist die Anschlussmöglichkeit an einen FT32-Controller. Dieser bietet in der Version 07.2019 genau einen nach außen geführten I²C – Stecker. Das Kommunikationsprotokoll für den PAW3204DB-TJ3R ist dem I²C-Protokoll sehr ähnlich und kann daher an die gleichen Pins angeschlossen werden. I²C-Anschluss am FT32
I²C-Anschluss am FT32

2    Kugelmaus

Die Positionsmessung einer Kugelmaus kann ähnlich zum obigen Konzept (1) verwendet werden. Vorteil ist hierbei, dass die rollende Kugel unempfindlich gegen glatte/spiegelnde Oberflächen ist.
Maße einer typischen Kugel: Durchmesser = 22mm, Masse = 32g

Aufgrund der erfolgreichen ersten Tests mit dem optischen Sensor PAW3204DB-TJ3R wurde dieses Konzept nicht weiter verfolgt.

3    Beschleunigungssensor und Gyroskop

Völlig unabhängig vom Untergrund und sonstigen Einflüssen ist die Verwendung dieser Sensorik. Durch einfache Integration der Rotationsgeschwindigkeit und 2facher Integration der Beschleunigung kann die Position und Ausrichtung festgestellt werden. Problematisch ist dabei der Offsetfehler, der bei länger andauernden Messung einen immer größeren Fehler liefert.

Konzept mit Beschleunigungssensor und Gyroskop
Konzeptskizze: Verwendung eines Gyroskops und Beschleunigungsmessers

Aufgrund der erfolgreichen ersten Tests mit dem optischen Sensor PAW3204DB-TJ3R wurde dieses Konzept nicht weiter verfolgt.

4    Miniaturkamera: ADNS 3080 oder ESP32 Cam

a)    Eine Kamera auf dem Roboter filmt die Umgebung. Anhand der Änderung der Bilder berechnet der ESP32 dann die Eigenbewegungen.
Unterstützt werden kann die Bewegungserkennung durch eine Aktive externe Beleuchtung, siehe Grafik.

Konzept Kamera mit LED-Band
Konzeptskizze: Verwendung einer fahrzeuggebundenen Kamera bei bekannter Umgebung

Die unterschiedlichen Fahrbahnränder kann auch unabhängig der Farbe erkannt werden, wenn die LEDs oder LEDstreifen codierte Signale ausgeben, z.B. im Bereich oberhalb 200Hz, welche für Menschen nicht sichtbar sind. Möglich wäre z.B. ein Blinken der Roten LEDs mit 211Hz, die Grünen mit 251Hz und die Blauen mit 307Hz (Primzahlen), welches dann von der Auswertesoftware erkannt werden muss. Dies setzt aber voraus, dass diese Frequenzen mit der Kamera aufnehmbar sind:
Bildweiderholfrequenz der Kamera >= max. Blinkfrequenz * 2 = 614Hz

b)    Eine Erfassung der absoluten Position kann mit einer festen Kamera oberhalb der Fahrbahn realisiert werden. Die Kamera filmt dabei die gesamte Fahrbahn und erkennt z.B. anhand von Markern auf dem Fahrzeug die Position und Richtung.

Konzept feste Kamera filmt Fahrzeug mit Markern
Konzeptskizze: Verwendung einer Festen externen Kamera

Diese Konzepte würde viel Aufwand bezüglich einer guten Bildverarbeitung bedeuten.
Aufgrund der erfolgreichen ersten Tests mit dem optischen Sensor PAW3204DB-TJ3R wurden diese Konzepte nicht weiter verfolgt.

5    Abstandssensor in definierter Umgebung

Ist die Umgebung weitestgehend bekannt, wie z.B. das Whiteboard, kann mit einem oder mehreren Abstandssensoren die Umgebung abgetastet und aus den verschiedenen entfernungen die Position und Ausrichtung bestimmt werden.

Aufgrund der erfolgreichen ersten Tests mit dem optischen Sensor PAW3204DB-TJ3R wurde dieses Konzept nicht weiter verfolgt.


  Mit Unterstützung von Prof. J. Walter Sommersemester 2019