Abschlussprojekt Kameragesteuerte XY

Transcrição

Abschlussprojekt Kameragesteuerte XY
Abschlussprojekt
Kameragesteuerte
X-Y-Regelung
Dominik Lönarz, Martin Wilbert
Fachschule Elektrotechnik
Carl Benz Schule Koblenz
Abgabe: 09.04.2013
Kameragesteuerte x-y-Regelung
Erklärung
Wir versichern, dass wir diese Projektarbeit ohne fremde Hilfe selbstständig verfasst
und nur die angegebenen Quellen und Hilfsmittel benutzt haben. Wörtlich oder dem
Sinn nach aus anderen Werken entnommene Stellen sind unter Angabe der Quellen
kenntlich gemacht.
09.04.2013
…...............................................................................................................
Datum
Martin Wilbert
Dominik Lönarz, Martin Wilbert
Dominik Lönarz
Kameragesteuerte x-y-Regelung
Inhaltsverzeichnis
1 Einleitung.....................................................................4
2 Projektauftrag...............................................................5
3 Projektablaufplan.........................................................5
4 Hardware......................................................................6
4.1 Aufbau..................................................................................................................6
4.2 Problematiken bei der verwendeten Hardware....................................................7
5 Bildverarbeitungsalgorithmus.......................................8
5.1 Beschreibung.......................................................................................................8
5.2 Probleme............................................................................................................11
6 Der Arduino UNO R3 .................................................15
6.1 Hardware............................................................................................................16
6.1.1 Technische Daten........................................................................................16
6.1.2 Anschlussbelegung Arduino UNO R3..........................................................16
6.1.3 Anschluss der Servomotoren.......................................................................16
6.2 Software.............................................................................................................16
6.2.1 Installieren/Programmieren der Arduino Plattform .....................................17
6.2.1 Einbinden Der Arduino Plattform in Labview...............................................17
7 Labview......................................................................17
7.1 Testprogramm zur Ansteuerung der Servomotoren ..........................................17
7.2 Bedienungsanleitung Kameragesteuerte X-Y-Regelung...................................18
7.2.1 Voraussetzungen:........................................................................................18
7.2.2 Inbetriebnahme:...........................................................................................18
7.2.3 Bedienung:...................................................................................................19
7.3 Funktionsweise der Lab View Anwendung........................................................23
7.4 Problematiken der Lab View Anwendung..........................................................28
8 Fazit...........................................................................30
Dominik Lönarz, Martin Wilbert
3
Kameragesteuerte x-y-Regelung
9 Englische Zusammenfassung....................................31
10 Verzeichnisse...........................................................32
10.1 Quellenverzeichnis...........................................................................................32
10.3 Tabellenverzeichnis..........................................................................................32
10.2 Abbildungsverzeichnis......................................................................................33
11 Anhang.....................................................................34
11.1 Puls-Weiten-Modulation (PWM).......................................................................34
11.2 Der PID - Regler...............................................................................................35
11.2.1 Zweipunkt-Regler.......................................................................................35
11.2.2 Proportionalregler......................................................................................35
11.2.3 Integralregler..............................................................................................36
11.2.4 Differentialregler.........................................................................................36
Dominik Lönarz, Martin Wilbert
4
Kameragesteuerte x-y-Regelung
1 Einleitung
Bilderkennung ist jedem von uns vertrauter als wir denken. Jede Sekunde wertet
unser Gehirn Bilder aus und lässt uns entsprechend reagieren. Es ist für uns
selbstverständlich, einen Gegenstand zu greifen oder sogar zu fangen. Für einen
Computer stellen diese für uns einfachen Abläufe ein Problem dar. Ein Computer
benötigt hierzu eine Reihe von Sensoren und Aktoren, die perfekt miteinander
arbeiten müssen, um solche für uns alltäglichen Aufgaben zu lösen.
Heutzutage sind Bilderkennungssysteme in der Industrie nicht mehr wegzudenken.
So übernehmen Bildverarbeitungssysteme Aufgaben, wozu früher eine Reihe teurer
Sensoren nötig gewesen wäre. Bilderkennungssysteme können eine Vielzahl an
Aufgaben übernehmen, deshalb werden sie zum Beispiel zur Lageerkennung oder
zur Prüfung der Maßhaltigkeit eingesetzt.
„Bis zum heutigen Tag bildet die Industrielle-Bildverarbeitung immer nur
kleinste Teile der menschlichen Intelligenz ab. Und dann auch nur nach den
programmierten Vorgaben. Ein Mensch entscheidet immer auf Grund seines
ganzen
Wissens!
Sortiert
man
Industriegüter,
dann
findet
ein
Bildverarbeitungssystem nur die trainierten Fehler oder die Abweichungen
zum dem ihm beigebrachten Kriterien. Kommt ein unbekannter Fehler, der
auch in die guten Kriterien passt, wird er übersehen. Der Mensch hat durch
seine allgemeine Erfahrung die Möglichkeit zu entscheiden, was gut oder
schlecht ist.
Stichwort: Ästhetik
Allerdings hat die Industrielle-Bildverarbeitung auch entscheidende Vorteile.
Bei gleichen Bildern entscheidet sie immer gleich. Unabhängig von Gefühlen
oder
Müdigkeit. Außerdem
erreicht
sie
auf
dem
speziellen
Gebiet
Geschwindigkeiten, die kein Mensch mehr leisten kann.“ 1
1 Industrielle Bildverarbeitung von Prof. Dr. Matthias Franz, Hochschule Konstanz Technik,
http://www-home.fh-konstanz.de/~mfranz/ibv_files/lect00_Einleitung.pdf
Dominik Lönarz, Martin Wilbert
5
Kameragesteuerte x-y-Regelung
Die wichtigsten Komponenten sind dabei die Bilderfassung, die Bildauswertung und
die Regelung, welche einen Hauptbestandteil der vorliegenden Abschlussarbeit
darstellen.
Ziel ist es, eine Kugel, die sich auf einer beweglichen Plattform befindet, mittels einer
Kamera zu erkennen und durch die Auswertung des Bildes die Plattform
auszuregeln. Die Neigung der Plattform, über 2 Achsen, soll mit Hilfe von
Servomotoren realisiert werden. Diese werden über ein Arduino UNO R3
Entwicklungsboard angesprochen. Die Bilder, welche durch eine in Vision Builder AI
2012 erstellte Inspectionfile ausgewertet werden, liefert eine Microsoft LifeCam
Studio. Die Reglungsaufgaben übernimmt das Labview 2012 Entwicklungssystem
von National Instruments.
Im ersten Teil der Arbeit wird auf die Realisierbarkeit und die Auswahl der Hardware
eingegangen und begründet, warum welche Komponenten ausgewählt werden.
Anschließend wird der Hardware Aufbau und damit verbundene Problemstellungen
erläutert. Im Kapitel 5 gehen wir auf die Struktur des Bildverarbeitungsalgorithmus
ein. Im weiteren Ablauf wird das Labview Programm sowie die Arduino
Programmierung erklärt.
Dominik Lönarz, Martin Wilbert
6
Kameragesteuerte x-y-Regelung
2 Projektauftrag
Tabelle : Projektauftrag
Projektauftrag
Projektname:
FSE 11 Modul 14
Auftraggeber:
BBS-Technik Koblenz
Datum:
19.08.13
Projektteam:
Dominik Lönarz
Martin Wilbert
Projektthema: Kameragesteuerte x-y-Regelung
Projektziele: Bewegung einer Kugel auf einer x-y-Platte mit Hilfe von Lab-View und einer Webcam
Sachziel:
Kostenziel:
Möglichst günstige Komponentenwahl (Webcam)
Terminziel:
09.04.2013
Hauptaufgaben:
-Herstellen der x-y-Platte, verwendet wird ein Holzlabyrinth, dieses wird mit Servomotoren in
seinen zwei Achsen gesteuert.
-Die Bewegung der Kugel wird mittels Labview/Webcam ausgewertet.
-Ansteuerung der Servos über einen Mikrocontroller/Lab View.
-Stabilisierung der Kugel auf der Platte, Vergleich verschiedener Regler (P, PID etc.)
-Mögliche Erweiterung: Formen nachbilden (Kreis, Rechteck)
Organisation:
Auftraggeber:
BBS-Technik-Koblenz
Industriepartner:
-
Projektressourcen:
Projektbudget:
€ 200,-
Sonstige Ressourcen: Microsoft LifeCam Studio (Schule) Software-Lizenzen von National Instruments
Auftragsbedingungen:
Termine:
Projektstart:
ZwischenPräsentation:
DokumentationsAbgabe:
Präsentation/
Kolloquium:
28.01.13
21.02.13
09.04.13
06/07.06.13
3 Projektablaufplan
Dominik Lönarz, Martin Wilbert
7
Kameragesteuerte x-y-Regelung
Abbildung : Projektablaufplan
Dominik Lönarz, Martin Wilbert
8
Kameragesteuerte x-y-Regelung
4 Hardware
4.1 Aufbau
Als Grundgerüst kommt ein Holz-Spielzeug-Labyrinth zum Einsatz. Das Labyrinth
besteht aus einem 9cm hohen Holzrahmen, in diesem sind zwei weitere Rahmen
montiert. Ein Rahmen ist in der X-Achse, der andere in der Y-Achse gelagert. Am
inneren Rahmen ist die Grundplatte angebracht. Die Bodenplatte, die ursprünglich
für den Kugelauswurf sorgte, wurde entfernt sowie das Gestänge mit den Seilzügen,
die für die Plattenbewegung zuständig waren. Zusätzlich wurde das Original
„Labyrinth“ entfernt und durch eine Holzplatte ersetzt. Die Holzplatte wurde mit
schwarzem Tonpapier beklebt (siehe Abbildung ).
Abbildung : Grundrahmen
Außerdem wurde der innere Rahmen an der Innenseite schwarz lackiert. Somit wird
gewährleistet, dass die Kugel, wenn sie am Rand liegt, von der Kamera sicher als
Objekt erkannt wird und optisch ein Abstand zwischen Kugel und Rahmen entsteht.
Das schwarze Tonpapier hat den Vorteil, dass einfallendes Licht nur wenig reflektiert
wird und so ein hoher Kontrast zur Stahlkugel entsteht. Der restliche Rahmen wurde
hell gelassen, damit auch hier hohe Kontrastwerte zur verwendeten Holzplatte
entstehen.
Dominik Lönarz, Martin Wilbert
9
Kameragesteuerte x-y-Regelung
Abbildung : Aluminiumprofil und Kamera
An den Grundrahmen wurde an einer Seite mittig ein Aluminiumprofil befestigt. Wie
in Abbildung
zu sehen ist, wurde das Aluminiumprofil an der Rahmenoberseite
abgewinkelt, sodass das Ende des 46cm langen Profils mittig über der Platte
zentriert ist. Dort wurde die Microsoft LifeCam Studio-Webcam mittels des
Stativanschlusses befestigt. Dadurch ist die Kamera stabil und fest mit dem Rahmen
verbunden,
kann
aber
über
(siehe Abbildung ).
Dominik Lönarz, Martin Wilbert
10
den
Kugelkopf
dennoch
justiert
werden
Kameragesteuerte x-y-Regelung
Für die Steuerung der Platte wurden zwei Modellbau-Servomotoren verwendet. Einer
der beiden Servomotoren ist am Grundgerüst befestigt und wird über das Servo-Horn
mittels zwei Kugelgelenken und einer Gelenkstange an der ersten beweglichen
Platte befestigt. Der zweite Servo ist direkt an der beweglichen Platte montiert. Über
das Gestänge ist der Servo ebenfalls mit dem mittleren Rahmen verbunden
(siehe Abbildung ).
Abbildung : Servomotoren
Mittels des Arduino-Mikrocontroller-Boards werden die Servos mittels einer PulsWeiten-Modulation
(PWM)
angesteuert.
Die
Spannungsversorgung
der
Servomotoren erfolgt über ein externes Schaltnetzteil, der Arduino wird direkt über
USB versorgt.
4.2 Problematiken bei der verwendeten Hardware
Als erstes Problem stellte sich die Farbwahl der Platte heraus. Eine helle Platte hat
den Vorteil, dass der Kontrast zur Kugel höher ist als bei einer dunklen Platte. Ein
Nachteil der hellen Platte ist der Schattenwurf, da helle Flächen weniger Licht als
dunkle Flächen absorbieren. Bei der Verwendung der schwarzen Platte stellte sich
die Art der Schwarzfärbung als Problem dar. Vor der Verwendung des Tonpapiers
wurde versucht, die Platte schwarz zu lackieren. Dies hatte den Nachteil, dass die
Lackierung zu stark glänzte und so das einfallende Licht reflektiert wurde. Dies
wiederum führte dazu, dass die Reflektion als helle Fläche im Kamerabild erscheint
und fälschlicherweise als Objekt erkannt wird. Daher wurde versucht, die lackierte
Fläche anzuschleifen um so eine rauere Oberfläche zu schaffen, sodass das
einfallende Licht weniger reflektiert wird.
Dominik Lönarz, Martin Wilbert
11
Kameragesteuerte x-y-Regelung
Aber auch dies brachte keinen Erfolg. Letztendlich konnte das Problem mittels des
verwendeten Tonpapiers behoben werden, da dies generell matt ist. Außerdem hat
es den Vorteil, dass kleine Unebenheiten in der weichen Pappelholzplatte
ausgeglichen werden.
Eine weitere Problematik ist die maximale Neigung der Platte. Durch die begrenzte
Höhe
des
Aufbaus
und
der
darin
verbauten
Servomotoren
sind
die
Maximalneigungen und damit die Winkel der Platte begrenzt, was wiederum die
Maximalgeschwindigkeit der Kugel beeinflusst. Nachfolgende Berechnungen zeigen
die Zeiten, die die Kugel benötigt, um von einer zur anderen Seite zu rollen
(siehe Tabelle ).
Verwendete Formeln2:
sin a=
Gegenkat h ete Hö h en untersc h ied der Platte(h)
=
Hypotenuse
Länge der Platte ( s)
s=0,5× a × t² t=
⇒
√
2×s
a
v=a × t
g=9,81
F =m × g ×sin α
a=
F
m
m
s²
Tabelle : Bewegung der Kugel
Bewegung in der Y-Achse
Höhe
Länge
Beschleunigung
(h)
(l)
(a)
6cm
23cm
2,56m/s³
5cm
23cm
2,13m/s²
Bewegung in der X-Achse
Höhe
Länge
Beschleunigung
(h)
(l)
(a)
4cm
27cm
1,45m/s²
3cm
27cm
1,09m/s²
Zeit
(t)
0,43s
0,47s
Geschwindigkeit
(v)
1,10m/s
1,00m/s
Zeit
(t)
0,61s
0,70s
Geschwindigkeit
(v)
0,89m/s
0,76m/s
Da keine Rollreibungswerte für Stahl auf Papier ermittelt werden konnten, aber
ähnliche, bekannte Rollreibungswerte nur geringe Änderungen bei den hier
verwendeten Werten aufweisen würden und Toleranzen in der messtechnischen
2
Formeln entnommen aus dem Buch: Physik für Ingenieure von Hering, Martin und Stohrer, 10.
Auflage, 2007, Springer-Verlag
Dominik Lönarz, Martin Wilbert
12
Kameragesteuerte x-y-Regelung
Erfassung der Höhenunterschiede und Längen der Platte auftreten, können die
Rollreibungswerte vernachlässigt werden.
Weitere Probleme verursachten die verwendeten Servomotoren. Hierbei handelt sich
um Standard-Modellbau-Servomotoren älterer Generation. Genaue technische Daten
konnten nicht ermittelt werden, daher werden Standard Daten angenommen. Bei
günstigen Standardservomotoren beträgt die Stellzeit ca. 200ms für 60° bei 4,8V.
Erhöht man die Spannung auf 6V, so beträgt die Stellzeit noch ca. 150ms. 3 Da wir
das Arduino-Board per USB versorgen, benutzen wir ein externes Steckernetzteil für
die Servomotoren, so liegt unsere Versorgungsspannung bei 6,3V DC. Außerdem
werden die Servos nicht bis 60° sondern bis ca. 150° gefahren, so beträgt die
Stellzeit ca. 500ms. Dies ist gegenüber der Lab View-Schleifenzeit ein Faktor von
ungefähr zehn. So ist es nicht möglich, die Kugel schnell genug zu bewegen, um
geringe Aussteuerzeiten zu erreichen. Erfolg hierbei brachte allerdings das ArduinoBoard. Für die ersten Testzwecke wurde die MyDAQ-Messbox benutzt, hier waren
die Schleifenzeiten wesentlich höher und die Ansteuerung der Servos war nicht so
flüssig. Die Erläuterungen zum Arduino werden in einem extra Kapitel behandelt.
Als letzte hardwareseitige Problematik sei die verwendete Holzplatte anzuführen. Da
das verwendete Labyrinth schon etwas älter ist, sind die Rahmen nicht mehr eben
und die Pappelholzplatte ist dadurch leicht verzogen. Dies hat den Nachteil, dass die
Kugel zu den Rändern hin rollt und nicht wie erwartet 2„steht“.
3
Es handelt sich um Werte von vergleichbaren Servomotoren, zu finden unter
http://www.servodatabase.com.
Dominik Lönarz, Martin Wilbert
13
Kameragesteuerte x-y-Regelung
5 Bildverarbeitungsalgorithmus
5.1 Beschreibung
Als Software für den Bildverarbeitungsalgorithmus kommt Vision Builder for
Automated Inspection von National Instruments zum Einsatz. Zusätzlich wird noch
folgende Software benötigt: Vision Acquisition Software, Vision Development Module,
NI IMAQ-Treiber.
Die Vision Acquisition Software und der NI IMAQ-Treiber ermöglichen den Bildimport
von einer USB-Kamera. Wobei der NI IMAQ-Treiber die USB Unterstützung
bereitstellt und die Vision Acquisition Software den generellen Kamera Import. Das
Vision Development Module wird zur Bildverarbeitung benötigt und stellt den Vision
Assistent zur Verfügung.
Die Vision Builder for Automated Inspection File gliedert sich in sieben Stufen
(siehe Abbildung ).
Abbildung : Vision Builder AI Inspection
Der erste Schritt in der Kette ist der Bildimport (Acquire Image (USB)). Als Bildquelle
dient eine Microsoft LifeCam Studio USB Webcam. Das Bild wird kontinuierlich mit
einer Auflösung von 640x480 Pixeln bei 30fps (frames per second) aufgenommen.
Die Farbtiefe beträgt 24bit (RGB). Dies bedeutet, dass alle 33,3ms ein neues Bild zur
Verfügung
steht.
Bei
höheren
Auflösungen
(1280x720
Pixel)
sinkt
die
Bildwiederholrate auf 10fps. Dies hat zur Folge, dass nur alle 100ms ein neues Bild
zur Verfügung steht.
Dominik Lönarz, Martin Wilbert
14
Kameragesteuerte x-y-Regelung
Messungen mit der Benchmark-Funktion haben ergeben, dass die Inspection-Zeit
(Zeit für einen kompletten Durchlauf) im Durschnitt 37ms beträgt (siehe Abbildung ).
Daher ist es notwendig, die Auflösung entsprechend zu senken, damit beim nächsten
Durchlauf der Inspection ein aktuelles Bild zur Verfügung steht.
Abbildung : Inspection Benchmark - Durschnittliche Iterationszeit
Im zweiten Schritt der Ablaufkette findet die Bildverarbeitung statt. Hierfür kommt die
Vision
Assistent
Software
als
ein
Schritt
zum
Einsatz.
Aufgabe
des
Bearbeitungsschrittes ist es, das 24bit Farbbild in ein 8bit Graustufenbild zu
konvertieren, indem der Farbkanal entfernt wird.
Der dritte Schritt beinhaltet eine der beiden Objekterkennungen. Diese dient zur
Erkennung
der
Platte,
auf
der
sich
die
Kugel
bewegt.
In
dem
Objekterkennungsbaustein ist ein Tresholdfilter (Schwellwertfilter) enthalten, dieser
ist so eingestellt, dass er nach dunklen Bereichen im gesamten Bild sucht. Der
Schwellwert (0-255) wird über eine globale Variable von Lab View bereitgestellt. Die
Objekterkennung ist so konfiguriert, dass maximal ein Objekt mit einer minimalen
Größe von 150.000 Quadratpixeln erkannt wird.
Mit Hilfe des erkannten Objektes, welches in Schritt drei erfasst wurde, wird nun ein
Koordinatensystem erstellt. Das Koordinatensystem hat seinen Ursprung im
Objektmittelpunkt. Dieses ist notwendig, da der nächste Schritt nur auf ein
Koordinatensystem aufsetzen kann.
Wie im vorangegangenen Schritt beschrieben, setzt der Schritt „Plattenbereich“ auf
das im Schritt zuvor erstellte Koordinatensystem auf. Es wird ein Rechteck erstellt,
das seinen Mittelpunkt im Ursprung des Koordinatensystems hat. Die Höhe und
Breite des Rechtecks bezieht sich auf die Höhe und Breite des erkannten Objektes.
Dominik Lönarz, Martin Wilbert
15
Kameragesteuerte x-y-Regelung
Da nun der Bereich, in dem sich die Kugel bewegen kann, festgelegt ist, geht es jetzt
zur eigentlichen Kugelerkennung. Dies geschieht durch die zweite Objekterkennung
mit Tresholdfilter. Dieser sucht, im Gegensatz zum ersten Filter, nach hellen
Objekten. Der Schwellwert wird durch dieselbe globale Variable vorgegeben. Der
Initialwert der Variable beträgt 150 und wird solange verwendet, bis der Benutzer
diesen Wert ändert. Die Objekterkennung bezieht sich in diesem Fall nicht auf das
gesamte Bild, sondern auf den in den vorangegangenen Schritten festgelegten
Bereich. Dadurch, dass der Rand der Platte ebenfalls schwarz lackiert ist, werden
Objekte, die den Rand berühren, ignoriert. Dies ist notwendig, da das festgelegte
Rechteck sich nicht genau mit der Platte deckt und es so zu Fehlerkennungen
kommen kann. Des Weiteren werden erneut Grenzen für eine maximale
Objektanzahl von eins bei einer minimalen Objektgröße von 50 Quadratpixeln
gesetzt.
Abschließend werden im siebten Schritt die ermittelten Werte in globale Variablen
geschrieben. Es werden die Stati für sechs Schritte geschrieben (Import,
Bearbeitung,
Plattenerkennung,
Koordinatensystem,
Bereichserstellung
und
Kugelerkennung). Des Weiteren werden Positionsdaten übertragen (Kugel X, Kugel
Y, Platte H, Platte B, Plattenmitte X und Plattenmitte Y). Außerdem werden noch
folgende Parameter übertragen: Counter, Bild und Schwellwert.
Dominik Lönarz, Martin Wilbert
16
Kameragesteuerte x-y-Regelung
5.2 Probleme
Die ersten Probleme sind bei den verwendeten Tresholdfiltern aufgetreten. Hierbei
stehen verschiedene Filterarten zur Verfügung. Neben dem manuellen Filter gibt es
auch automatische Filter, bei denen Grenzwerte eingestellt werden können. Für
unsere Problemstellung stellte sich heraus, dass der „Auto Treshold: ClusteringFilter“ gute Dienste erwies. Da sich aber zeigte, dass bei beiden Filtern
unterschiedliche Werte eingestellt werden müssen und so drei zusätzliche Variablen
entstünden, wurde hier auf einen automatischen Filter verzichtet und stattdessen der
manuelle Filter gewählt. Hierbei hat sich ergeben, dass beide Tresholdfilter mit
denselben Werten zuverlässig arbeiten. Da bei verschiedenen Lichtverhältnissen
unterschiedliche Schwellwerte eingestellt werden müssen, wurde hierfür eine
Variable erstellt, damit dieser Wert im laufenden Betrieb geändert werden kann. Der
Standardwert dieser Variable beträgt 150 und kann zwischen 0 und 255 variiert
werden. Im Lab-View-Programm kann die Variable in einem Bereich von 100 bis 255
eingestellt werden. Werte unter 100 werden ignoriert, da diese Werte keine
sinnvollen Ergebnisse liefern.
Dies ermöglichte uns auch auf eine zusätzliche Beleuchtung zu verzichten, wie es
uns zuvor in einem persönlichen Gespräch mit von National Instruments empfohlen
wurde.
Ein weiteres Problem bestand in der Farbwahl der Grundplatte. Hierzu wurden im
Vorfeld
mehrere Tests
mit
hellen
und
unterschiedlichen
dunklen
Flächen
vorgenommen. Als Material für die Grundplatte wurde eine Pappelholzplatte
verwendet, da das Grundgerüst ebenfalls aus Holz besteht. Die Verwendung von
Pappelholz hat den Vorteil, dass es leicht ist und sich einfach verarbeiten lässt. In
ersten Tests wurde eine Seite der Platte schwarz lackiert, die andere Seite blieb
unbehandelt. Hierbei hat sich ergeben, dass die unbehandelte, helle Platte,
zusammen mit der originalen Edelstahlkugel höhere Kontrastwerte aufweist als die
schwarze Platte mit der originalen Kugel. Hingegen ist die Verwendung einer
schwarzen Platte lichtunempfindlicher, da hier der Schattenwurf der Kugel nicht so
stark zum Tragen kommt.
Dominik Lönarz, Martin Wilbert
17
Kameragesteuerte x-y-Regelung
Allerdings stellte sich heraus, dass die lackierte schwarze Platte nicht matt genug
war und deshalb einfallendes Licht zu sehr reflektiert wurde. So haben wir uns dafür
entschieden, die Platte mit schwarzem Tonpapier zu bekleben. Dies hat zum einen
den Vorteil, dass die Platte kaum reflektiert und zum anderen werden kleine
Unebenheiten in der Platte korrigiert.
Ein weiterer Vorteil der Verwendung der schwarzen Platte ist, dass wir eine gute
Abgrenzung zum verwendeten Rahmen haben, was uns eine einfache Verwendung
der Objekterkennung zur Plattenerkennung ermöglichte.
Als nächstes Problem stellte sich die Übertragung der ermittelten Werte heraus.
Nachdem der Bildverarbeitungsalgorithmus in Lab View migriert wurde, ist es uns
nicht gelungen, die Messwerte auszulesen. Zwar wurden die Daten korrekt in die
dazu erstellten Variablen geschrieben, allerdings fanden wir diese Variablen in Lab
View nicht wieder, so dass wir uns für globale Systemvariablen entschieden haben.
Um diesen globalen Zugriff zu ermöglichen, war es nötig, die vorhandenen
Inspection-Variablen in System-Variablen zu konvertieren. Dies wird durch den
Variablen-Manager ermöglicht. Zusätzlich mussten für die verwendeten Variablen die
Netzwerkfreigaben aktiviert werden, da so erst der Zugriff außerhalb von Vision,
möglich war. Für Lab View bedeutet dies, dass das Programm über ein Projekt
gestartet werden muss, da es nur in Projekten möglich ist, die freigegebenen
System-Variablen zu importieren. Die so in Lab View bereitgestellten Variablen
können dann in die Lab View Anwendung eingebunden und verarbeitet werden.
Außerdem ist es auch möglich, Bedien- oder Anzeigeelemente über die
Datenbindungsfunktion direkt mit den Variablen zu verknüpfen, so dass diese im
laufenden Betrieb, unabhängig ihrer Stelle im Programm, ständig aktualisiert werden.
Dominik Lönarz, Martin Wilbert
18
Kameragesteuerte x-y-Regelung
Eine Funktion, die laut National Instruments in früheren Versionen von Lab View und
Vision Builder problematisch war, ist die Migration von Vision Builder nach Lab View.
Die hier auftretenden Probleme sollen in der aktuellen Version behoben sein. Doch
leider blieb uns diese Möglichkeit verwehrt. Der Fehler konnte zwar lokalisiert, aber
nicht behoben werden. Die Funktion „Migration nach Lab View“ wandelt die Vision
Builder AI Datei in eine ausführbare Lab View Anwendung. Es wird eine „main.vi“
Datei erzeugt mit einigen Sub-VIs. Durch den Aufruf der main.vi soll der in Vision
Builder gestaltete und nach Lab View migrierte Algorithmus gestartet werden. Dies
war auch im ersten Durchlauf der Software erfolgreich. Wurde die Anwendung
allerdings beendet, konnte kein neuer Vorgang gestartet werden. Erst nach einem
Neustart des Systems war dies wieder möglich. Die Fehlerhafte Komponente konnte
von uns lokalisiert werden. Es stellte sich heraus, dass die Fehlerbehandlung des
Tresholdfilters
der
ersten
Objekterkennung
den
Fehler
verursachte.
Nach
geringfügigen Änderungen im Programm trat der Fehler nicht mehr auf. Jedoch
führte dies dazu, dass nach einem erneuten Start der Anwendung keine Bilder mehr
verarbeitet wurden. Auch eine Kontaktaufnahme mit National Instruments führte zu
keinem
Erfolg,
also
entschieden
wir
uns
gegen
die
Verwendung
der
Migrationsfunktion von Vision Builder AI nach Lab View.
Eine weitere Möglichkeit ist die parallele Verwendung von Lab View und Vision
Builder AI. Dies bedeutet, dass beide Programme manuell geladen werden müssen,
so dass die Vision Builder AI Software mit dem Bildverarbeitungsalgorithmus
gestartet und anschließend die Lab View Anwendung ausgeführt werden kann. Dies
hat allerdings eine sehr hohe CPU- und Speicherauslastung zur Folge. Messungen
der Schleifenzeit in Lab View haben ergeben, dass diese dadurch über 100ms
beträgt, ein Wert, der so nicht akzeptiert werden kann.
So mussten wir einen anderen Weg wählen und entschieden uns für den Vision
Builder AI Server. Dieser ist im Vision Paket inbegriffen und kann direkt von Lab View
aus gestartet werden. Nachdem die „Local VBAI Engine“ geöffnet und gestartet
wurde, kann dort eine Vision Builder AI Datei ausgeführt werden (siehe Abbildung ).
Dominik Lönarz, Martin Wilbert
19
Kameragesteuerte x-y-Regelung
Abbildung : Aufrufroutine für den Vision Builder AI Server
Der erste Objektbaustein in Abbildung öffnet die „Local VBAI Engine“, im zweiten
Baustein wird eine Verbindung zu dieser hergestellt. Objektbaustein drei öffnet
unseren Bildverarbeitungsalgorithmus, der im anschließenden Schritt vier gestartet
wird. Beim Start des Servers wird ein Fenster geöffnet (Abbildung ), in diesem
werden Statusinformationen zur Inspection angezeigt.
Abbildung : Vision Builder AI Server Luncher
Dargestellt wird der „Inspection Status“ (Pass, grün oder Fail, rot), die „Inspection
Iteration“ (Anzahl der Durchläufe) und es werden Informationen zum Server selbst,
wie zum Beispiel IP-Adresse und Initialisierungsstatus, übermittelt. Über den Button
„STOP“ kann der Server beendet werden. Dies wird aber nur im Fehlerfall benötigt,
da die Lab View Anwendung den Server automatisch beendet, wenn er nicht mehr
benötigt wird.
Im laufenden Betrieb der Anwendung zu verschiedenen Tageszeiten und somit bei
verschiedenen Lichtverhältnissen stellte sich heraus, dass die Zeit, die für einen
Durchlauf benötigt wird, stark von der Helligkeit abhängig ist. Daraufhin wurde eine
Möglichkeit gesucht, die Iterationszeit zu messen. Zuvor ermittelten wir die Zeit
Dominik Lönarz, Martin Wilbert
20
Kameragesteuerte x-y-Regelung
dadurch, dass in der Lab View Anwendung die Schleifenzeit solange erhöht wurde,
bis bei jedem Durchlauf neue Bildinformationen vorhanden waren. Diese Methode
erwies sich jedoch als ungenau, wie wir im Nachhinein feststellten. Eine genaue
Ermittlung der Iterationszeit in Vision Builder AI wird durch die Benchmark-Funktion
bereitgestellt.
Es wurden drei Leistungsmessungen durchgeführt. Die erste Messung mit 1000
Iterationen unter realen Bedingungen, die zweite Messung mit 100 Iterationen bei
konstanter, geringer Beleuchtung und die dritte Messung mit 100 Iterationen bei
konstanter, normaler bis heller Beleuchtung.
Abbildung : Benchmark mit 1000 Iterationen
In Abbildung
sieht man die Ergebnisse der ersten Leistungsmessung. Um eine
möglichst genaue Aussage zu bekommen, wurden 1000 Durchgänge berücksichtigt.
Zusätzlich wurde auch ein Benchmark mit 5000 und 10000 Iterationen erstellt, jedoch
konnte das Ergebnis nicht richtig interpretiert werden, da das Benchmark-Fenster
einen Fehler aufweist und so die Ergebnisse fehlerhaft dargestellt werden. Die Grafik
oben rechts im Bild zeigt die Anzahl der Durchläufe bezogen auf die dafür benötigte
Zeit. Daraus lässt sich ablesen, dass ein Großteil der Iterationen (größer 60 Prozent)
für einen Durchlauf bis zu 35ms benötigt und nur noch wenige Durchgänge mehr als
35ms andauern.
In der Tabelle in Abbildung wird in der ersten Zeile ein Überblick der Zeiten, bezogen
auf die ganze Inspection, gegeben. Abgebildet sind die Anzahl der Iterationen, die
Dominik Lönarz, Martin Wilbert
21
Kameragesteuerte x-y-Regelung
dafür benötigte Zeit, die durchschnittliche Zeit, die Standardabweichung, die kürzeste
und die längste Zeit. Des Weiteren werden in den Zeilen der Tabelle die einzelnen
Inspection-Schritte angezeigt.
So erhalten wir eine durchschnittliche Iterationszeit von ca. 37ms, dies spiegelt sich
auch im Ergebnis der ersten Methode wieder. Es wurde eine Schleifenzeit von ca.
50ms ermittelt.
Abbildung : Benchmark bei dunkler Umgebung
Abbildung : Benchmark bei heller Umgebung
Dominik Lönarz, Martin Wilbert
22
Kameragesteuerte x-y-Regelung
Hier wird deutlich sichtbar, wie sich die Iterationszeit zwischen heller und dunkler
Umgebung stark ändert (Abbildung , Abbildung ).
So beträgt die Zeit bei normaler bis starker Beleuchtung 20ms bis 50ms. Bei
schwacher Beleuchtung hingegen beträgt die Iterationszeit 90ms bis 160ms. Aus den
beiden Diagrammen in den Bildern wird ersichtlich, wie die Verteilung der
Iterationszeiten liegt. So sind bei normaler bis heller Beleuchtung ca. 80 Prozent der
Iterationen nach 35ms abgearbeitet. Bei schlechter Beleuchtung hingegen verteilen
sich die Schleifenzeiten in einer größeren Spanne, hier liegen ca. 90 Prozent der
Iterationen zwischen 120ms und 160ms.
In der Tabelle in Abbildung können wir eine Durchschnittszeit von ca. 33ms ablesen.
In Abbildung hingegen beträgt die durchschnittliche Iterationszeit ca. 132ms. Damit
beträgt die mittlere Differenz zwischen dunkler und heller Umgebung knapp 100ms.
Außerdem wird aus der Tabelle ersichtlich, dass die meiste Zeit für den Bildimport
benötigt wird und dieser im Gegensatz zu der Bildverarbeitung (Bearbeitung,
Plattenerkennung, Koordinatensystem, Plattenbereich, Kugelerkennung, Variablen
I/O und Display) stark von der Beleuchtung abhängt.
Helle Umgebung
Bildimport
-> 19,63ms
Verarbeitung
-> 1,75ms
Dunkle Umgebung
Bildimport
-> 107,15ms Verarbeitung
-> 3,29ms
Differenz
-> 87,52ms
-> 1,54ms
Faktor
-> ca. 5,5
-> ca.1,9
Das Rechenbeispiel, mit den Werten aus Abbildung und Abbildung , zeigt deutlich
die prozentuale Änderung der durchschnittlichen Zeiten zwischen heller und dunkler
Umgebung. (angegeben für den Bildimport und für die Bildverarbeitung).
Dies lässt sich auf die Kamera und die damit aufgenommenen Bilder zurückführen.
Zum einen sinkt die Framerate bei zunehmender Dunkelheit und zum anderen sinkt
der Kontrast des zu verarbeitenden Bildes, somit wird mehr Rechnerleistung benötigt
und die Iterationszeit steigt.
Die sinkende Framerate lässt sich durch die Verschlusszeit der Kamera erklären. So
könnte diese theoretisch 33ms betragen, um noch 30 Bilder pro Sekunde
Dominik Lönarz, Martin Wilbert
23
Kameragesteuerte x-y-Regelung
aufzuzeichnen. Wird die Umgebung abgedunkelt, fällt auch weniger Licht auf
Objektiv und somit auf den Sensor der Kamera. Um bei geringem Licht dennoch
ausreichend gute Bilder aufzunehmen, wird die Belichtungszeit erhöht. Dadurch sinkt
die Bilderrate und der Bildimport dauert länger.
Bezogen auf die gemessenen Werte könnte die maximale Belichtungszeit bei heller
Umgebung theoretisch 1/50sec, bei dunkler Umgebung 1/9sec betragen.
Dadurch, dass weniger Licht auf den Bildsensor einfällt, verschlechtert sich die
Bildqualität, das Bildrauschen nimmt zu. Somit wird mehr Rechenleistung benötigt,
um die Objekterkennung erfolgreich durchzuführen, das Verarbeiten der Bilder dauert
länger und sorgt so für die Differenz von ca. 100ms zwischen heller und dunkler
Umgebung.
Dominik Lönarz, Martin Wilbert
24
Kameragesteuerte x-y-Regelung
6 Der Arduino UNO R3
Die Arduino UNO R3 Entwicklung Umgebung setzt sich aus zwei Teilen zusammen.
Sie besteht aus dem IO-Board und der Software zum Programmieren desselben.
Das IO-Board setzt sich aus einem Atmel AVR Mikrocontroller und allen notwendigen
Komponenten zum Programmieren des Mikrocontrollers zusammen. Das einfache
Programmieren wird durch den vorinstallierten Bootloader möglich. Das Board besitzt
einen USB zu RS-232 Adapterchip und nimmt so die Kommunikation zum Computer
auf. Es stehen 14 digitale Input/Output Anschlüsse zur Verfügung. 6 dieser
Anschlüsse können auch als PWM-Ausgänge benutzt werden. Des Weitern gibt es 6
analoge Eingänge. Die Syntax der Programmiersprache ist an C angelehnt.
Der Arduino stellt eine einfach zu programmierende Umgebung dar. Durch die eigene
Programmieroberfläche ist es sehr einfach, Änderungen an dem Programm
vorzunehmen. Das geänderte Programm lässt danach über eine USB-Verbindung in
den Mikrocontroller laden. Aufgrund des Aufbaus entfallen aufwendige und somit
zeitraubende Arbeiten wie z.B. der Entwurf der Mikrocontroller-Beschaltung und die
Programmierung desselben. Der Hauptgrund für die Wahl des Arduino war allerdings
die von uns erwartete kürzere Zykluszeit im Vergleich zur MYDAQ von National
Instruments. Die Entwicklungsplattform ist Open Source, was einen weiteren Vorteil
darstellt. Für eine Serienproduktion kommt die Plattform allerdings nicht in Frage, da
sie mit 24€ verhältnismäßig teuer ist.
Dominik Lönarz, Martin Wilbert
25
Kameragesteuerte x-y-Regelung
6.1 Hardware
6.1.1 Technische Daten
Tabelle : Technische Daten Arduino
Microcontroller
Operating Voltage
Input Voltage
(recommended)
Input Voltage (limits)
ATmega328
5V
7-12V
Digital I/O Pins
Analog Input Pins
DC Current per I/O Pin
DC Current for 3.3V Pin
Clock Speed
6-20V
14 (of which 6 provide PWM
output)
6
40 mA
50 mA
16 MHz
6.1.2 Anschlussbelegung Arduino UNO R3
Abbildung : Anschlussbelegung Arduino
Dominik Lönarz, Martin Wilbert
26
Kameragesteuerte x-y-Regelung
Wie auf Abbildung zu sehen ist, werden nur wenige Anschlüsse des Arduino für
unser Projekt verwendet. Benötigt werden lediglich die USB-Schnittstelle, die die
Spannungsversorgung und die Verbindung zu Labview gewährleistet, sowie Masse
5V+ und 2 PWM-Ausgänge (I/O Pin 3/5) zur Ansteuerung der Servo‘s.
6.1.3 Anschluss der Servomotoren
Für einen Standard Servo gilt in der Regel folgende Belegung: Auf der schwarzen
Ader liegt Masse. Auf der roten Ader liegen 5V+ und die gelbe oder graue Ader
überträgt das PWM-Signal.
Abbildung : Anschlussbelegung Servo
6.2 Software
Der Arduino wird mittels eigener Software programmiert. Diese ist Open Source und
kann auf der Herstellerseite heruntergeladen werden. Mit der Software werden
sogenannte „Sketches“ erstellt, die auf den Mikrokontroller übertragen werden. Die
Programmiersprache ist an C angelehnt. Wir benötigen die Software, um den
vorgefertigten Sketch von National Instruments zu übertragen und so die
Verwendung in Labview zu realisieren.
Dominik Lönarz, Martin Wilbert
27
Kameragesteuerte x-y-Regelung
6.2.1 Installieren/Programmieren der Arduino Plattform
Als erstes muss der Treiber von der Herstellerseite installiert werden. Nach dem
Einstellen
(
des
Com-Ports
kann
nun
über
die
Arduino
Software
Abbildung ) der vorgefertigte Sketch von National Instruments auf
die Plattform geladen werden. Nach dem Aufspielen ist der Arduino bereit zum
Datenaustausch mit Labview.
Abbildung : Programmierumgebung Arduino
6.2.1 Einbinden Der Arduino Plattform in Labview
Labview stellt ein Interface für die Arduino UNO R3 Entwicklung Umgebung zur
Verfügung. Dieses Interface ermöglicht ein sehr leichtes Einbinden des Arduino in
das Labview 2012 Entwicklungssystem. Das erreicht man mit dem NI Labview
Interface for Arduino Toolkit, das man auf der Homepage von National Instruments
Dominik Lönarz, Martin Wilbert
28
Kameragesteuerte x-y-Regelung
herunterladen kann. Es wird mittels VI Package Manager installiert, anschließend
stehen alle benötigten Programmbausteine zur Verfügung.
7 Labview
7.1 Testprogramm zur Ansteuerung der Servomotoren
Abbildung : Bsp. Programm zur Ansteuerung der Servomotoren
In
unserem Test-Programm
wird
der
Grundaufbau
der
Servo-Ansteuerung
veranschaulicht. Im 1. Bausteint wird festgelegt, an welchem Com-Port der Arduino
angeschlossen ist. Der 2. Baustein bestimmt, wie viele Servomotoren angesteuert
werden sollen. Der 3./4. Baustein gibt an, welchen Pin der jeweilige Servomotor
belegt. Baustein 5 und 6 übergeben die eingestellte Pulsweite in Mikrosekunden. an
den Arduino. Mit der Konstante wird der Ziel-Servo bestimmt. Baustein 6 und 8 lesen
die aktuelle Position des Servo aus und zeigen sie in einem Balkendiagramm an.
Wie bei den Bausteinen 5 und 6 wird der Ziel-Servo über eine Konstante bestimmt.
Über den Baustein 9 schließt man die aktive Verbindung zum Arduino.
Über das gezeigte Bedienfeld kann nun die Pulsweite für jeden Servo einzeln
geregelt werden. Die unteren Balkenanzeigen geben an, auf welcher Position der
Servo zurzeit steht.
Dominik Lönarz, Martin Wilbert
29
Kameragesteuerte x-y-Regelung
7.2 Bedienungsanleitung Kameragesteuerte X-Y-Regelung
7.2.1 Voraussetzungen:
Software:
LabView 2012 Entwicklungssystem
Vision Acquisition Software 08/2012
Vision Development Module 2012
Vision Builder AI 2012
Arduino Software Toolkit
Arduino Treiber
NI IMAQ-Treiber
Hardware:
Arduino Mikrocontroller (Arduino UNO R3)
USB Webcam (Windows LifeCam Studio)
Hardware Aufbau balancierende Ebene
PC mit Windows Betriebssystem und für die Software ausreichende
Konfiguration
7.2.2 Inbetriebnahme:
Vor der Inbetriebnahme muss die nötige Software von National Instruments installiert
sein.
Außerdem
muss
sichergestellt
werden,
dass
die
Hardware
korrekt
angeschlossen ist.
Da ein Datenaustausch zwischen Lab View und der Vision Builder AI Software
stattfindet, ist es notwendig, dass die Projekt Datei X_Y_Regelung.lvproj gestartet
wird, da hier die Variablen, die für den korrekten Betrieb nötig sind, im System
registriert werden. Über das geöffnete Projekt kann nun die Virtual Instrument Datei
main.vi gestartet werden.
Ein anschließender Start der Software kann alternativ direkt über die Virtual
Instrument Datei erfolgen.
Dominik Lönarz, Martin Wilbert
30
Kameragesteuerte x-y-Regelung
7.2.3 Bedienung:
Abbildung : Frontpanel der Hauptapplikation
Nach
dem
erfolgreichen
Start
der
Software
ist
das
Frontpanel
sichtbar
(Abbildung ). Dies zeigt die Grundeinstellung des Systems mit dem Kontrollpanel. Auf
der linken Seite werden die Statusmeldungen des Bildverarbeitungsalgorithmus
durch die grünen LEDs angezeigt. Darüber befindet sich der Schieberegler für den
Treshold-Filter. Daneben befindet sich die Auswahl für die Arduino-Schnittstelle.
Unterhalb der Statusanzeigen wird das aktuell zu verarbeitende Bild angezeigt. Ein
grünes Dreieck zeigt, dass dieser Wert durch eine globale Variable von der Vision
Builder AI Inspection beeinflusst wird. Weiterhin findet man hier die Bedienelemente,
um das Programm zu steuern.
Dominik Lönarz, Martin Wilbert
31
Kameragesteuerte x-y-Regelung
Auf der rechten Seite des Frontpanels befindet sich das Kontroll- und EinstellungsPanel. Ersteres zeigt die aktuelle Lage der Platte über die vier Balken an (links,
oben, rechts, unten). Die zwei Schieberegler im oberen Bereich dienen zur
Steuerung der Servos im Handbetrieb. Die Elemente unterhalb der Lageanzeige
liefern Informationen über die Kugelposition und die Plattengröße.
Abbildung : Frontpanel der Hauptapplikation
Abbildung
zeigt das Frontpanel mit dem Einstellungsreiter. Hierüber kann im
laufenden Betrieb der Regler eingestellt werden. Es bieten sich Einstellmöglichkeiten
zur Optimierung der Schleifenzeit, der Grundregelung, der Verschiebung der
anzusteuernden Position und des PID Regelverhaltens.
Im oberen Bereich des Frontpanels befindet sich eine Menüleiste, worüber das
Programm
ebenfalls
gesteuert
werden
kann. Außerdem
Standardwerte geladen sowie eine Hilfe angezeigt werden.
Dominik Lönarz, Martin Wilbert
32
können
hier
die
Kameragesteuerte x-y-Regelung
Vor dem Start der Anwendung muss sichergestellt werden, dass die richtige
Schnittstelle zum Arduino eingestellt ist.
Nach dem Klick auf den Button „System Initialisieren“ öffnet sich ein Dialog, der zur
Auswahl des Bildverarbeitungsalgorithmus auffordert. Als Standarddateiendung ist
hier .vbai, als Dateiname Bilderkennung_V1.0.vba gewählt. Das Standardverzeichnis
wird auf den Speicherort des VIs gesetzt.
Die Bestätigung der Auswahl der Vision Builder Inspection geschieht durch einen
Doppelklick oder durch Drücken des Buttons „Öffnen“.
In einem neuen Fenster sieht man, wie der Vision Builder AI Server gestartet wird
(Abbildung ).
Abbildung : Vision Builder AI Server Luncher
Nachdem der Server läuft, ist das System Betriebsbereit. Die Buttons „Stopp“ und
„Regelung aktivieren“ sind nun wählbar. Über die sechs LED-Anzeigen wird der
Vision Builder AI Inspection Status angezeigt. „LV_Import“ zeigt, ob die Kamera
arbeitet und Bilder aufzeichnet. Die Anzeige „LV_Bearbeitung“ signalisiert die
funktionierende Bildbearbeitung (Aus dem 32bit Farbbild muss ein 8Bit Graustufen
Bild generiert werden). „LV_Plattenerkennung“ ist aktiviert, wenn die Platte korrekt
erkannt wurde. Auf die Plattenerkennung folgt das Koordinatensystem, dieses wird
durch „LV_Koordinatensystem“ angezeigt. Auf das Koordinatensystem setzt die
Bereichserstellung auf, dessen Status mittels „LV_Bereichserstellung“ signalisiert
wird. Zuletzt wird die Kugelerkennung durch „LV_Kugelerkennung“ angezeigt.
Dominik Lönarz, Martin Wilbert
33
Kameragesteuerte x-y-Regelung
Außerdem sollten das aktuelle Bild und der aktuell gewählte Algorithmus sichtbar
sein. Über den Button „Stopp“ kann nun jederzeit das System angehalten und der
Vision Builder Server beendet werden.
Wenn sich zu diesem Zeitpunkt eine Kugel im System befindet, kann der „Treshold
Filter“ (Schwellwert) so lange verändert werden, bis die Kugel sauber erkannt wird.
Ob
die
Kugel
richtig
erkannt
wurde,
„LV_Kugelerkennung“ angezeigt. Bei viel Licht
wird
durch
die
Statusmeldung
muss der Wert etwas nach oben
verschoben werden, bei wenig Licht etwas nach unten.
Die Werte im Kontrollpanel werden erst nach dem Betätigen von „Regelung
aktivieren“ aktualisiert. Wenn dies geschehen ist, fängt das System sofort an, die
Kugel in den Mittelpunkt der Platte zu regeln. Im Kontrollpanel ist unter „Position X“
und „Position Y“ die aktuelle Abweichung der Kugel zum Plattenmittelpunkt in
Prozent zu sehen. Die anderen dort angezeigten Parameter zeigen die Plattenmitte
(Plattenmitte X und Plattenmitte Y), die Position der Kugel (Kugel X und Kugel Y) und
die Größe der Platte (Platte B und Platte H) in Pixel. Über den Button „Handbetrieb“
wird die Regelung deaktiviert, nun kann das System manuel bedient werden. Dies
wird über die zwei Schieberegler ermöglicht (Servo X und Servo Y). Mit „Servo X“
kann das System zwischen -100 Prozent und +100 Prozent in der X-Achse bewegt
werden. Selbiges gilt für den Regler „Servo Y“ in der Y-Achse. Alternativ kann auch in
den nebenstehenden Zahlenfeldern direkt ein Wert eingetragen werden. Mittels des
Buttons „Null-Stellung“ wird das System in die Waagerechte gebracht.
Befindet man sich im Regelbetrieb und schaltet um auf den Einstellungsreiter,
können das Regelverhalten und diverse andere Einstellungen geändert werden.
In dem nun sichtbaren Panel kann die Schleifenzeit festgelegt werden, diese dient
zur Anpassung an die Schleifenzeit der Vision Builder AI Inspection. Die aktuelle
Schleifenzeit wird nebenstehend angezeigt. Über das Element „Leerschleifen“ wird
die Anzahl der Leerschleifen angezeigt, die durchlaufen werden, bis neue Daten vom
Vision Builder AI übertragen wurden. Ein Ändern der Schleifenzeit wirkt sich direkt
auf die Leerschleifen aus. Über das Anzeigeelement „LV_Counter“ wird die Anzahl
der bisher durchlaufenden Vision Builder AI Schleifen angezeigt.
Dominik Lönarz, Martin Wilbert
34
Kameragesteuerte x-y-Regelung
Mittels den Parametern „Annäherung X“ und „Annäherung Y“ wird die Plattenneigung
in Abhängigkeit von der Kugelposition geändert. Je höher diese Werte sind, desto
weniger wird die Platte ausgesteuert. Erfahrungen haben gezeigt, dass diese Werte
zwischen zwei und drei liegen sollten.
Mit den Parametern „Gegensteuerung X“ und „Gegensteuerung Y“ wird angegeben,
wie stark die Kugel gebremst wird. Bewegt sich die Kugel schnell (Abstand der Kugel
zwischen
zwei
Messungen
hoch),
wird
die
Platte
entgegengesetzt
der
Bewegungsrichtung der Kugel geregelt. Erfahrungswerte liegen hier zwischen 0,2
und 0,3.
Die zwei Parameter „Verschiebung X“ und „Verschiebung Y“ stehen in Abhängigkeit
zu dem Button „Punkt“. Es kann eine Prozentuale Verschiebung zwischen +/- 100
Prozent eingestellt werden. Dies hat zur Folge, dass die Kugel nicht in der Mitte
positioniert wird, sondern um den eingetragenen Wert verschobenen wird. Positive
Werte lenken die Kugel nach oben beziehungsweise nach rechts ab. Negative Werte
hingegen lenken die Kugel nach unten und nach links.
Abbildung : Positionsverschiebung
Dominik Lönarz, Martin Wilbert
35
Kameragesteuerte x-y-Regelung
Wird der Button „Punkt“ aktiviert, wird die Platte in Mittelposition gebracht. Jetzt kann
mit der Maus ein beliebiger Punkt im Bild angeklickt werden (siehe Abbildung grünes
Kreuz). Der rote Punkt im Bild zeigt den Plattenmittelpunkt, darunter befindet sich die
Kugel. Die Verschiebung wird links im Bild als Zahlenwert übernommen. Mit einem
weiteren Drücken auf den Button „Punkt“ wird der nun verschobene Punkt versucht
anzusteuern. Liegen die verschobenen Werte nahe der Plattengrenze oder gar
außerhalb, so wird es nicht möglich sein, die Kugel dort zu positionieren, da ein
Gegenregeln nur noch in eine Richtung möglich ist.
Weitere Einstellungsmöglichkeiten bietet der verwendete PID Regler. Hier kann über
die Parameter „P X“, „P Y“, „D X“, „D Y“, „I X“ und „I Y“ das Regelverhalten für die Xund Y-Achse separat eingestellt werden. Über den Button „Regler an“ kann der
Regler komplett ein- bzw. ausgeschaltet werden.
Dominik Lönarz, Martin Wilbert
36
Kameragesteuerte x-y-Regelung
7.3 Funktionsweise der Lab View Anwendung
Die Lab View-Anwendung stellt das Herzstück dieser Arbeit dar, hier werden die vom
Bildverarbeitungsalgorithmus
bereitgestellten
Daten
verarbeitet
und
die
Servomotoren mittels des Arduino-Mikrocontroller-Boards gesteuert. Die ermittelten
Bildinformationen
müssen
in
rechenbare
Werte
umgesetzt
werden,
damit
anschließend die Regeleinheit diese Daten verarbeiten und an die Steuereinheit
weitergeben kann. Aufgabe der Steuereinheit ist es, diese Regeldaten in für den
Mikrocontroller verständliche Daten umzusetzen, damit diese an die Servomotoren
weitergegeben werden können. Die Servomotoren setzen diese elektrischen Impulse
in kinetische Energie um, so dass die zweidimensionale Ebene sich in ihren beiden
Achsen neigt, um die Kugel entsprechend zu bewegen.
Wie im Kapitel über den Bildverarbeitungsalgorithmus beschrieben, reicht es nicht
aus, ein einzelnes VI (Virtual Instrument-File) zu erstellen. Da die von Vision Builder
erfassten Daten mittels globalen Variablen übertragen werden, muss eine Lab View
Projektdatei erzeugt werden (siehe Abbildung ).
Abbildung : Lab View Projektdatei
Dominik Lönarz, Martin Wilbert
37
Kameragesteuerte x-y-Regelung
Abbildung
zeigt die Projektdatei mit den dazugehörigen Dateien. Enthalten sind
unter anderem der Bildverarbeitungsalgorithmus „Bilderkennung_V1.0.vbai“, die
Datei „hilfe.pdf“ und „hilfe.vi“, zuständig für die Anzeige und den Aufruf der Hilfedatei,
das VI „ueber“ mit Informationen zur Anwendung und eine Bibliothek mit den
verwendeten Variablen (rechter Teil der Abbildung ). Kerndatei stellt die „main.vi“ dar,
mit dieser wird das eigentliche Programm gestartet.
Das VI „ueber“ kann im Hauptprogramm über den Menüpunkt „Hilfe“ aufgerufen
werden.
Dieses
enthält
Versionsinformation,
die Autoren
und
eine
kurze
Beschreibung. Mittels des Buttons „Hilfe“ wird das VI „hilfe“ ausgeführt, welches
wiederum die „hilfe.pdf“ einbettet. Die PDF-Datei beinhaltet die Bedienungsanleitung
des Hauptprogrammes.
Nach dem Öffnen der „main.vi“ wird das Frontpanel angezeigt und über den Reiter
„Fenster“,
„Blockdiagramm
anzeigen“
(Strg
+
E)
gelangen
wir
in
das
Programmierfenster, in welchem das Hauptprogramm angezeigt wird.
Die Anwendung ist sequenziell gestaltet, was über fünf flache Sequenzen erreicht
wird. Dies ermöglicht uns, das Programm Schritt für Schritt abzuarbeiten, was
wiederum zu geringeren Schleifenzeiten in der eigentlichen Regelung führt.
Dominik Lönarz, Martin Wilbert
38
Kameragesteuerte x-y-Regelung
Abbildung : main.vi Initialisierung
In Fehler: Referenz nicht gefunden wird die erste Sequenz dargestellt, welche der
Initialisierung der Anwendung dient und in einer Endlosschleife (While-Schleife) läuft.
Es werden Einstellungen bezüglich der verwendeten Bedienelemente vorgenommen
sowie das Menü eingerichtet, über welches das Programm gesteuert werden kann.
Des Weiteren befindet sich in der Schleife eine Case-Anweisung, welche über das
Menü oder den Button „System Initialisieren“
aufgerufen wird. In der Case-
Anweisung wird ein Express-VI verwendet, das einen Dialog zur Auswahl der
Bildverarbeitungsdatei erzeugt. Das Express-VI wird mit folgenden Daten versorgt:
Dialogtext, Schaltflächenbeschriftung, Standarddateiendung, Standarddateiname,
Name der Dateiendung und Standardpfad. Vor der Sequenz in Abbildung sieht man
ein Teil der Bedienelemente, die mit den verwendeten globalen Variablen verknüpft
sind.
Dominik Lönarz, Martin Wilbert
39
Kameragesteuerte x-y-Regelung
Abbildung : main.vi Serverstart
Nachdem der Bildverarbeitungsalgorithmus ausgewählt ist, wird dieser in der zweiten
Sequenz geöffnet. Hierzu muss zuerst der Vision Builder AI Server gestartet und eine
Verbindung hergestellt werden (Abbildung ). Nach dem Öffnen der Inspection wird
diese ausgeführt.
Abbildung : main.vi Reglervorbereitung
Im nächsten Schritt (Abbildung ) wird der Arduino Mikrocontroller initialisiert,
anschließend wird wieder eine Endlosschleife ausgeführt, welche über den Button
„Regelung aktivieren“ beendet wird. So springt das Programm in die Regelsequenz.
In Sequenz drei muss das Menü aktualisiert werden, damit auch von dort aus der
Regler aktiviert werden kann. Über den Button „Stopp“ kann das Programm beendet
werden. Hierfür wird eine Case-Anweisung ausgeführt, in welcher der Vision Builder
AI Server gestoppt und die Verbindung beendet wird. Außerdem wird der Button
„Stopp“ auf boolesches „false“ gesetzt, da dieser mehrfach verwendet wird und daher
nicht als Taster ausgeführt werden kann. Als weitere Maßnahme in dieser Sequenz
werden verschiedene Variablen (Abbildung rechte Seite) für den Regelbetrieb auf
„null“ gesetzt.
Die Regeleinrichtung wird in einer Sequenz abgebildet, allerdings besteht diese aus
mehreren verschachtelten Schleifen und Case-Anweisungen. An erster Stelle in der
Dominik Lönarz, Martin Wilbert
40
Kameragesteuerte x-y-Regelung
Sequenz steht eine While-Schleife, diese sorgt dafür, dass das System durchgängig
läuft und die Kugel Schleife für Schleife ausbalanciert wird. In dieser Schleife wird
eine Case-Anweisung ausgeführt, diese wird boolesches „true“, wenn die Variable
„LV_Counter“ sich ändert. „LV_Counter“ repräsentiert den Schleifenzähler der Vision
Builder AI Inspection. Liefert diese Variable keine neuen Daten, das heißt die Lab
View Regelschleife läuft schneller als die Inspection-Schleife, wird eine „LeerSchleife“ ausgeführt. Diese „Leerschleife“ beinhaltet lediglich einen Zähler und einen
2ms-Timer. Der Timer dient zur Begrenzung der CPU-Last und es wird über den
Zähler dargestellt, wie oft diese „Leer-Schleife“ ausgeführt wird. Ist die CaseAnweisung allerdings „true“, wird eine dreifach gestapelte Sequenz ausgeführt. In der
ersten und letzten Sequenz wird jeweils die aktuelle Zeit ermittelt, diese werden
voneinander abgezogen und die Differenz ergibt die Zeit, welche die mittlere
Sequenz benötigt, um einmal durchzulaufen. Diese Sequenz beinhaltet die
eigentliche Regelung.
Im ersten Abschnitt kommt erneut eine Case-Anweisung zum Einsatz, diese dient der
Nullpunktverschiebung per Mausklick und wird durch den Button „Punkt“ aktiviert.
Abbildung : main.vi Koordinatenverschiebung per Maus
Dominik Lönarz, Martin Wilbert
41
Kameragesteuerte x-y-Regelung
Mit der Funktion „ROI Image“(Region Of Interest), zu sehen in Abbildung , werden
die „ROI“ Informationen des Bildes abgefragt, welche die Koordinaten des mit der
Maus gesetzten Punktes enthalten. Die Daten liegen im Typ Cluster vor und müssen
erst gekapselt werden. Dies geschieht durch eine Aufschlüsselung des Clusters, so
erhalten wir Daten vom Typ Array, die wieder in ein Cluster umgewandelt und
aufgeschlüsselt werden. Das so entstandene Cluster wird wiederum aufgeschlüsselt
und umgewandelt, dadurch stehen die Koordinaten, angegeben in Pixeln, in zwei
Variablen vom Typ numerisch zur Verfügung. Diese Werte werden zuletzt noch in
Prozent umgerechnet und als direkte Verschiebung weitergeleitet.
Abbildung : main.vi Datenerfassung
Im folgenden Schritt (Abbildung ) werden die Positionsdaten für die X- und die YAchse mittels globalen Variablen erfasst und umgerechnet. Ermittelt werden die
Position der Kugel, die Mittelposition der Platte und die Breite und Höhe der Platte.
Die erfassten Werte werden absolut in Pixeln angegeben und vom Programm in
prozentuale
Werte
umgerechnet
(-100%
bis
+100%),
so
dass
die
Plattenmittelposition bei 0/0 Prozent liegt. Zusätzlich werden die ermittelten und
umgerechneten Werte im Kontroll-Reiter des Frontpanels angezeigt.
Dominik Lönarz, Martin Wilbert
42
Kameragesteuerte x-y-Regelung
Nachdem die Position relativ zur Plattenmitte bestimmt wurde, werden diese Werte
an den Standardregler weitergegeben (siehe Abbildung ).
Abbildung : main.vi Standardregler
Über das Element „Verschiebung“ kann direkt die Verschiebung des Nullpunktes in
der X- und der Y-Achse angegeben werden (Angaben in Prozent). Das Element wird
zusätzlich als Variable für die Verschiebung mit der Maus verwendet. Die
Koordinaten des angeklickten Punktes werden direkt in das Anzeigeelement
eingetragen. Diese Verschiebung wird im nachfolgenden Schritt von der aktuellen
Kugelposition (Abbildung , Eingang Kugelposition) abgezogen und anschließend auf
ein Schieberegister gelegt. Das Schieberegister sorgt dafür, dass im nächsten
Schleifendurchgang die alte Kugelposition zur Verfügung steht. Des Weiteren wird
die „verschobene“ Kugelposition für die weitere Verarbeitung an den PID Regler
weitergeleitet (Abbildung , Ausgang PID). Über das Element „Annäherung“ wird
ähnlich einem P-Regler ein Faktor dazu gerechnet. In diesem Fall wird der
eingestellte Faktor von der angepassten Kugelposition dividiert, so dass wir einen
gedämpften Wert erhalten. Die „Annäherung“ sorgt dafür, dass die Platte
entsprechend der Kugelposition geneigt und so die Kugel Richtung Mitte gelenkt
wird. Je weiter die Kugel vom Mittelpunkt entfernt ist, desto stärker wird die Platte
geneigt. Die Dämpfung ist notwendig, damit die Kugel nicht zu stark beschleunigen
kann und somit das System anfängt zu schwingen.
Dominik Lönarz, Martin Wilbert
43
Kameragesteuerte x-y-Regelung
Über das Schieberegister steht immer die letzte Position der Kugel zur Verfügung,
welche von der aktuellen Position subtrahiert wird. Dadurch erhalten wir die Differenz
der Kugelposition gegenüber dem vorherigen Schleifendurchgang. Diese Differenz
wird ebenfalls durch einen Faktor (Gegensteuerung) dividiert und zum Wert der
„Annäherung“ dazu addiert. Die Gegensteuerung bewirkt, dass, bei großer Differenz,
die Platte entgegengesetzt der Kugel geneigt wird und diese abbremst. Über die
Ausgangsleitung (siehe Abbildung , Ausgang) gelangt der angepasste Wert direkt an
die Steuereinheit, welche für den Arduino Mikrocontroller zuständig ist.
Abbildung : main.vi Vorbereitung zu Ansteuerung
Abbildung zeigt die Vorbereitung zur Ansteuerung der Servos. Mittels des Buttons
„Regler an“ kann zwischen dem PID-Regler und dem Standardregler gewechselt
werden. Dies geschieht mit dem „Select-Baustein“, welcher auf logisch „true“ prüft
und das entsprechende Signal weiterleitet. Mit dem Steuerungselement „Punkt“ wird
die zuvor beschriebene „Case-Struktur“ aktiviert, welche der Verschiebung mittels
der Maus dient. Zusätzlich wird die Platte in Mittelstellung gebracht, um
Verzerrungen zu vermeiden, welche bei der Aufnahme des Bildes entstehen könnten.
Außerdem wird über die negierte globale Variable „LV_Kugelerkennung“ das System
in Mittelstellung gebracht, sodass sich die Platte nicht unkoordiniert bewegt, sollte die
Kugel nicht erkannt werden. Des Weiteren findet hier die Umschaltung in den
Handbetrieb statt (Button „Hand“ in Abbildung ). Über den Schieberegler „Servo“
kann im Handbetrieb die Servomotor-Position verändert werden.
Dominik Lönarz, Martin Wilbert
44
Kameragesteuerte x-y-Regelung
In die dazugehörige Variable werden stets die aktuellen Positionswerte eingetragen,
so dass diese mittels des Schieberegisters angezeigt werden. Zusätzlich erfolgt eine
Anzeige über die zwei Balkenanzeigen.
Die hier anstehenden prozentualen Werte werden anschließend umgerechnet, damit
sie vom Arduino verarbeitet werden können. Auf den Arduino und dessen
Ansteuerung wird hier nicht weiter eingegangen, da dieser in einem separaten
Kapitel behandelt wird.
Abbildung : PID-Regler
Der verwendete PID-Regler4 wird als SubVI eingefügt und stammt aus dem
deutschen Lab View-Forum5. Er wurde leicht modifiziert und um den Eingang „s“
erweitert, damit ist es möglich, den sogenannten „wind up“ Effekt zu umgehen, in
dem die Integration des I-Anteils zurückgesetzt wird. Der PID-Regler erhält über
Eingabeelemente die Werte für die Eingänge P, I und D. Über „upper limit“ und „lower
limit“ werden der obere und untere Grenzwert eingestellt. Der Anschluss „set point“
ist die Soll-Vorgabe und „process variable“ der Ist-Wert. Dieser Dateneingang ist
direkt mit der Kugelposition verknüpft. Der Ausgang „output value“ wird direkt an den
PID-Eingang in Abbildung weitergegeben.
Die letzte Sequenz dient der Beendigung des Vision Builder AI Servers, dem Arduino
und Lab View. Wie schon in Sequenz drei beschrieben, wird hier der Server gestoppt
und anschließend die Verbindung geschlossen. Ein Fehlerdialog weist auf mögliche
4
Erläuterungen zum Verständnis eines PID-Reglers werden im Anhang aufgeführt.
5
PID-Regler (http://www.labviewforum.de/attachment.php?aid=2923) bezogen von
http://www.labviewforum.de/Thread-Wo-ist-der-PID-Regler-Baustein.
Dominik Lönarz, Martin Wilbert
45
Kameragesteuerte x-y-Regelung
Fehler hin. Wird diese Meldung bestätigt, wird die Anwendung beendet. Ist ein Fehler
aufgetreten, muss der Vision Builder AI Server eventuell manuell beendet und der
Arduino mittels der Reset-Taste zurückgesetzt werden.
7.4 Problematiken der Lab View Anwendung
Das erste Problem stellte der Aufruf der Bildverarbeitung dar. Dieses Problem
konnte, wie im Kapitel zum Bildverarbeitungsalgorithmus beschrieben, mittels des
Vision Builder AI Servers behoben werden.
Bis zum Zusammenfügen der Softwareelemente, wurden die Tests mit der MyDAQMessbox von National Instruments durchgeführt, dies führte aber zu einer erhöhten
Schleifenzeit von ca. 40ms. Dadurch war eine ruckel-freie Ansteuerung der
Servomotoren nicht möglich. Durch die Verwendung des Arduino Mikrocontroller
Boards verkürzte sich die Schleifenzeit auf ca. 10ms. Dies macht sich in der
Performance der Servomotoren stark bemerkbar.
Durch die Bewegung der Platte ändert sich dessen Winkel, dies hat zur Folge, dass
der Nullpunkt der Platte verschoben wird. Durch diese Problematik wird leider eine
genaue Ausregelung nicht möglich, so dass die Servomotoren nahe des Nullpunktes
immer wieder versuchen, die Kugel genau auf „Null“ zu positionieren. Dies führt
dazu, dass durch die Servomotoren die Platte etwas ruckelt, auch dann, wenn die
Kugel eigentlich schon „steht“.
Weitere Probleme bereitet die Integration des I-Anteils im verwendeten PID-Regler.
Wird der Regler nicht angesprochen, so läuft dieser Integralwert nach einiger Zeit
über und der PID-Regler verweigert seinen Dienst. Abhilfe brachte eine Modifizierung
des verwendeten Reglers. Es wurde ein Eingang zum Zurücksetzen des I-Anteils
hinzugefügt, so dass der Regler, wenn er nicht verwendet wird, zurückgesetzt wird.
Ein weiteres Problem bezüglich des PID-Reglers ist die Verzögerung in den
vorliegenden Daten. Zuerst muss das Bild erfasst und bearbeitet werden.
Anschließend werden die ermittelten Werte in die Variablen geschrieben, damit Lab
View diese aufgreifen und weiter verarbeiten kann. Zum Schluss werden die Daten
an den Arduino übertragen und die Servomotoren stellen die neuen Werte ein. Dies
kann je nach Tageslicht und Plattenneigung schon mal 400ms in Anspruch nehmen.
Dominik Lönarz, Martin Wilbert
46
Kameragesteuerte x-y-Regelung
Im Kapitel über die Hardware haben wir dargestellt, dass die Zeit, welche die Kugel
benötigt, um in der Y-Achse von einer zur anderen Seite zu rollen, ca. 500ms beträgt.
Demnach befindet sich die Kugel schon auf einer anderen Position, wenn der Regler
auf die vorhandenen Daten reagiert. Hier könnte es von Vorteil sein, die
Kugelposition vektoriell zu betrachteten, um so die nächste Position der Kugel
vorherzusagen. Damit wäre der Regler einen Schleifenzyklus schneller.
Des Weiteren ist es nicht möglich, den Regler genau einzustellen, da sich die
Schleifenzeiten der Bildverarbeitung ständig ändern und so nicht immer aktuelle
Bildinformationen zur Verfügung stehen, was dazu führt, dass „Leerschleifen“
ausgeführt werden. Deswegen kann der PID-Regler nicht ordentlich integrieren und
differenzieren, sodass das gewünschte Regelverhalten ausbleibt.
Damit der Regler korrekt arbeiten kann, muss der Regler vollständig in die
Anwendung
eingebracht
werden.
Außerdem
müsste
das
Ausführen
der
„Leerschleifen“ so geändert werden, dass der Regler hiervon nicht beeinflusst wird.
Die relativ langen Schleifenzeiten der Bildverarbeitung, bezogen auf die Schleifenzeit
der Regelung, können durch Verwendung einer industriellen s/w-Kamera behoben
werden. Durch höhere Bildwiederholfrequenzen muss nicht auf ein neues Bild
gewartet werden. Da eine industrielle s/w-Kamera direkt ein 8Bit-Bild liefert, fiele
damit ein Schritt im Bildverarbeitungsalgorithmus weg, was wiederum zu geringeren
Iterationszeiten führen würde.
Erst wenn eine ausreichend schnelle und genaue Regelung realisiert ist, kann
versucht werden, eine Demofunktion zu entwickeln, welche es ermöglicht,
verschiedene geometrische Figuren „abzurollen“.
Dominik Lönarz, Martin Wilbert
47
Kameragesteuerte x-y-Regelung
8 Fazit
Zusammenfassend lässt sich sagen, dass die Projektziele größtenteils erreicht
wurden. Es ist uns gelungen, mit Hilfe einer Webcam und zwei Servomotoren eine
Stahlkugel auf einer Holzplatte zu balancieren. Dabei kann ein nahezu beliebiger
Punkt auf der Platte angesteuert werden. Ein weiteres Ziel war die Demonstration
verschiedener Regler. Dies wurde insoweit erfüllt, dass eine eigene Regelstufe
erstellt und zusätzlich ein PID-Regler implementiert wurde, auf dessen Problematik in
diesem Abschlussprojekt eingegangen wurde. Auf das mögliche Erweiterungsziel,
das
Nachfahren
von
verschiedenen
geometrischen
Figuren,
konnte
nicht
eingegangen werden, da hierfür eine Optimierung der Geschwindigkeit nötig wäre.
Dazu wäre es von Vorteil, bessere Servomotoren zu verwenden und diese nicht am
Rand, sondern weiter Richtung Mitte zu platzieren, um den steuerbaren Weg der
Servomotoren zu verkürzen. Nach der Modifizierung der Hardware, könnte es
notwendig sein, den Regelkreis und den Bildverarbeitungsalgorithmus zu optimieren,
um die Software an die Hardware anzugleichen. Um die Rolleigenschaften der
Stahlkugel zu verbessen, müsste die Pappelholzplatte durch eine ebene Fläche, wie
zum Beispiel eine Metallplatte, ersetzt werden. Diese Maßnahmen würden es
ermöglichen, das nicht behandelte Sonderziel zu erreichen und so geometrischen
Figuren zu folgen. Eine weitere Möglichkeit zur Erweiterung dieser Arbeit bestünde
darin, Hindernisse einzubauen, die umfahren werden müssen.
Die beschriebenen Punkte bieten sich dazu an, in einem Anschlussprojekt
aufgegriffen und ausgebaut zu werden.
Abschließend ist zu sagen, dass die erreichten Ziele in der geforderten Zeit
hinreichend erfüllt wurden und die während der Arbeit auftretenden Probleme alle
thematisiert und im Rahmen der gegebenen Möglichkeiten behoben wurden.
Dominik Lönarz, Martin Wilbert
48
Kameragesteuerte x-y-Regelung
9 Englische Zusammenfassung
This project is about image acquisition/recognition and the analysis of them. It is our
aim to balance a steel ball on a movable plate by use of a camera system. The steel
plate can be moved in all directions by two servo motors. These two motors will be
controlled by an Arduino UNO R3 development board and a personal computer with
LabView. The image recognition will be handled by the NI Vision Builder. The pictures
will be taken by a Microsoft LifeCam Studio.
We used the following Software:
LabView 2012 Development Environment
Vision Acquisition Software 08/2012
Vision Development Module 2012
Vision Builder AI 2012
Arduino Software Toolkit
Arduino driver
NI IMAQ-driver
In summary, it can be said that we reached our targets. We are able to balance the
steel ball on the movable plate to every position we want.
The main problem with the Hardware setup was to find the right surface for the
camera. On a bright surface the steel ball would cast to many shadows, but it had a
better contrast than a black one. We finally chose a black and matt surface, because
it was the better solution for the shadow problem. The servos we used have an
reaction time of 200ms for 60 degrees, which is too slow to control the steel ball
properly. It took a few seconds to get the steel ball under control. To reduce the circuit
time, we used the Arduino UNO R3 instead of the NI myDAQ. A too dark environment
caused trouble, too, because in the dark the Tresholdfilter needs other settings than it
needs on a bright environment. Also the fps rate will drop in a dark environment.
Other fields of application could be to place obstacles on the plate and steering the
steel ball around them or control the movement in geometrical figures like a triangle,
for example. Finally we can say that we reached all targets in time. All occurring
Problems were addressed and solved.
Dominik Lönarz, Martin Wilbert
49
Kameragesteuerte x-y-Regelung
10 Verzeichnisse
10.1 Quellenverzeichnis
Physik für Ingenieure von Hering, Martin und Stohrer, Springer Verlag, 10. Auflage,
Berlin Heidelberg, 2007
Seite 12
Internetquellen (Stand: 05.04.2013):
http://www.physik.uni-augsburg.de/~sausemar/FP14/FP14.pdf
Seite 53
http://www.labviewforum.de/Thread-Wo-ist-der-PID-Regler-Baustein
Seite 45
http://www.servodatabase.com
Seite13
http://www-home.fh-konstanz.de/~mfranz/ibv_files/lect00_Einleitung.pdf
Seite 5
10.3 Tabellenverzeichnis
Dominik Lönarz, Martin Wilbert
50
Kameragesteuerte x-y-Regelung
10.2 Abbildungsverzeichnis
Dominik Lönarz, Martin Wilbert
51
Kameragesteuerte x-y-Regelung
11 Anhang
11.1 Puls-Weiten-Modulation (PWM)
Der Bewegungsradius des Servo wird durch ein Pulsweitenmoduliertes Signal
gesteuert. Die minimale Pulsdauer beträgt ca. 1ms (Linksanschlag). Rechtsanschlag
erreicht man mit einem ca. 2ms langen Signal. Bei Mittelstellung wird der Servo mit
einem ca. 1,5ms langen Puls angesteuert. Die gesamte Periodendauer beträgt 20ms
Millisekunden(siehe Abbildung ).
Abbildung : PWM-Signal
Dominik Lönarz, Martin Wilbert
52
Kameragesteuerte x-y-Regelung
11.2 Der PID - Regler6
11.2.1 Zweipunkt-Regler
Die primitivste Form eines Reglers ist der sogenannte Zweipunktregler. Er kennt nur
zwei Zustände für die Stellgröße (z.B. Heizung ein/aus) und wird meist durch einen
Komparator mit Hysterese realisiert (z.B. Bimetallschalter). Diese Art der Regelung
führt zwangsläufig zu einer Oszillation der Regelgröße, ist dafür aber technisch
einfach zu realisieren und daher meist sehr billig.
11.2.2 Proportionalregler
Ein Proportional- (P-) Regler liefert eine kontinuierliche Stellgröße, die zur
Regelabweichung proportional ist. Da die Stellgröße immer durch einen maximalen
und minimalen Wert beschränkt ist, geht der P-Regler bei großer Regelabweichung
in Sättigung. Den linearen Bereich dazwischen nennt man „proportionale
Bandbreite“. Diese wird umso kleiner je größer die Proportionalverstärkung k gewählt
wird. k ist im Idealfall frequenzunabhängig. Das Problem des P-Reglers liegt darin,
dass er stets eine endliche Regelabweichung benötigt, um reagieren zu können (es
sei denn der Arbeitspunkt in der Mitte der Bandbreite liefert zufällig den gewünschten
Sollwert). Man könnte nun k möglichst groß wählen, um die dauerhafte
Regelabweichung entsprechend klein zu halten. Dem sind jedoch Grenzen gesetzt,
da zu hohen Frequenzen hin praktisch jede Regelstrecke durch ihr Tiefpassverhalten
eine Phasenverschiebung von 180° erreicht. An diesem Punkt tritt anstelle von
Gegenkopplung Mitkopplung auf und bei einer Schleifenverstärkung ≥1 hat dies eine
ungedämpfte Schwingung des Systems zur Folge, was es zu vermeiden gilt. Deshalb
muss die Verstärkung des P-Reglers so gering gehalten werden, dass bereits vor
Erreichen der Mitkopplung die Schleifenverstärkung <1 wird.
6
Das Kapitel PID-Regler wurde übernommen von der Internetquelle:
http://www.physik.uni-augsburg.de/~sausemar/FP14/FP14.pdf Stand: 05.04.2013
Dominik Lönarz, Martin Wilbert
53
Kameragesteuerte x-y-Regelung
11.2.3 Integralregler
Das Problem der dauerhaften Regelabweichung des reinen P-Reglers kann durch
Hinzunahme eines Integrators weitgehend behoben werden. Der Integrator liefert
einen additiven Beitrag zur Stellgröße, der sich aus dem zeitlichen Integral der
Regelabweichung ergibt und erst dann stationär wird, wenn die Regelabweichung
verschwindet. Der Integrator besitzt eine Phasennacheilung von −90° und eine
Verstärkung proportional zum Kehrwert der Frequenz (Steigung −1 im BodeDiagramm). Die Grenzfrequenz des PI-Reglers, bei der die Verstärkung gleich der PVerstärkung wird, muss deutlich kleiner als die Eigenfrequenz des P-geregelten
Systems gewählt werden, um das Stabilitätskriterium nicht zu beeinflussen.
11.2.4 Differentialregler
Im Gegensatz zum Integrator arbeitet der Differentiator vorwiegend bei hohen
Frequenzen (Steigung +1 im Bode-Diagramm) und bei einer Phasenvoreilung von
+90°. Diese Eigenschaft führt dazu, dass eine zusätzliche Phasenreserve von 90°
zur Verfügung steht und deshalb eine größere Verstärkung auch bei hohen
Frequenzen möglich ist. Dadurch reagiert der Regler schneller und kann
Oszillationen beim Einschwingvorgang effektiv unterdrücken.
Dominik Lönarz, Martin Wilbert
54