Elektronische Bildauswertung für Robotersteuerungen



Ähnliche Dokumente
ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

Dokumentation IBIS Monitor

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

Local Control Network Technische Dokumentation

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team

VB.net Programmierung und Beispielprogramm für GSV

Lizenzen auschecken. Was ist zu tun?

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Persönliches Adressbuch

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

EKF Software Server. Handbuch. Version 2.1. Hersteller: 2008 mesics gmbh Berliner Platz Münster info@mesics.de

Basisanforderungen: EVA-Prinzips. Erweiterte Anforderungen: wirtschaftlichen und privaten Alltag.

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

1 Konto für HBCI/FinTS mit Chipkarte einrichten

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Fax einrichten auf Windows XP-PC

EasyWk DAS Schwimmwettkampfprogramm

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Tutorial -

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

LPT1 Anschluss mit PCMCIA Karte

DOKUMENTATION VOGELZUCHT 2015 PLUS

10.1 Auflösung, Drucken und Scannen

Anbindung LMS an Siemens S7. Information

Steganos Secure Schritt für Schritt-Anleitung für den Gastzugang SCHRITT 1: AKTIVIERUNG IHRES GASTZUGANGS

Professionelle Seminare im Bereich MS-Office

Dokumentation: Balanced Scorecard

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Überprüfung der digital signierten E-Rechnung

GeoPilot (Android) die App

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Pilot Drivers Package. Handbuch

Installationsanleitung LogControl DL-Software

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Zur drittletzten Zeile scrollen

Installationsanleitung Barcode-Scanner des MEDI Baden- Württemberg e.v.

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Diese Prozesse und noch viele andere Tricks werden in der Digitalfotografie mit Hilfe von Bildbearbeitungsprogrammen, wie z. B. Gimp, bewältigt.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Anleitung BFV-Widget-Generator

Mediator 9 - Lernprogramm

Karten-Freischaltung mit dem UNLOCK MANAGER

Grundlagen der Theoretischen Informatik, SoSe 2008

Bedienungs- & Installationsanleitung COMMPACT / COMMPACT Audio V2.0

Eigene Dokumente, Fotos, Bilder etc. sichern

Anleitung für den Euroweb-Newsletter

Benutzerhinweise: IGW/920-SK/92 COM Port Redirector

PC-Umzug: So ziehen Sie Ihre Daten von Windows XP nach Windows 8 um

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

Produktschulung WinDachJournal

Kleines Handbuch zur Fotogalerie der Pixel AG

10.0 Quick Start mit AT89LP2052 Elliptecmotor Kit

Stepperfocuser 2.0 mit Bootloader

Trouble-Shooting Soforthilfe Mithilfe des SMART Board 800er Serie Interactive Whiteboard Bereitschaftsanzeigelämpchen

Funktionsbeschreibung Datenlogger DL28W

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software

Ich möchte eine Bildergalerie ins Internet stellen

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In -

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Herzlich Willkommen bei der nfon GmbH

Problem crazytrickler unter Windows 8:

Nokia Handy - Daten sichern.

SEMINAR Modifikation für die Nutzung des Community Builders

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1-

Tevalo Handbuch v 1.1 vom

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

Handbuch : CTFPND-1 V4

Netzwerk einrichten unter Windows

Handbuch B4000+ Preset Manager

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Kurzeinweisung. WinFoto Plus

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

Anleitung öffentlicher Zugang einrichten

Urlaubsregel in David

Ein Bild in den Text einfügen

Auto-Provisionierung tiptel 31x0 mit Yeastar MyPBX

4 Aufzählungen und Listen erstellen

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

teischl.com Software Design & Services e.u. office@teischl.com

Probleme der Navigation von Rehabilitationsroboter: Intelligenter Rollstuhl

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Online Newsletter III

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

YouTube: Video-Untertitel übersetzen

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Künstliches binäres Neuron

1 Vom Problem zum Programm

ELO Print&Archive so nutzen Sie es richtig

Transkript:

Elektronische Bildauswertung für Robotersteuerungen Hausarbeit zur Ersten Staatsprüfung für die Sekundarstufe I Themensteller: Prof. Dr. Chr. Hein (Institut für Technik und ihre Didaktik) Verfasst: Christian Maier Datum: 21.12.2006

Inhaltsverzeichnis 1 Einleitung.. 1.1 Zielstellung. 1.2 Vorgehensweise... 1.3 Ergebnis... 1 1 1 1 2 Ausgangssituation... 2.1 Projektbeschreibung... 2.2 Autonome Roboter mit Bildverarbeitung... 2.3 Auswahl des Bildverarbeitungssystems.. 2 2 3 4 3 CMUCam II.. 3.1 Hardware. 3.2 Software... 3.2.1 Grafische Benutzeroberfläche 3.2.2 Ansteuerung über den Mikrokontroller.. 8 8 9 9 12 4 Entwicklung der Bildverarbeitung. 4.1 Ausgabe für die Weiterentwicklung... 4.2 Ermittlung der Parameter. 4.3 Programmierung der Bildverarbeitung in BASCOM.. 4.3.1 Beschreibung des Programmablaufs.. 4.3.2 Programmcode 13 13 13 15 15 17 5 Einsatz des Systems... 23 6 Zusammenfassung und Weiterentwicklung... 6.1 Testbericht Möglichkeiten und Grenzen.. 6.2 Fazit. 6.3 Perspektive.. 23 23 23 24

7 Anhang.. 7.1 Datenblätter.. 7.2 Bezugsquellen.. 25 25 31 Literatur- und Quellenverzeichnis. Verzeichnis der Abbildungen... 32 33

1 Einleitung 1.1 Zielstellung Ziel dieser Arbeit ist die Entwicklung einer bildgestützten Steuerung eines Modellroboters. Der Modellroboter soll mit Hilfe eines Bildverarbeitungssystems ein Objekt an seinen Farben erkennen und es finden, bzw. verfolgen können. Die Anforderungen an das Bildverarbeitungssystem sind dabei eine möglichst einfache und nachvollziehbare Konstruktion, da der Modellroboter in der Lehreraus- und weiterbildung eingesetzt werden soll. 1.2 Vorgehensweise Die Elemente eines Bildverarbeitungssystems werden einzeln untersucht und Lösungsansätze für ihre Aufgaben entwickelt. Es wird zunächst die Möglichkeit geprüft, die Bildverarbeitungssoftware selbst zu entwickeln, also Bilder einer Digitalkamera auszuwerten, um die Steuerung des Roboters programmieren zu können. Im nächsten Schritt erfolgt eine Analyse, welche kommerziellen Bildverarbeitungssysteme für den Einsatz des Modellroboters in Frage kommen. Mit Hilfe des ausgewählten Systems wird die Steuerung des Modellroboters entwickelt und die Einsatzfähigkeit überprüft. 1.3 Ergebnis Das Ergebnis dieser Arbeit ist die funktionstüchtige Steuerung des Modellroboters über eine Kamera mit Hilfe eines Bildverarbeitungssystems und der Programmierung des Mikrokontrollers. Die Bildauswertung und Ansteuerung der Motoren sind in einem kompakten, aber erweiterbaren Programm realisiert. Alle Bezugsquellen und notwendigen Schritte für einen Nachbau sind dokumentiert. 1

2 Ausgangssituation 2.1 Projektbeschreibung Diese Arbeit ist Teil eines Projektes des Instituts für Technik und ihre Didaktik der Westfälischen Wilhelms-Universität Münster an dem mehrere Studenten und Mitarbeiter teilnehmen. Ziel ist es, einen autonomen Modellroboter zu entwickeln und zu konstruieren, der Inhaltsgegenstand von Lehrveranstaltungen im Rahmen des Masterstudiengangs des Fachs Technik sein wird. Am Beispiel der Komponenten des Modellroboters werden die Studienschwerpunkte vertieft und ausgebaut. Der Modellroboter selbst soll stetig durch die Studenten weiterentwickelt werden. Im aktuellen Status des Projektes verfügt der Roboter über ein Fahrwerk, einen Antrieb mittels Schrittmotoren, Abstandssensoren und einen Mikrokontroller, der die Steuerung der Motoren übernimmt. Schwerpunkt dieser Arbeit ist die Realisierung der Steuerung des Modellroboters über ein Bildverarbeitungssystem. Im Falle eines Modellroboters besteht das Bildverarbeitungssystem aus einem optischen Element, also einem Objektiv und einem Chip, der das analoge Bild digitalisiert, und einem auswertenden Element, welches das digitale Bild analysiert und die Ergebnisse an den vorhandenen Mikrokontroller weitergibt. Dabei sind die Ergebnisse so zu deuten, dass Anweisungen in Form von Richtungsanweisungen getroffen werden können. Mit Hilfe des zu entwickelnden Bildverarbeitungssystems soll der Modellroboter ein Objekt aufgrund seiner Farbe erkennen können und dessen Position innerhalb des aufgenommenen Kamerabildes bestimmen. Anhand der Position lassen sich dann Richtungsanweisungen ableiten. Der Modellroboter soll also ein Objekt finden und darauf zufahren, bzw. es verfolgen können. 2

2.2 Autonome Roboter mit Bildverarbeitung Autonome Roboter, die mittels elektronischer Bildauswertung reagieren, finden Verwendung in der Fertigungsindustrie, in der Landwirtschaft, in der Raumfahrt, im Haushalt und in der Unterhaltungsindustrie. In der Industrie werden Roboter vor allem in Bereichen eingesetzt, die für Menschen gefährlich sind, aber auch, um Aufgaben zu übernehmen, die eher monoton und langweilig sind. Moderne Roboter erledigen Fließbandarbeit heute schneller und präziser als Menschen. Zukunftsvisionen für die Landwirtschaft gehen davon aus, dass auch hier Roboter mit Bild- und Sensortechnik zum Einsatz kommen werden. 1 Ihre Funktionsweise und Weiterentwicklung wird jährlich auf der Weltmeisterschaft für Feldroboter getestet. Bereits heute können diese Feldroboter aufgrund der Kamerabilder und Sensormeldungen Pflanzenarten erkennen, Pflanzen zählen, Reihen abfahren, Kartoffeln aufspüren und Flüssigkeiten verteilen. In Zukunft sollen sie unter anderem dazu dienen, Unkraut zu zupfen, um den Einsatz von Pestiziden zu verringern. Auch in der Raumfahrt kommen Roboter zum Einsatz. Ähnlich wie in der Industrie geben Sicherheitsaspekte und Kostengründe Ausschlag für den Rückgriff auf die Maschinen. Die Zerstörung eines Roboters ist besser zu verkraften und der Öffentlichkeit einfacher zu erklären, als der Tod eines Astronauten. Die Maschine kann darüber hinaus besser an die Umweltbedingungen angepasst werden als der Mensch. In der Regel sind Kamera und Bilderverarbeitung wichtige Bestandteile des Roboters, damit dieser navigieren und Hindernisse, wie Felsspalten und Krater, umfahren kann. 1 Müller-Merbach, Mareile, Roboter im Rübenfeld. Wie kleine intelligente Maschinen die Landwirtschaft der Zukunft bestimmen, in: wissenschaft.de, abgerufen im Internet am 01.12.2006 unter: http://www.wissenschaft.de/wissen/hintergrund/257557.html. 3

Für den Bereich der Hausarbeit existieren bereits Roboter, die lästige Aufgaben übernehmen sollen. Das Institut für Produktionstechnik und Automatisierung des Fraunhofer Instituts in Stuttgart entwickelt neben anderen Robotern solche Haushaltshelfer. 2 Ein Beispiel hierfür ist der Care- O-bot II. Sein Vorgänger wird bereits im Museum für Kommunikation in Berlin eingesetzt. Er begrüßt Besucher, führt sie herum, liefert ihnen Informationen und bewegt sich auf Rädern durch den Raum. Seine Orientierung ermöglichen neben einem Laserscanner, zwei Kameras in seinem Kopf. Wenn der Roboter den Kopf schwenkt, nehmen Scanner und Kameras Daten aus der Umgebung auf. So kann der Roboter Gegenstände im Raum erfassen und greifen. Größe, Form und Entfernung werden dabei ständig neu berechnet. Das wohl prominenteste Beispiel für den Einsatz eines autonomen Roboters, der auf Bildreize reagiert, ist der Sony Aibo (Artificial Intelligence Robot) Roboterhund. Daneben spielen Fußballroboter in der Unterhaltungsindustrie eine zentrale Rolle. Für diese stellen Farbbildkameras mit Bildverarbeitung die wichtigsten Sensoren dar. 3 Ziel ist es, einen 360 -Blick zu erzeugen, indem entweder eine Kamera von unten auf einen konischen paraboloiden Spiegel schaut, was allerdings ein verzerrtes Bild liefert, oder mehrere Kameras zum Einsatz kommen. 2.3 Auswahl des Bildverarbeitungssystems Klassische Digitalkameras, die in kompakter Bauweise erhältlich sind, leisten zwar das Aufnehmen und Digitalisieren von Bildern - die Auswertung der oft großen Dateien erfordert jedoch eine hohe Rechenleistung. Deswegen stand am Anfang die Überlegung im Raum, die Bildauswertung mit einem PC zu 2 Vgl. Paulus, Anette, Blecherne Helfer: Care-O-bot holt Saft. Pfiffige Helfer für den Haushalt, in: SpektrumDirekt. Die Wissenschaftszeitung im Internet, abgerufen im Internet am 01.12.2006 unter: http://www.wissenschaft-online.de/abo/ticker/781793. 3 Vgl. Zeil, Andreas, Roboter Fußball, in: Informatiklexikon der Gesellschaft für Informatik e.v., abgerufen im Internet am 01.12.2006 unter: http://www.giev.de/service/informatiklexikon/informatiklexikon-detailansicht/meldung/72/ 4

realisieren. Dank des geringen Gewichts der heutigen tragbaren Computer ist auch die Mobilität des Modellroboters nicht eingeschränkt, wenn man einen solchen Laptop in den Roboter legt. Üblicherweise wird die Bildauswertung in C/C++ programmiert. In einem Expertengespräch mit Prof. Ossendoth an der Fachhochschule in Bocholt und seinen Studenten, die eine ähnliche Bildauswertung bereits realisiert haben, stellte sich jedoch heraus, dass die Programmierung einer Bildauswertung in C im Rahmen des Lehramtsstudiums nicht möglich ist. Seine Studenten haben sich über mehrere Semester in speziellen Seminaren in den Stoff eingearbeitet, um ihre Erfolge zu erzielen. Als Alternative kommen nur Lösungen mit einer fertigen Bildauswertung bzw. fertige Software in Frage, welche die Bildauswertung übernimmt. Sowohl bei den professionellen fertigen Hardwarelösungen, als auch bei der beziehbaren Software stellt sich das Problem, dass die Systeme sehr teuer sind und eine Anpassung an die Anforderungen der Aufgabenstellung nicht immer möglich ist. In jedem Fall ist eine Anpassung schwierig und zeitintensiv. Die für Modellroboter üblichen Kamerasteuerungen sind die CMUCam II, Gameboy Cam und Lego Mindstorms Cam. Sie entsprechen am ehesten den geforderten Kriterien. Sie sind verhältnismäßig günstig und verfügen über eine Software, welche die Bildverarbeitung durchführt. Der Vorteil der Gameboy und Lego Mindstorms Cam liegt darin, dass sie über eine besonders einfache grafische Benutzeroberfläche programmiert werden. Einfache Aufgaben, wie das Finden und Verfolgen von Objekten, sind mit der Lego Mindstorms Software leicht zu realisieren. Die Kamera wird über USB mit einem PC verbunden und die einzelnen Bilder werden von der Software auf dem PC ausgewertet. Die Informationen, z.b. Richtungsanweisungen, werden dann per Infrarot an den Mikrokontroller gesendet. Der Nachteil ist jedoch, dass die Software nur mit dem Lego Mikrokontroller RCX per Infrarot kommunizieren kann. Die Ein- und Ausgänge des RCX sind speziell auf die Lego Hardware zugeschnitten und lassen sich nicht mit einem selbst 5

konstruierten Modellroboter verbinden. Ähnliches gilt für die Gameboy Cam. Auch sie ist an die herstellerspezifische Hardware gebunden. Abb. 1 Grafische Benutzeroberfläche Vision Command von Lego Die Bildverarbeitungslösung CMUCam II arbeitet nach einem etwas anderen Prinzip. Der CMOS Sensor, der die Bilder digitalisiert, sitzt auf einem gemeinsamen Board mit einem Mikroprozessor und gibt die Daten sofort an diesen weiter. Eine fest installierte Firmware berechnet einfache Bildverarbeitungsaufgaben und liefert über einen seriellen RS232 Port ein aufbereitetes Array zurück. Die Hauptfunktion der CMUCam II ist das automatische Erkennen von Farben in einem aufgenommenen Bild. Über den Befehl TC (TrackColor) wird die zu suchende Farbe übermittelt und das Tracking gestartet. Der Mikroprozessor gibt dann (auflösungsabhängig) bis zu 50 Mal in der Sekunde einen Wert zurück, indem unter anderem die horizontale Position der erkannten Farbe im Bildausschnitt angegeben wird. Die zurückgelieferten Werte lassen sich in einem ersten Schritt und zur Kontrolle in einem Terminal-Programm anschauen. Das Kamera Board wird dazu über einen seriellen Port mit einem PC verbunden. 6

Abb. 2 Zurückgelieferte Werte der Kamera im HyperTerminal Der erste Wert nach dem T in jeder Zeile gibt die horizontale Position an: Je kleiner der Wert, desto weiter am linken Rand des Bildausschnitts befindet sich das Objekt. Beim Wert 80 liegt es ungefähr mittig, bei Werten bis ca. 160 weiter rechts. Verbindet man das Kamera Board über einen TTL Port mit dem Mikrokontroller des Modellroboters, lässt sich der Wert in einem eigenen Programm auf dem Mikrokontroller auswerten. Die Wahl des Bildverarbeitungssystems fällt auf die CMUCam II. Sie erfüllt die Anforderungen zufrieden stellend und ist kompatibel mit dem Mikrokontrollerboard des Modellroboters. Die eingebaute Bildverarbeitungssoftware auf dem Mikroprozessor der Kamera lässt sich zwar nicht über eine grafische Oberfläche bedienen, kann jedoch nahtlos in die Programmierung der Ansteuerung der Motoren und der sonstigen Sensoren eingebunden werden. Ein großer Vorteil der CMUCam II ist, dass die Bildauswertung auf dem Board der Kamera selbst erfolgt, also kein externer PC benötigt wird. Das ganze Bildverarbeitungssystem ist deshalb sehr kompakt und leicht. 7

3 CMUCam II 3.1 Hardware Die CMUCam II wurde von Prof. Nourbakhsh, Chuck Rosenber und Anthony Rowe vom Robotics Institute der Carnegie Mellon University in Pittsburgh entwickelt. Sie besteht aus einem Board mit einem SX52 Mikroprozessor mit 75 MHZ und 262byte RAM sowie 4096byte ROM. Darauf befindet sich ein OV6620 Kameramodul mit einer Auflösung von 356x292 Pixel. Das Board verfügt über einen Abb. 3 CMUCam II seriellen Port für den Anschluss an einen PC und einen TTL Port für den Anschluss an einen Mikrokontroller. Weitere Details können den Datenblättern entnommen werden. Abb. 4 Layout des Kamera Boards 8

3.2 Software 3.2.1 Grafische Benutzeroberfläche Um die Bildschärfe des Kameramoduls einzustellen und die Grundfunktionen der Kamera zu testen und zu visualisieren, steht eine grafische Benutzeroberfläche zur Verfügung. Diese ist in Java programmiert, zur Ausführung wird also das von der Firma SUN frei zur Verfügung gestellte Java Runtime Environment benötigt. Die Software arbeitet mit einer Übertragungsrate von 115200 Baud. Deshalb muss vor der Benutzung der Software der entsprechende Jumper auf dem Kamera Board entfernt werden. Nach der Auswahl des COM Ports, an dem die Kamera angeschlossen ist, öffnet sich die Benutzeroberfläche. Da die Einstellungen im späteren Programmcode erfolgen, werden an dieser Stelle nur die Reiter Camera View und Color betrachtet. Im ersten Schritt wird mit dem Button Grab Frame ein Bild aufgenommen. Sollte die Bildschärfe nicht zufrieden stellend sein, kann sie über den Ring an der Linse der Kamera korrigiert werden. Man dreht dazu den Ring etwas weiter und nimmt zur Kontrolle erneut ein Bild auf. Abb. 5 CMUCam II GUI 9

Im aufgenommenen Bild kann nun das Objekt festgelegt werden. Dazu klickt man mit der Maus auf die Farbe die erkannt werden soll. Im ganzen Bild werden die Farbwerte grün eingefärbt, um eine Vorschau auf die aktuelle Farbauswahl zu geben. Die Position des grün eingefärbten Bereichs wird später von der Bildverabeitungssoftware ausgewertet. Abb. 6 CMUCam II GUI Sollte sich die ausgewählte Farbe nicht stark genug von den anderen Farben im Bild absetzen, werden große Teile des Bildes grün markiert. Es ist dann abzusehen, dass die Erkennung des Objekts nicht richtig funktionieren wird. Je genauer das Objekt eingefärbt wird, desto höher ist die Erkennungsrate im Betrieb am Mikrokontroller. In diesem Fall wählt man einen andern Bereich des Objekts. 10

Ist nur der gewünschte Bereich grün markiert, wird in den Reiter Color gewechselt. Die Farbwerte des vorab ausgewählten, grün markierten Bereichs werden am unteren Rand abgelesen. Es werden im linken Bereich die minimalen RGB Werte, und im rechten Bereich die maximalen RGB Werte angezeigt. Es ist darauf zu achten, dass im späteren Programm die Werte mit dem Befehl TC in der Reihenfolge R min max G min max B min max übermittelt werden. Man muss die Werte also versetzt ablesen. Abb. 7 CMUCam II GUI Mit einem Klick auf Track Color startet man die Vorschau der Farbverfolgung der Kamera. Der Schwerpunkt der erkannten Farbe wird mit 11

einem roten Punkt dargestellt. Der gesamte, vom Mikrokontroller zurück gelieferte Zeichensatz wird als blaue Box dargstellt. 3.2.2 Ansteuerung über den Mikrokontroller Der verwendete AVR-Mikrokontroller ATMega 32 kann mit verschiedenen Programmiersprachen angesteuert werden, darunter Assembler, C/C++, BASCOM, BASIC, Java und Pascal. Die Wahl der Programmiersprache fällt auf BASCOM, da sie als BASIC- Dialekt verhältnismäßig einfach zu erlernen und zu verstehen ist, und dennoch für die Programmierung des gesamten Roboters einen großen Leistungsumfang bietet. Die Ansteuerung der Kamera, sowie der sonstigen Aktoren und Sensoren lässt sich in einem Programm realisieren. Im Vergleich zu Programmiersprachen wie C/C++ werden wenig Vorkenntnisse und Einarbeitungszeit in die Struktur der Programmiersprache benötigt. Die Programmierung des Roboters in BASCOM ist auch für Studenten ohne vertiefte Programmiererfahrung nachvollziehbar und kann im Rahmen des Studiums aufgearbeitet und erweitert werden. Dadurch, dass BASCOM auf die Ansteuerung von Mikrokontrollern spezialisiert ist, gestaltet sich die in der anwenderfreundlichen Entwicklungsumgebung enthaltene Befehlsreferenz sehr übersichtlich. 12

4 Entwicklung der Bildverarbeitung 4.1 Ausgabe für die Weiterentwicklung Ein wichtiges Werkzeug bei der Programmierung in allen Programmiersprachen ist die Ausgabe. Um festzustellen, ob die Hard- oder Software nicht funktioniert und den Ablauf des Programms verfolgen zu können, ist man auf selbst programmierte, kurze Informationen angewiesen. Eine Fehlerbehebung der Software ist ohne Ausgabe so gut wie nicht möglich. Programmseitig lassen sich die LEDs auf der Platine des Mikrokontrollers ansteuern eine erste sehr rudimentäre Form der Ausgabe. Über einen eigenen, festgelegten binären Code kann man bestimmte Fehler erkennen. Je komplexer jedoch die Programmierung ist, desto schwieriger wird das Verfolgen des über die LED ausgegebenen Codes. Um die von der Kamera zurückgelieferten Werte anzeigen zu können und die Interpretation der Fehlertexte zu vereinfachen, wird ein LCD an die entsprechenden Ports des Mikrokontrollers angeschlossen. Für die Ansteuerung des LCDs mit der verwendeten Programmiersprache BASCOM lassen sich fertige Klassen finden, die die Programmierung der Ausgabe sehr vereinfachen. Durch das Einbinden der Klassen kann mit einem einfachen Befehl Text auf dem Display ausgegeben werden. Außerdem lassen sich die Zeile und die Position des Cursors auf dem verwendeten, vierzeiligen Display steuern. 4.2 Ermittlung der Parameter Als zu erkennendes Objekt wurde ein Zylinder aus Metall mit roter Farbe besprüht. Damit die Bildverarbeitung der Kamera die Position des Zylinders im Bildbereich ausgeben kann, braucht sie die genauen Farbwerte des Zylinders aus dem RGB-Farbraum. Die Werte werden in der Form R min max G min max B min max an die Kamera übermittelt. Für die Ermittlung 13

der genauen Werte wird die in Punkt 3.2.1 beschriebene grafische Benutzeroberfläche wie angegeben verwendet. Im Gegensatz zum stationären Betrieb der Kamera zeigt sich beim Einsatz auf dem Roboter eine Schwierigkeit bei der Erkennung des Zylinders. Durch den Wechsel des Hintergrunds und den veränderten Lichteinfall ändern sich die Farbwerte des Zylinders aus Sicht der Kamera bei jedem Richtungswechsel des Roboters. Um die Funktion der Kamera im Einsatz auf dem Roboter testen und entwickeln zu können, wird zunächst eine neutrale Umgebung geschaffen. Der Einsatzbereich des Roboters wird mit Tischen umstellt, um den Hintergrund möglichst gleichmäßig zu gestalten. Für einen konstanten Lichteinfall werden die Jalousien geschlossen und die Raumbeleuchtung eingeschaltet. Abb. 8 Ermittlung der Farbwerte des Zylinders vor neutralem Hintergrund. Der Farbwert des Zylinders aus Sicht der Kamera wird nun aus verschiedenen Blickwinkeln gemessen. Verwendet werden der jeweils kleinste gemessene Wert für die min-angabe und der größte gemessene Wert für die maxangabe. 14

Mit den so ermittelten Farbwerten und vor dem neutralen Hintergrund erkennt die Kamera rundum sicher das Objekt. Abb. 9 Perspektive der Kamera und Anzeige der Objekt-Erkennung. Der Roboter fährt nun bildgesteuert in Richtung des Zylinders. Bewegt man den Zylinder vom Roboter weg, fährt er ihm nach. Ein Anhalten vor dem Zylinder ist mittels eines Ultraschallsensors realisierbar, der im Programm zusätzlich angesteuert werden kann und die Fahrroutinen unterbricht. 4.3 Programmierung der Bildverarbeitung in BASCOM 4.3.1 Beschreibung des Programmablaufs Kopf Konfigurationseinstellungen Deklaration der Variablen und Subroutinen Aktivierung und Vorbelegung der verwendeten Ports Reset und Konfiguration der Kamera Start des Hauptprogramms 15

Hauptprogramm Start Subroutine SENDEN (Farbwerte) Endlosschleife START Start Subroutine EMPFANGEN (POSITION) WENN POSITION links DANN Start Subroutine MOTOR LINKS (Fahre Links) WENN POSITION rechts DANN Start Subroutine MOTOR RECHTS (Fahre Rechts) ODER SONST DANN Start Subroutine MOTOR GERADEAUS (Fahre Geradeaus) Endlosschleife ENDE Subroutinen SENDEN (R min max G min max B min max) Sende die Werte bis Empfangsbestätigung durch Kamera EMPFANGEN() Übergebe die horizontale POSITION des Objektes LCD Ausgabe: POSITION MOTOR LINKS() Port für linken Motor = STOPP Port für rechten Motor = AN MOTOR GERADEAUS() Port für linken Motor = AN Port für rechten Motor = AN MOTOR RECHTS() Port für linken Motor = AN Port für rechten Motor = STOP 16

4.3.2 Programmcode '******************************************* 'CMUcam2 Programmcode '******************************************* '##### Konfigurationseinstellungen ################ $regfile = "m32def.dat" $crystal = 8000000 $framesize = 96 $swstack = 96 $hwstack = 96 Const Writepowerport_adr = &H72 Const Readpowerport_adr = &H73 '##### Variablen deklarieren ##################### Dim Z1 As String * 1 Dim I As Word Dim Entfernung As Integer Dim F As Byte Dim Isit As Byte Dim Was As String * 100 Dim Ar(9) As Byte Dim I2cdaten As Byte Dim Where As Byte '#### Subprogramme ########################### Declare Sub Senden(byval Was As String) Declare Sub Empfangen(byval Num As Byte) Declare Sub Motor_links Declare Sub Motor_rechts Declare Sub Geradeaus 17

'#### Ports aktivieren ########################### Config Serialin = Buffered, Size = 30 Config Serialout = Buffered, Size = 30 Config Scl = Portc.0 Config Sda = Portc.1 Config Com1 = 38400, Synchrone = 0, Parity = None, Stopbits = 1, Databits = 8, Clockpol = 1 Config Porta = Output '#### Motoren-Ports ######### Config Pind.6 = Output Config Pinc.5 = Output Config Pinc.3 = Output Config Pinc.4 = Output Config Pinc.2 = Output '######################### 'Schrittmotoren Ein/Aus 'Schrittmotor Links Richtung 'Schrittmotor Links Step 'Schrittmotor Rechts Richtung Config Lcdpin = Pin, Db4 = Porta.0, Db5 = Porta.1, Db6 = Porta.2, Db7 = Porta.3, E = Porta.7, Rs = Porta.6 Config Lcd = 20 * 4 Config Lcdbus = 4 Config Lcdmode = Port Cls Locate 1, 1 I2cinit I2cstart I2cwbyte &H74 I2cstop Enable Urxc Enable Interrupts '########################################### 18

'#### Richtung der Motoren einstellen ############## Portc.5 = 0 Portc.4 = 1 Portd.6 = 1 '############################################ Cls Lcd "START" Call Senden( "RS") Cls Lcd "Kamera Reset" Call Senden( "RM 1") Cls Lcd "RAW Modus" Call Senden( "CR 18 44 19 32") Cls Lcd "Register setzen" '#### Hauptprogramm START #################### ' RGB Werte des Objekts (Rmin Rmax Gmin Gmax Bmin Bmax) Call Senden( "TC 95 150 35 85 0 41") Cls Lcd "Tracking on" Cursor Off Do Call Empfangen(8) Locate 1, 1 : Lcd "WERT: " ; Ar(2) If Ar(2) <> 0 And Ar(2) <> 84 Then Select Case Ar(2) Case Is < 75 : Call Motor_links 19

Case Is > 125 : Call Motor_rechts Case Else : Call Geradeaus End Select Else If Ar(2) = 0 Then Locate 2, 1 : Lcd " Kein Objekt " End If End If Loop '#### Hauptprogramm ENDE ##################### '#### Subroutinen ############################# Sub Empfangen(byval Num As Byte) While Isit < 255 Isit = Waitkey() Wend Num = Num + 1 For F = 1 To Num Isit = Waitkey() Ar(f) = Isit Next End Sub Sub Senden(was As String * 100) While Z1 <> "A" Print Was ; Chr(13) Waitms 5 Z1 = Inkey() Wend Z1 = Inkey() Z1 = Inkey() Z1 = Inkey() Z1 = "" 20

End Sub Sub Motor_links: Locate 2, 1 Lcd "<<<<< " Portc.4 = 0 For I = 1 To 50 Portc.2 = 0 Portc.3 = 0 Waitms 5 Portc.2 = 1 Portc.3 = 1 Waitms 5 Next Portc.4 = 1 End Sub Sub Motor_rechts: Locate 2, 1 Lcd " >>>>>" Portc.5 = 1 For I = 1 To 50 Portc.2 = 0 Portc.3 = 0 Waitms 5 Portc.2 = 1 Portc.3 = 1 Waitms 5 Next Portc.5 = 0 End Sub Sub Geradeaus: 21

Locate 2, 1 Lcd " VVVVVV " For I = 1 To 50 Portc.2 = 0 Portc.3 = 0 Waitms 2 Portc.2 = 1 Portc.3 = 1 Waitms 2 Next End Sub '#### Subroutinen ENDE ######################### 22

5 Einsatz des Systems Im Rahmen des Moduls Automatisierung (Robotik) des Masterstudiengangs der gestuften Lehrerausbildung GrHR zur Begleitung einer Praxisphase, können Studenten des Instituts für Technik und ihre Didaktik verschiedene Lerninhalte am Beispiel eines Modellroboters vermittelt werden. Der Modellroboter besteht aus den Einzelkomponenten Fahrwerk, Steuerrechner, Sensorik und den Aktoren. Im Bereich der Sensorik wird das Thema der elektronischen Bildauswertung für Robotersteuerung und Automatisierungsprozesse einen wichtigen Themenkomplex bilden. Auf der Basis der in dieser Arbeit aufbereiteten Grundlagen können Studenten Erfahrungen im Bereich der Bildverarbeitung sammeln und gegebenenfalls Themen für die fachdidaktisch orientierte Masterarbeit gewinnen. 6 Zusammenfassung und Weiterentwicklung 6.1 Testbericht Möglichkeiten und Grenzen Im Einsatz zeigt sich, dass die Bildverarbeitung der CMUCam II anfällig für wechselnde Lichtverhältnisse und Farben im Hintergrund ist. Wird die Kamera stationär, also mit festem Hintergrund betrieben, erkennt sie sicher und zuverlässig das nach seinen Farben festgelegte Objekt. Ein Außeneinsatz des Roboters wäre durch die stark wechselnden Lichtverhältnisse nur sehr fehleranfällig möglich. Potentielles Einsatzgebiet des Roboters bei Steuerung durch die Kamera sind relativ farbneutrale und durch Kunstlicht gleichmäßig beleuchtete Räume. 6.2 Fazit Das Ergebnis dieser Arbeit ist eine softwaregestützte, elektronische Bildauswertung zur Steuerung eines Modellroboters. Sie ermöglicht die 23

autonome Bewegung des Roboters in Richtung eines festgelegten Objektes und die Verfolgung desselben. Im Rahmen der Recherchen dieser Arbeit zeigte es sich, dass fertige bildgestützte, elektronische Steuerungen fast ausschließlich im industriellen Bereich zu finden und nur mit hohen Kosten verbunden zugänglich für den Bildungsbereich sind. Die Entwicklung einer eigenen Lösung im Rahmen des Studiums ist aufgrund der Komplexität nur bei entsprechender Spezialisierung und Ausrichtung des Studienganges möglich. Mit Hilfe von einfacheren, fertigen Bildverarbeitungsmodulen aus dem Bereich der Modellroboter und einer überschaubaren Programmiersprache ist es dennoch machbar, eine einfache und kostengünstige Kamerasteuerung zu realisieren. 6.3 Perspektive Auf Basis des Programmcodes, der in dieser Arbeit vorgestellt wird, könnte durch weitere Optimierungen ein Teil der fehlerhaften Positionswerte, welche die Kamera zurückliefert, kompensiert werden. Um den Blickwinkel der Kamera, und damit auch die Mobilität des Roboters zu erhöhen, könnte die Kamera mit Servomotoren ausgestattet werden. Die Kamera könnte dann horizontal und vertikal bewegt werden, und bei der Erkennung des Objekts über die Position der Servomotoren zusätzliche Richtungsangaben für die Schrittmotoren des Roboters geben. Der Roboter würde also, solange bis sich die Servomotoren wieder in der Ausgangsstellung befinden, gegen die Richtung der Servomotoren drehen. Im Rahmen der Weiterentwicklungen empfiehlt sich sicher auch eine Optimierung von Größe, Gewicht und Design des Roboters. Das Chassis könnte beispielsweise in einer leichten Konstruktion aus Plastik neu entworfen werden. 24

7 Anhang 7.1 Datenblätter CMUCam II Vorder- und Rückseite Abb. 10 Vorder und Rückseite CMUCam II 25

CMUCam II Teileliste Abb. 11 Teileliste CMUCam II 26

CMUCam II Schematischer Aufbau Abb. 12 Schematischer Aufbau CMUCam II 27

CMUCam Schematischer Aufbau Abb. 13 Detailabbildung schematischer Aufbau CMUCam II 28

Datenblatt LCD 29

Datenblatt Kameramodul 30

7.2 Bezugsquellen CMUCam II Hardware http://www.sander-electronic.de/gm00032.html http://www.lextronic.fr/cmucam/pp1e.htm CMUCam II Handbuch und CMUCam2 GUI http://www.cs.cmu.edu/~cmucam/cmucam2/downloads.html LCD http://www.conrad.de Artikelnummer: 187275 BASCOM Entwicklungsumgebung http://www.mcselec.com/ 31

Literatur- und Quellenverzeichnis Müller-Merbach, Mareile, Roboter im Rübenfeld. Wie kleine intelligente Maschinen die Landwirtschaft der Zukunft bestimmen, in: wissenschaft.de, abgerufen im Internet am 01.12.2006 unter: http://www.wissenschaft.de/wissen/hintergrund/257557.html Paulus, Anette, Blecherne Helfer: Care-O-bot holt Saft. Pfiffige Helfer für den Haushalt, in: SpektrumDirekt. Die Wissenschaftszeitung im Internet, abgerufen im Internet am 01.12.2006 unter: http://www.wissenschaftonline.de/abo/ticker/781793 Robotics Institut at the Carnegie Mellon University, CMUCam II Homepage (Handbücher, Java GUI), abgerufen am 01.12.2006 unter: http://www.cs.cmu.edu/~cmucam/ Zeil, Andreas, Roboter Fußball, in: Informatiklexikon der Gesellschaft für Informatik e.v., abgerufen im Internet am 01.12.2006 unter: http://www.giev.de/service/informatiklexikon/informatiklexikon-detailansicht/meldung/72/ 32

Verzeichnis der Abbildungen Abbildung 1: Bildschirmausdruck der Software Vision Command des Herstellers Lego GmbH. Abbildung 2: Bildschirmausdruck der Software HyperTerminal des Herstellers Hilgraee, Inc. Abbildung 3: Eigene Abbildung. Abbildung 4: Auszug aus dem Handbuch der CMUCam II von Anthony Rowe, Carnegie Mellon University, S. 16. Abbildung 5: Bildschirmausdruck der Software CMUCam2 GUI des Herstellers Carnegie Mellon University. Abbildung 6: Bildschirmausdruck der Software CMUCam2 GUI des Herstellers Carnegie Mellon University. Abbildung 7: Bildschirmausdruck der Software CMUCam2 GUI des Herstellers Carnegie Mellon University. Abbildung 8: Eigene Abbildung. Abbildung 9: Eigene Abbildung. Abbildung 10: Auszug aus dem Handbuch der CMUCam II von Anthony Rowe, Carnegie Mellon University, S. 63. Abbildung 11: Auszug aus dem Handbuch der CMUCam II von Anthony Rowe, Carnegie Mellon University, S. 64. Abbildung 12: Auszug aus dem Handbuch der CMUCam II von Anthony Rowe, Carnegie Mellon University, S. 65. Abbildung 13: Auszug aus dem Handbuch der CMUCam II von Anthony Rowe, Carnegie Mellon University, S. 66. 33