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

Stand der Technik

FT32

Ausführliche Informationen, Bilder und Videos zum FT32-Projekt gibts es unter den folgenden hochschuleigenen Webseiten:

FT32-Gründungsprojekt - Fischertechnik mit ESP32 (Gesamtweb):
http://hit-karlsruhe.de/hit%2Dinfo/info%2Dws17/Fischertechnik/index.html

Fischertechnik mit ESP32 (Software HMI):
http://hit-karlsruhe.de/hit-info/info-ws17/Fischertechnik-Software-HMI/index.html

Fischertechnik mit ESP32 (Software Queue und HW-Controller):
http://hit-karlsruhe.de/hit-info/info-ws17/Fischertechnik-Software-Queue-Controller/index.html

Fischertechnik mit ESP32 (Hardware):
http://hit-karlsruhe.de/hit%2Dinfo/info%2Dws17/Fischertechnik_Hardware_Gruppe/index.html

Erstellung der FT32 Mini-Hardware:
http://www.hit-karlsruhe.de/hit%2Dinfo/info%2Dws18/FT%5FESP32%5FHWK/

Überarbeitung der FT32 Mini-Hardware - HWK2:
http://www.hit-karlsruhe.de/hit%2Dinfo/info%2Dss19/FT32%2DHWK2/index.html

ESP32

Ausführliche Informationen, Bilder und allerlei Programme zum ESP32 gibt es unter folgendem hochschuleigenen Webseite:
http://hit-karlsruhe.de/ESP32/

fischertechnik® - Fahrzeug Mini Bots

Als Träger der hier entwickelten Positionserfassung dient ein Baukastenfahrzeug aus Fischertechnik Bauteilen.

Bild Packung fischertechnik Mini Bots
(Quelle: fischertechnik.de)

Die verwendeten Teile werden ausschließlich dem fischertechnik Mini Bots – Kasten entnommen, um mit der parallelen Unterrichtsentwicklung kompatibel zu bleiben.
Folgende Teile aus dem Baukasten können für die Positionserfassung relevant sein:

  Technische Daten Link ft Art.Nr.
Gleichspannungsmotor In: 9VDC; 5995U/min; 1,52mNm; 265mA Motor XS auf ft-Webseite 137096
Spursensor In: 6-10VDC; Out: 0V (schwarz), bis zu 9V (weiß); 30mA IR-Spursensor auf ft-Webseite 128598

Für dem Spursensor wurden mit einem Aufbau entsprechend der Anleitung des Baukastens Testfahrten durchgeführt:


Testfahrten mit dem fischertechnik Mini Bots - Roboter
(Quelle: eigene Aufnahme)

Hier ist zu sehen, dass der Spursensor nur auf ausreichend breite schwarze Linien auf weißem Untergrund reagiert. Zu dünne Linien werden nicht erkannt. Eine Anwendung zur Positionserfassung wäre bedingt auf einem Schachfelduntergrund denkbar.
Die Gleichspannungsmotoren reagieren empfindlich auf äußere Einflüsse, insbesondere auf die Versorgungsspannung. Eine reine Steuerung ist somit stark erschwert und macht für genaue Fahrten eine Regelung mit einer Positionserfassung notwendig.

Zusammen mit den dazugehörigen Rädern und dem zur Verwendung notwendigen Getriebe ergibt sich eine maximale Geschwindigkeit von ca. 0,33m/s.

Maussensorik

Die Positionserfassung mit Computermäusen kann auf unterschiedlichen Wegen erfolgen:

1) So wurden in der Vergangenheit bis ca. der Jahrtausendwende vor allem auf sogenannte Kugelmäuse gesetzt. Die Positionserfassung in X- und Y-Richtung wird hier opto-mechanisch durch geführt. Dabei werden die durch die im Mausinneren befindliche Kugel entstehenden Rollbewegungen über zwei Walzen auf zwei Lochscheiben übertragen. Die Umwandlung der Bewegungen in elektrische Signale, erfolgt schließlich mit Hilfe von Lichtschranken die durch die Lochscheiben unterbrochen werden.

2) Im Anschluss an die opto-mechanischen Kugelmäuse kamen dann Computermäuse mit optischen Sensoren. Hier wird die Oberfläche mit einer Lichtquelle bestrahlt und die dadurch entstehenden Reflexionen durch einen optischen Sensor aufgenommen. Als Lichtquelle dient dabei eine LED. Eine verbesserte Version der optischen Mäuse mit einer LED als Lichtquelle stellen die Lasermäuse dar. Statt einer LED wird nun ein Laser verwendet, welcher durch den Speckleeffekt den Kontrast auf sehr glatten Oberflächen stark verbessert.
Eine weitere Verbesserung ist laut Microsoft deren Eigenentwicklung Bluetrack-Technologie. Mit Hilfe einer großen blauen Lichtquelle und der Pixelgeometrie soll der Kontrast der ermittelten Bild verbessert und damit ein noch genaueres Tracking ermöglicht werden.

3) Zuletzt entwickelte der Hersteller Logitech die Darkfield-Technologie. Die Funktionsweise der Mäuse die darüber verfügen entspricht weitestgehend denen der Lasermäuse, jedoch wird hier zusätzlich die Dunkelfeldmikroskopie eingesetzt. Damit ist es möglich selbst kleineste Verschmutzungen und Unebenheiten festzustellen, um diese anschließend zur Bewegungsermittlung nutzen zu können. Im Vergleich zu anderen optischen Mäusen sind hier die Einsatzmöglichkeiten auch auf Glas oder anderen stark spiegelnden Oberflächen noch verhältnismäsig gut.

4) Des Weiteren gibt es auch Tastaturen und Computermäuse mit einem sogenannten Trackball. Dieser wird nun direkt mit den Fingern bewegt. Die Positionserfassung wurde früher opto-mechanisch, jetzt allerdings nur noch optisch durchgeführt.

Im folgenden werden Projekte vorgestellt, welche verschiedene Maussensoren untersuchen, auslesen und z.B. in Roboter verwenden.

ADNS3080 - Optical Flow Sensor

Konkrete Anwendung von Maussensorik zur Positionserfassung findet beispielsweise mit dem Optical Flow Sensor für Drohnen statt. Dieser verwendet den ADNS-3080 des damaligen Herstellers Avago Technologies in Kombination mit einer Kameralinse. Zur Positionserfassung wird das aufgenommene Bild Pixel für Pixel verglichen, wobei hier anzumerken ist, dass im Bereich der Drohnen sowohl die variierende Höhe als auch der Roll- und Neigungswinkel während des Fluges in die Berechnung der neuen Position miteinfließen müssen da ansonsten falsche Ergebnisse drohen. Des Weiteren hat der Sensor wenn er alleine verwendet wird, Probleme mit Drehbewegungen und er muss sich aufgrund des festen Fokus der Linse mindestens in einer Höhe von 30 cm befinden. Objekte darunter werden nicht richtig erfasst. Im Allgemeinen ist auch eine ausreichend ausgeleuchtete Umgebung notwendig. Im folgenden Video ist dessen Anwendung mit Anbindung an einen Arduino-Mikrocontroller (vermutlich Arduino Uno) zu sehen:


Optic Flow using ADNS-3080
(Quelle: YouTube-Kanal Omanshu Thapliyal)

Es ist zu sehen wie die Position in X- und Y-Richtung ermittelt und über ein Interface ausgegen wird.

ADNS2051 Maussensor

Im folgenden Projekt wurde ein ADNS2051 untersucht: homofaciens.de
Im Video ist die Verwendung des ADNS-2051, sowie zu Beginn auch einer elektromechanischen "Kugelmaus" zu sehen:


Computermaus als Bewegungssensor an einem Arduino Uno
(Quelle: YouTube-Kanal HomoFaciens)

Es ist zu sehen, wie die Werte der X- und Y-Koordinaten und Rohbilder des ADNS-2051 und im Falle der Kugelmaus nur die Werte der X- und Y-Koordinaten durch Anbindung an einen Arduino Uno ausgelesen und über ein Interface ausgegeben werden. Anzumerken sei hier, dass der Betreiber in beiden Fällen ein eigenes Programm zum auslesen der Koordinaten und Rohwerte geschrieben hat, in dem er auch einen eigenen seriellen Anschluss (ADNS-2051) sowie PS2-Anschluss (Kugelmaus) simuliert: homofaciens.de/download_ge.htm. Die Leitungen die von Mäsuen kommen, können somit an beliebigen digitalen Pins des Arduino angeschlossen werden. Folgendes Bild zeigt die Verdrahtung auf dem ADNS2051:

Verdrahtung des ADNS-2051
Verdrahtung des ADNS-2051
(Quelle: homofaciens.de)

PAW3204DB-TJ3R Maussensor

Ein weiteres Projekt "Optical Mouse Robot" verwendet den Maussensor PAW3204DB-TJ3R in einem kleinen Fahrroboter. Auf dem folgenden Bild ist der Roboter von unten und der eingebaute Sensor mit der Linse (Mitte der Platine) zu sehen:

Eingebauter PAW3204-TJ3R (Unterseite)
Eingebauter PAW3204-TJ3R (Unterseite)
(Quelle: sphlab.wordpress.com/.../optical-mouse-robot)

Wie auf dem Bild zu sehen ist, verwendet der Konstrukteur nur einen Maussensor der an der Vorderseite installiert wurde. Bei nur einem Sensor ist eine Platzierung vor oder hinter der Drehachse des Roboters unumgänglich, da ansonsten keine Drehung erfasst werden kann. Im folgenden Video ist zu sehen wie der Roboter auf einem Teppich fährt:


Optical mouse robot moves on slippery rug
(Quelle: YouTube-Kanal shmeebegk1)

Es ist zu sehen wie der Roboter sich zuerst nach vorne bis an das andere Ende des Teppichs bewegt, anschließend dreht, zurückfährt, und sich zuletzt wieder dreht. Die Fahrt gerade aus und die Drehung um 180° funktionieren schon relativ gut. Zur Verbesserung der Genauigkeit könnte, wie in einem unserer Konzepte, die Verwendung eines zweiten Sensors sein.

ESP32-Cam

Eine weitere Möglichkeit, die eigene Position zu erfassen ist mit einer Kamera die Umgebung aufzunehmen und aus den Einzelbildern die eigene Verschiebung zu berechnen.
Für erste Tests wurde ein ESP32-Cam Development Board entsprechend der Anleitung von randomnerdtutorials.com in Betrieb genommen. In dieser Anleitung wird das genannte Board mit einem Beispielprogramm beschrieben, welches das Kamerabild per WLan versendet. Das Bild wird auf einer eigenen Webseite angezeigt.
Zur Verwendung/Programmierung ist ein FTDI-Programmierer notwendig, da das Board keinen eigenen USB-Anschluss hat. Die Verbindung erfolgt über Jumper-Kabel:

Verbindung ESP-Cam mit FTDI-Programmer
(Quelle: randomnerdtutorials.com)

In den von Espressif bereitgestellten Codebeispielen findet sich auch eines für die Kamera:

ESP-Kamerabeispiel in Arduino IDE
(Quelle: randomnerdtutorials.com)

In diesem Code muss ab Zeile 9 das Kameramodell angepasst werden und in Zeile 14/15 der WLan-Name und das zugehörige Passwort eingegeben werden:

Codebeispiel ESP32-Cam
(Quelle: Eigne Darstellung)

Um das Programm hochzuladen braucht man noch folgende Schritte:
1. Werkzeuge > Board > ESP32 Wrover Module
2. Werkzeuge > Port > entsprechenden Port auswählen
3. Werkzeuge > Partition Scheme > Huge APP (3MB No OTA)
Anschließend kann das Programm hochgeladen werden.

Einstellung vor Flashen des ESP32-Cam
(Quelle: randomnerdtutorials.com)

Nach abgeschlossenem Hochladen muss das graue Jumper-Kabel (welches GPIO 0 mit GND verbindet) entfernt und der ESP32-Cam neu gestartet werden. Dann kann auf dem seriellen Monitor (Baudrate: 115200) nach dem Hochfahren des ESP32-Cam die IP-Adresse abgelesen werden.
Diese in einem Browser eingegeben lädt eine Webseite vom ESP32 welche das Kamerabild und einige Einstellungen anzeigt.

ESP32-Cam Webseite Beispiel
Einstellungswebseite des Beispielprogramms für den ESP32-Cam
(Quelle: eigene Aufnahme)

Wenn das Development Board nur über den FTDI-Programmer mit Spannung versorgt wird, passiert es häufig, dass die Spannung einbricht, bzw. dass der ESP32 in den Brownout fällt. Laut Datenblatt kann der verwendete FT232 FTDI-Programmer maximal 24mA ausgeben. Mit einer externen Spannungsversorgung, wie mit einem YwRobot Power Supply (siehe Bild unten links), welche mit 12V versorgt wird, kann deutlich mehr Strom ausgegeben werden (siehe Bild unten rechts). Laut Datenblatt lässt die externe Stromversorgung bis zu 700mA zu.

Spannungsversorgung mit YwRobot
(Quelle: eigene Aufnahme)
Stromaufnahme ESP32-Cam
(Quelle: eigene Aufnahme)
Anschlussbeispiel mit Spannungsversorgung über YwRobot Stromaufnahme des ESP32-Cam in [mA].
Spitzenwerte waren bis zu 300mA.

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