RoLoMa: Unterschied zwischen den Versionen

Aus Callooh Wiki
Zur Navigation springen Zur Suche springen
Micky e (Diskussion | Beiträge)
Micky e (Diskussion | Beiträge)
 
(50 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:
Die oben erwähnte zentrale Einheit wird im weiteren Dokument als „Board“ bezeichnet und der autonome Roboter, aufgrund des gewählten Produkts „[[NIBObee]]“.
Die oben erwähnte zentrale Einheit wird im weiteren Dokument als „Board“ bezeichnet und der autonome Roboter, aufgrund des gewählten Produkts „[[NIBObee]]“.
=== Details ===
=== Details ===
[[File:ExampleMaze.png|thumb|120px|Beispiellabyrinth]]
Das Labyrinth wird eine Matrix mit vordefinierter Größe sein (z.B. 8x8) bei dem die möglichen Wege als schwarze Linie dargestellt sind. Auf dieser Linie wird sich der [[NIBObee]] bewegen. Die Aufgabe des ersten [[NIBObee]] besteht nun darin das gesamt Labyrinth abzufahren und eine Karte zu erstellen.
Das Labyrinth wird eine Matrix mit vordefinierter Größe sein (z.B. 8x8) bei dem die möglichen Wege als schwarze Linie dargestellt sind. Auf dieser Linie wird sich der [[NIBObee]] bewegen. Die Aufgabe des ersten [[NIBObee]] besteht nun darin das gesamt Labyrinth abzufahren und eine Karte zu erstellen.


Beispiellabyrinth: [[Datei:ExampleMaze.png]]
Diese gesammelte Information wird dann an das Board übertragen. Dort wird das Labyrinth auf einer grafischen Ausgabe dargestellt und der Benutzer kann einen beliebigen Zielpunkt für den zweiten [[NIBObee]] festlegen. Der optimale Weg wird berechnet und der zweite [[NIBObee]] über diesen Weg an das definierte Ziel geleitet.


Diese gesammelte Information wird dann an das Board übertragen. Dort wird das Labyrinth auf einer grafischen Ausgabe dargestellt und der Benutzer kann einen beliebigen Zielpunkt für den zweiten [[NIBObee]] festlegen. Der optimale Weg wird berechnet und der zweite [[NIBObee]] über diesen Weg an das definierte Ziel geleitet.
<!-- IMPORTANT: The following line shall be at the end of the "Details" Section to ensure that following section will start in a new line after the image! -->
<br style="clear: both" />


=== Aufgabenteilung ===
=== Aufgabenteilung ===
Zeile 27: Zeile 29:
* Reinhard Weismann
* Reinhard Weismann


== Plattform ==
== Realisierung ==
 
=== Plattformen / Hardware ===
Die Plattformen der Roboter und der Kontrolleinheit sind im Folgenden aufgelistet und stehen (wenn auch teilweise nur als Bausatz) fertig zur Verfügung. Die Hardware der Kommunikationseinrichtung wird im Zuge dieses Projekts erstellt.
Die Plattformen der Roboter und der Kontrolleinheit sind im Folgenden aufgelistet und stehen (wenn auch teilweise nur als Bausatz) fertig zur Verfügung. Die Hardware der Kommunikationseinrichtung wird im Zuge dieses Projekts erstellt.


=== Roboter ===
==== Roboter ====
Der eingesetzte Roboter ist eine [[NIBObee]] von [http://www.nicai-systems.com/de/nibobee.html Nicai-Systems]. Dieser Roboter verfügt über einen Liniensensor der es prinzipiell ermöglicht einer kontrastreichen Linie, vorzugsweise schwarze Linie auf weißem Boden, zu folgen.
Der eingesetzte Roboter ist eine [[NIBObee]] von [http://www.nicai-systems.com/de/nibobee.html Nicai-Systems]. Dieser Roboter verfügt über einen Liniensensor der es prinzipiell ermöglicht einer kontrastreichen Linie, vorzugsweise schwarze Linie auf weißem Boden, zu folgen.


Weitere Dateils können der [[NIBObee]]-Seite entnommen werden.
Weitere Dateils können der [[NIBObee]]-Seite entnommen werden.


=== Kontrolleinheit ===
==== Kontrolleinheit ====
Die Zentrale Kontrolleinheit wird auf dem vom 3. Semester bekannten [[LPC2478]] realisiert.
Die Zentrale Kontrolleinheit wird auf dem vom 3. Semester bekannten [[LPC2478]] realisiert.


== Kommunikation ==
==== Kommunikation ====
Die Kommunikation der [[NIBObee]]-Roboter mit der zentralen Steuerung erfolgt über Bluetooth. Dazu wird über den auf beiden Plattformen bestehenden UART Anschluss ein Modul mit RS232-BT Umsetzung verwendet. Dieser Modul hat einen integrierten BT-Stack so dass er von µC Seite als Serielle Schnittstelle angesprochen werden kann.
Die Kommunikation der [[NIBObee]]-Roboter mit der zentralen Steuerung erfolgt über Bluetooth. Dazu wird über den auf beiden Plattformen bestehenden UART Anschluss ein Modul mit RS232-BT Umsetzung verwendet.  
Die im Folgenden aufgelisteten Module kommen für die Umsetzung in Frage:
Die im Folgenden aufgelisteten Module kommen für die Umsetzung in Frage:
* BTM-112
* BTM-112
* [[BTM-222]]
* [[BTM-222]]
Der Unterschied ist hauptsächlich die Bluetooth-Klasse. In der folgenden Tabelle werden die Unterschiede als Entscheidungsgrundlage dargestellt
Die Entscheidung ist zugunsten des [[BTM-222]] gefallen. Details dazu können der [[BTM-222]]-Seite entnommen werden.
{|class="wikitable"
 
!
=== Software ===
!BTM-112
Details zur Software sind auf den Seiten von [[NIBObee#Software|NIBObee]] und [[LPC2478#Software|LPC2478]] zu finden.
!BTM-222
 
|-
=== Protokolle ===
|Sendeleistung
==== Bluetooth ====
|Max.4dBm (Class2)
Der gesamte Bluetooth Stack ist im [[BTM-222]] realsiert und muss daher im Projekt nicht betrachtet werden.
|Max 18dBm (Class1)
==== [[MaDeCo]] ====
|-
Das projektspezifische Protokol zur Übertragung der Labyrinthdaten nach / bei der Erkundung und dann zu Steuerung durch das Labyrinth ('''Ma'''ze '''De'''tection and '''Co'''ntrol) ist zu definieren.
|Betriebsspannung
 
|3,0 bis 3,6 V
=== Testumgebung ===
|3,0 bis 3,6 V
==== Labyrinth ====
|-
Wie schon in der Angabe zu sehen ist gelten für das Labyrinth einige Annahmen die als Voraussetzungen für die Implementierung festgelegt werden:
|Betriebsstrom
* Es gibt nur gerade Linien
|46mA
* Alle Kreuzungen sind rechtwinkelig
|114mA
* Alle Abstände sind genau ein Vielfaches der kürzesten Verbindung der Mittelpunkte zweier Felder
|}
* Alle (nicht sichtbaren) Felder sind gleich groß
Da wir von der höheren Sendeleistung nur profitieren können, die Module in weiterer Folge auch für andere Zwecke universell einsetzbar sein sollen und die Stromaufnahme als akzeptabel angenommen wurde ist die Entscheidung zugunsten des [[BTM-222]] gefallen.
* Das gesamte Labyrinth entspricht einer Baumstruktur, d.h. es gibt niemals zwei paralelle Wege von einem Punkt zu einem Anderen, also keine geschlossenen Schleifen.
* Da die Steuerung ausschließlich über die Liniensensoren implementiert wird ist die Strecke kollisionsfrei zu halten, d.h. der [[NIBObee]] wird nicht auf Kontakt mit den Fühlern durch Ausweichmanöver reagieren.
 
==== Simulationen ====
Damit ein unabhängiges Testen der einzelnen Teile des Projekts möglich ist werden in einigen Bereichen Simulationen eingesetzt:
* Bluetooth-Verbindung kann mit einem PC und Terminalprogramm getestet werden
* [[MaDeCo]]-Protokoll wird textbasiert entworfen um mit einfachen Textfiles auf beiden Seiten testen zu können


== Projektfortschritt ==
== Projektfortschritt ==
Der Projektfortschritt wird im gleichen Intervall verfolgt in dem die Lehrveranstaltung abgehalten wird
{| class="wikitable"
{| class="wikitable"
|-
|-
!Datum
!Woche
!Block
!Block
!Tätigkeiten / Erkenntnisse
!Tätigkeiten / Erkenntnisse
|-
|-


|rowspan="3"|21.02.2011
|14.02.2011 - 20.02.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
* Projektdefinition: Festlegen des Projektinhalts und grobe Abstimmung der einzelnen beteiligten Komponenten.
* Erstellung eines Dokuments zur Projektbeschreibung
* Erstellen eines Projektplans
<!-- Ende Inhalt Gemeinsam -->
|-
 
|'''21.02.2011'''
|colspan="2"|'''Projekt akzeptiert -> Projektstart'''
|-
 
|rowspan="3"|21.02.2011 - 27.02.2011
|Gemeinsam
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
|<!-- Beginn Inhalt Gemeinsam -->
Zeile 78: Zeile 103:
* Bestelliste für Bluetooth Module erstellt
* Bestelliste für Bluetooth Module erstellt
** Auflistung siehe [[BTM-222#Hardware|BTM-222 Stückliste]]
** Auflistung siehe [[BTM-222#Hardware|BTM-222 Stückliste]]
* Gesamte Hardware bestellt:
** 2 NIBObee - Programmierbarer Roboter-Bausatz
** 5 x [[BTM-222#Hardware|BTM-222 Stückliste]] (3 x für das Nibobee und 2 x für das board) erstellt.
<!-- Ende Inhalt Gemeinsam -->
<!-- Ende Inhalt Gemeinsam -->
|-
|-
Zeile 84: Zeile 112:
* Display Erfahrungsberichte recherchiert.
* Display Erfahrungsberichte recherchiert.
* Grafik Konzept (Blöcke) besprochen
* Grafik Konzept (Blöcke) besprochen
* Beispiel Implementierungen für Touchscreen und Grafik von [[LPC2478|LPC 2478]] gesucht
<!-- Ende Inhalt Board -->
<!-- Ende Inhalt Board -->
|-
|-
Zeile 90: Zeile 119:
* Bestellungen besprochen.
* Bestellungen besprochen.
* nach Bauanleitungen und Datenblätter recherchiert.
* nach Bauanleitungen und Datenblätter recherchiert.
* Printlayout des BT-Modul für NIBObee erstellt
* Recherche der BTM-222 Konfigurationsmöglichkeiten.
* Sammeln offener Punkte, auflisten von Risiken und möglicher Massnahmen
<!-- Ende Inhalt NIBObee -->
|-
|rowspan="3"|28.02.2011 - 06.03.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
* Definition des proprietären Kommunikationsprotokolls [[MaDeCo| MaDeCo ('''Ma'''ze '''De'''tection and '''Co'''ntrol)]]
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* Weitere Analyse für Touchscreen und Grafikausgabe
* Demo Implementierung von Hr. Kramer angefordert und eingelesen
* Sourcen Demo Projekt in Eclipse Ganymed geladen und Debug Optionen ergänzt
* Debuggingversuche, Ursachensuche für fehlende Anzeige
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
* Bestellung eingetroffen. Zusammenbau der Roboter durchgeführt
* Detailabsprache der benötigten Roboterfunktionen
* Analyse der Probleme beim Befahren des Labyrinths und Abbildung auf notwendige Funktionen.
<!-- Ende Inhalt NIBObee -->
|-
|rowspan="3"|07.03.2011 - 13.03.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
* Recherche Ergebnisse besprochen
* Bauteile für Bluetooth Modul sind teilweise nicht optimal (vor allem wegen der Größe). Es werden noch Alternativen gesucht und das Layout und der Bestückungspan wurden geändert.
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* Mehrstündiger Versuch, das Display mit Demo Applikationen zu testen
* daraus resultierende Tests haben ergeben dass das Display defekt war. Das Board wurde gegen ein neues getauscht
* neuerliche Inbetriebnahme mit Demo Applikationen
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
* Installation der Entwicklungsumbegung
* Testen der Beispielprogramme
* Kalibrierung der Liniensensoren
* Erstellen eines Testprogramms für die Liniensensoren um die optimale Linienbreite für das Labyrinth ermitteln zu können (2 cm scheint zu breit, Kontrastwert nicht über 128).
<!-- Ende Inhalt NIBObee -->
|-
|rowspan="3"|14.03.2011 - 20.03.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
* Besprechung der jeweiligen Ergebnisse
* neue Bestückungsliste besprechen und fehlende Teile organisieren
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* weitere Recherche nach lauffähigen Demoapplikationen
* Für speziell dieses Board frustrierend wenige bis keine Ergebnisse
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
* Versuche mit zwei unterschiedlichen Ansätzen des Geradeauslaufs des NIBObee:
** Korrektur mittles Regelkreis unter Berücksichtigung der Odometriesensoren
** Korrektur nur mttels der Werte von den Liniensensoren
* Obwohl der Regelkreis eine Geradeausfahrt auch ohne Linie schafft ist der Start problematisch und daher für unsere Zwecke ungeeignet
<!-- Ende Inhalt NIBObee -->
<!-- Ende Inhalt NIBObee -->
|-
|-


|rowspan="3"|22.02.2011
|rowspan="3"|21.03.2011 - 27.03.2011
|Gemeinsam
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
|<!-- Beginn Inhalt Gemeinsam -->
* Gesamte Hardware bestellt:
* gegenseitiges Update
** 2 NIBObee - Programmierbarer Roboter-Bausatz
* fast alle Bauteile eingetroffen bzw. vorhanden, Ausnahme: Printplatte
** 5 x [[BTM-222#Hardware|BTM-222 Stückliste]] (3 x für das Nibobee und 2 x für das board) erstellt.
** voraussichtlicher Liefertermin der Printplatte kommende Woche
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* vergebliche Versuche, den UART in Betrieb zu nehmen
* gemeinsam mit Hrn. Wenzl nochmals versucht, auch ergebnislos
* Entschluss, das Vorgehen zu ändern
* neues Projekt auf Basis Interrupt Template vom 3. Semester
* Anpassung auf unsere Umgebung
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
* Implementierung gestartet mit folgenden Funktionen:
* Systemtimer mit 100Hz Taktfrequenz
* Statemachine für folgende Module:
** Drive, zuständig für das fahren entlang der Linie des Labyrinths
** Sensor, zuständig für die Fühler. Entprellen und melden von Änderungen.
** Line, zuständig für das erkennen der Linie und melden von Abweichungen
* Scheduler, der alle Module die einen Event bearbeiten müssen aufruft.
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|28.03.2011 - 03.04.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Leiterplatten eingetroffen, Beginn des Aufbaus der Bluetooth Module
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
*neuerliche Recherche nach UART Implementierungen
*Vergleich diverser UART Implementierungen
*Durcharbeiten der Dokumentation
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Implementieren der Linienverfolgung mit den Statemachines
*Neuer Modul für Distanzmessung. Wurde von der Implementierung der Odometrie-Bibliothek abgeleitet.
*Erfolgreiches Ausrichten des NIBObee im Zentrum eines Felds des Labyrinths
*Probleme beim Unterscheiden von Spurabweichung und Kreuzung. Kann mit den vorhandenen Sensoren nicht gelöst werden. Es wird eine Erweiterung des NIBObee geplant.
*Zusätzliche 6 LEDs für Debugzwecke über Erweiterungsports angeschlossen und Ansteuerung implementiert
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|04.04.2011 - 10.04.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Nochmals Bauteile für BT-Modul getauscht da ein leistungfähiger Low-Drop-Out Spannungsregeler verwendet werden soll um auch mit abgesunkener Akkuspannung noch eine konstante Spannung am BTM-222 zu haben.
*Das machte allerdings eine Korrektur an den fertigen Leiterplatten notwendig :-(
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
*IO Konfiguration für UART 1 nicht erfolgreich
*neuerliches Durcharbeiten der Dokumentation
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Fertigstellen des ersten Bluetooth Moduls
*Verbindung von NIBObee mit PC hergestellt
*Neue Funktionen zur Kommunikation. Senden und Empfangen mittels Interrupts implementiert
*Start Implementierung der State Maschine für das MaDeCo Protokoll
*Debug Möglichkeit mittels BT-Verbindung zum PC implementiert
*PC Testapplikation für die Bluetooth Verbindung mit spezieller Unterstützung des MaDeCo Protokolls implementiert.
*Erzeugen von DoxyGen Dokumentation
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|11.04.2011 - 01.05.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
*Design Windows Board GUI
*Implementierung Windows Board GUI
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Überarbeiten des Event-Mechanismus
*Optimieren der Debug-Protokollierung über Bluetooth. Strings belegten zu viel Speicher. Das führte zu undefinierbarem Verhalten wegen Überschreiben von Stack und Daten.
*Erweitern der PC Applikation zum bedienen der NIBObee BT-Schnittstelle. Die optimierte Debug-Ausgabe kann auf Basis von speziellen Kommentaren der NIBObee-Source (debug.h) symbolisch aufbereitet werden.
*Erweiterung mit zusätliche Liniensensoren angefertigt
*Wegen zusätzlicher Liniensensoren neue Applikation zum Kalibrieren der Liniensensoren (jetzt 5 Sück) erstellt.
*Wegen zusätzlicher Liniensensoren ersetzen des original Moduls zum Einlesen der Analogwerte.
*Wegen zusätzlicher Liniensensoren ersetzen des original Moduls zum ermitteln der Werte der Liniensensoren.
*Kreuzungserkennung und Linienverfolgung funktionieren nun parallel, NIBObee fährt kleines Testlabyrinth gezielt ab.
*Waagrechte Ausrichtung des NIBObee korrigiert da der Abstand der Liniensensoren zum Boden von essentieller Bedeutung ist.
*Doxygen Kommentare in Code eingefügt
*Doxygen in Entwicklungsumgebung eingebunden
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|02.05.2011 - 08.05.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* verschiedene UART sourcecodes aus fremden Demoapplikationen versucht auf das board zu portieren
*Ursachenforschung
*Versuch Support Embedded Artists => Support für dieses Board wurde eingestellt
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Tests mit neuen, zusätzlichen Liniensensoren.
*Probleme mit Hardwareausfällen der neuen Erweiterung. Die Phototransistoren reagieren nicht so gut wie erwartet. Ausserdem scheinen sie sehr leicht bei den Lötarbeiten defekt zu werden. Austausch notwendig
*Weitere Optimierungender Debugausgaben notwendig. Zusätzliche Funktionen in Testapplikation implementiert um nicht nur die Testpunkte, sondern auch die unterschiedlichen dezimalen Werte in symbolische Ausgaben umrechnen zu können.
*Fehlerhafte Linienendeerkennung, optimieren des Algorithmus.
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|09.05.2011 - 15.05.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
*Verfeinerung Board GUI
*Debugging Initialisierungsfunktion
*Vergleiche Dokumentation/Schaltpläne/Code für QVGA Baseboard
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Fertigstellen der MaDeCo State Machine für die unterschiedlichen Betriebsmodi und der Kommunikation mit dem drive Modul
*Implementieren der unterschiedlichen Betriebsmodi im drive Modul
*Test des Calibrate Modus zeigt Probleme beim Geradeauslauf nach Linienende, Kalibrierungsvorlage muss überarbeitet werden.
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|16.05.2011 - 22.05.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* Bluetooth Modul Teile erhalten
*Bluetooth Module zusammengebaut
*BT Modul getestet
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Zusätzliche MaDeCo Funktionen für den Testbetrieb
*Erweiterung des MaDeCo Protokolls für einfachere Implementierung
*Überarbeiten der Inlinedokumentation
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|23.05.2011 - 29.05.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
<!-- Ende Inhalt Gemeinsam -->
|-
|Board
|<!-- Beginn Inhalt Board -->
* PLL Initialisierung kontrolliert, marginaler Fehler korrigiert
* UART Initialisierung kontrolliert, nichts gefunden. UART0 Senden OK, UART1 NOK
<!-- Ende Inhalt Board -->
|-
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
*Aktualisieren der Wiki Dokumentation
*Modus Calibration erfolgreich abgeschlossen, EEPROM wird mit korrekten Werten versorgt
*Linienverfolgung funktioniert nicht zufriedenstellend, Analyse aufwendig da beim Fehlersuchen sehr viele Daten der Liniensensoren anfallen, übertragen und ausgewertet müssen. Dabei stossen wir immer wieder an die Leistungsgrenzen des Systems.
<!-- Ende Inhalt NIBObee -->
|-
 
|rowspan="3"|30.05.2011 - 05.06.2011
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
*Statusabgleich
*Funktionsbesprechung Board GUI
<!-- Ende Inhalt Gemeinsam -->
<!-- Ende Inhalt Gemeinsam -->
|-
|-
|Board
|Board
|<!-- Beginn Inhalt Board -->
|<!-- Beginn Inhalt Board -->
* Beispiel Implementierungen für Touchscreen und Grafik von [[LPC2478|LPC 2478]] gesucht
* UART1 Initialisierung auf P3.16 und P3.17 führt zum Erfolg
* Die nötigen UART Funktionen identifiziert und modular implementiert.
* UART Funktionen Interrupt getrieben implementiert
<!-- Ende Inhalt Board -->
<!-- Ende Inhalt Board -->
|-
|-
|NIBObee
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
|<!-- Beginn Inhalt NIBObee -->
*Weiter massive Probleme bei der Linienverfolgung
*Nach Rotation entstehen üblicherweise Positionierungsfehler die sich danach aufschaukeln
*Follow und Drive Modul werden überarbeitet um "weichere" korrektur zu imlpementieren
<!-- Ende Inhalt NIBObee -->
<!-- Ende Inhalt NIBObee -->
|-
|-


|rowspan="3"|<Datum>
|rowspan="3"|06.06.2011 - 19.06.2011
|Gemeinsam
|Gemeinsam
|<!-- Beginn Inhalt Gemeinsam -->
|<!-- Beginn Inhalt Gemeinsam -->
* Live Funktionstest für Bluetooth Modul am Board und interruptgetriebene UART Funktionen
*Kommunikationstest NIBObee - Board
<!-- Ende Inhalt Gemeinsam -->
<!-- Ende Inhalt Gemeinsam -->
|-
|-
|Board
|Board
|<!-- Beginn Inhalt Board -->
|<!-- Beginn Inhalt Board -->
* Interrupt Handler erweitert: signalisiert wenn message komplett (CR) empfangen
* Handling für Sequenz- und Acknowledge-Nummern
* state machine für MaDeCo Protokoll
* Interface zu PC-Applikation
<!-- Ende Inhalt Board -->
<!-- Ende Inhalt Board -->
|-
|-
|NIBObee
|NIBObee
|<!-- Beginn Inhalt NIBObee -->
|<!-- Beginn Inhalt NIBObee -->
*Überarbeiten des Scheduling um Linienverfolgung mit mehr Priorität zu versehen
*Weitere Überarbeitung der Linienerkennung
*Verbesserung der Schnittstelle zum Board (ACK strikt nach Protokoll, keine unnötigen Ausgaben)
*Korrigieren des problematischen Verhaltens wegen der Meldungen des BTM-222 in der Initialisierungsphase
<!-- Ende Inhalt NIBObee -->
<!-- Ende Inhalt NIBObee -->
|-
|'''20.06.2011'''
|colspan="2"|'''Projekt präsentiert -> Projektende'''
|-
|-



Aktuelle Version vom 26. Juni 2011, 15:40 Uhr

RoLoMa ist der, vielleicht wenig einfallsreiche, Name des ESE-Projekts im 4. Semester. Es ist die Abkürzung für "Robots Lost in Maze".

Projektbeschreibung

Aufgabe

Bei diesem Projekt soll ein autonomer Roboter ein Labyrinth analysieren, alle vorhandenen Abzweigungen protokollieren und diese Daten an eine zentrale Einheit senden. Die zentrale Einheit soll einen zweiten autonomen Roboter mit diesen Daten auf dem berechneten kürzesten Weg durch das Labyrinth lotsen können. Dazu muss eine Kommunikation zwischen dem Roboter und der zentralen Einheit hergestellt werden. Die oben erwähnte zentrale Einheit wird im weiteren Dokument als „Board“ bezeichnet und der autonome Roboter, aufgrund des gewählten Produkts „NIBObee“.

Details

Beispiellabyrinth

Das Labyrinth wird eine Matrix mit vordefinierter Größe sein (z.B. 8x8) bei dem die möglichen Wege als schwarze Linie dargestellt sind. Auf dieser Linie wird sich der NIBObee bewegen. Die Aufgabe des ersten NIBObee besteht nun darin das gesamt Labyrinth abzufahren und eine Karte zu erstellen.

Diese gesammelte Information wird dann an das Board übertragen. Dort wird das Labyrinth auf einer grafischen Ausgabe dargestellt und der Benutzer kann einen beliebigen Zielpunkt für den zweiten NIBObee festlegen. Der optimale Weg wird berechnet und der zweite NIBObee über diesen Weg an das definierte Ziel geleitet.


Aufgabenteilung

An dem Projekt sind zwei Gruppen beteiligt, eine die sich um die Roboter kümmert (Gruppe NIBObee), eine zweite die die Implementierung der zentralen Einheit (Gruppe Board) vornimmt. Gemeinsam muss die Übertragungstechnik (Hardware und Protokoll) erarbeitet werden. Die Implementierung kann dann getrennt erfolgen und am Ende des Projekts ist eine gemeinsame Testphase notwendig.

Da noch einige Festlegungen bezüglich der verwendeten Hardware und der Übertragungstechnik ausständig sind können sich im Zuge des weiteren Projektfortschritts durchaus noch Änderungen ergeben. Für alle kritischen Elemente wird so früh wie möglich auch eine alternative Lösung als Fallback vorgesehen. Das ist notwendig für den Fall, dass sich für ein Problem keine, zumindest im Rahmen dieses Semesters, realisierbare Implementierung ergibt.

Team Board

Teammitglieder dieser Gruppe sind:

  • Michaela Escuyer
  • Thomas Neuber
  • Robert Pavljuk

Team NIBObee

Teammitglieder dieser Gruppe sind:

  • Robert Peterfi
  • Alois Pochmann
  • Reinhard Weismann

Realisierung

Plattformen / Hardware

Die Plattformen der Roboter und der Kontrolleinheit sind im Folgenden aufgelistet und stehen (wenn auch teilweise nur als Bausatz) fertig zur Verfügung. Die Hardware der Kommunikationseinrichtung wird im Zuge dieses Projekts erstellt.

Roboter

Der eingesetzte Roboter ist eine NIBObee von Nicai-Systems. Dieser Roboter verfügt über einen Liniensensor der es prinzipiell ermöglicht einer kontrastreichen Linie, vorzugsweise schwarze Linie auf weißem Boden, zu folgen.

Weitere Dateils können der NIBObee-Seite entnommen werden.

Kontrolleinheit

Die Zentrale Kontrolleinheit wird auf dem vom 3. Semester bekannten LPC2478 realisiert.

Kommunikation

Die Kommunikation der NIBObee-Roboter mit der zentralen Steuerung erfolgt über Bluetooth. Dazu wird über den auf beiden Plattformen bestehenden UART Anschluss ein Modul mit RS232-BT Umsetzung verwendet. Die im Folgenden aufgelisteten Module kommen für die Umsetzung in Frage:

Die Entscheidung ist zugunsten des BTM-222 gefallen. Details dazu können der BTM-222-Seite entnommen werden.

Software

Details zur Software sind auf den Seiten von NIBObee und LPC2478 zu finden.

Protokolle

Bluetooth

Der gesamte Bluetooth Stack ist im BTM-222 realsiert und muss daher im Projekt nicht betrachtet werden.

Das projektspezifische Protokol zur Übertragung der Labyrinthdaten nach / bei der Erkundung und dann zu Steuerung durch das Labyrinth (Maze Detection and Control) ist zu definieren.

Testumgebung

Labyrinth

Wie schon in der Angabe zu sehen ist gelten für das Labyrinth einige Annahmen die als Voraussetzungen für die Implementierung festgelegt werden:

  • Es gibt nur gerade Linien
  • Alle Kreuzungen sind rechtwinkelig
  • Alle Abstände sind genau ein Vielfaches der kürzesten Verbindung der Mittelpunkte zweier Felder
  • Alle (nicht sichtbaren) Felder sind gleich groß
  • Das gesamte Labyrinth entspricht einer Baumstruktur, d.h. es gibt niemals zwei paralelle Wege von einem Punkt zu einem Anderen, also keine geschlossenen Schleifen.
  • Da die Steuerung ausschließlich über die Liniensensoren implementiert wird ist die Strecke kollisionsfrei zu halten, d.h. der NIBObee wird nicht auf Kontakt mit den Fühlern durch Ausweichmanöver reagieren.

Simulationen

Damit ein unabhängiges Testen der einzelnen Teile des Projekts möglich ist werden in einigen Bereichen Simulationen eingesetzt:

  • Bluetooth-Verbindung kann mit einem PC und Terminalprogramm getestet werden
  • MaDeCo-Protokoll wird textbasiert entworfen um mit einfachen Textfiles auf beiden Seiten testen zu können

Projektfortschritt

Der Projektfortschritt wird im gleichen Intervall verfolgt in dem die Lehrveranstaltung abgehalten wird

Woche Block Tätigkeiten / Erkenntnisse
14.02.2011 - 20.02.2011 Gemeinsam
  • Projektdefinition: Festlegen des Projektinhalts und grobe Abstimmung der einzelnen beteiligten Komponenten.
  • Erstellung eines Dokuments zur Projektbeschreibung
  • Erstellen eines Projektplans
21.02.2011 Projekt akzeptiert -> Projektstart
21.02.2011 - 27.02.2011 Gemeinsam
  • Bestellungen besprochen.
  • Wiki eingerichtet.
  • Bestelliste für Bluetooth Module erstellt
  • Gesamte Hardware bestellt:
    • 2 NIBObee - Programmierbarer Roboter-Bausatz
    • 5 x BTM-222 Stückliste (3 x für das Nibobee und 2 x für das board) erstellt.
Board
  • Display Erfahrungsberichte recherchiert.
  • Grafik Konzept (Blöcke) besprochen
  • Beispiel Implementierungen für Touchscreen und Grafik von LPC 2478 gesucht
NIBObee
  • Bestellungen besprochen.
  • nach Bauanleitungen und Datenblätter recherchiert.
  • Printlayout des BT-Modul für NIBObee erstellt
  • Recherche der BTM-222 Konfigurationsmöglichkeiten.
  • Sammeln offener Punkte, auflisten von Risiken und möglicher Massnahmen
28.02.2011 - 06.03.2011 Gemeinsam
Board
  • Weitere Analyse für Touchscreen und Grafikausgabe
  • Demo Implementierung von Hr. Kramer angefordert und eingelesen
  • Sourcen Demo Projekt in Eclipse Ganymed geladen und Debug Optionen ergänzt
  • Debuggingversuche, Ursachensuche für fehlende Anzeige
NIBObee
  • Bestellung eingetroffen. Zusammenbau der Roboter durchgeführt
  • Detailabsprache der benötigten Roboterfunktionen
  • Analyse der Probleme beim Befahren des Labyrinths und Abbildung auf notwendige Funktionen.
07.03.2011 - 13.03.2011 Gemeinsam
  • Recherche Ergebnisse besprochen
  • Bauteile für Bluetooth Modul sind teilweise nicht optimal (vor allem wegen der Größe). Es werden noch Alternativen gesucht und das Layout und der Bestückungspan wurden geändert.
Board
  • Mehrstündiger Versuch, das Display mit Demo Applikationen zu testen
  • daraus resultierende Tests haben ergeben dass das Display defekt war. Das Board wurde gegen ein neues getauscht
  • neuerliche Inbetriebnahme mit Demo Applikationen
NIBObee
  • Installation der Entwicklungsumbegung
  • Testen der Beispielprogramme
  • Kalibrierung der Liniensensoren
  • Erstellen eines Testprogramms für die Liniensensoren um die optimale Linienbreite für das Labyrinth ermitteln zu können (2 cm scheint zu breit, Kontrastwert nicht über 128).
14.03.2011 - 20.03.2011 Gemeinsam
  • Besprechung der jeweiligen Ergebnisse
  • neue Bestückungsliste besprechen und fehlende Teile organisieren
Board
  • weitere Recherche nach lauffähigen Demoapplikationen
  • Für speziell dieses Board frustrierend wenige bis keine Ergebnisse
NIBObee
  • Versuche mit zwei unterschiedlichen Ansätzen des Geradeauslaufs des NIBObee:
    • Korrektur mittles Regelkreis unter Berücksichtigung der Odometriesensoren
    • Korrektur nur mttels der Werte von den Liniensensoren
  • Obwohl der Regelkreis eine Geradeausfahrt auch ohne Linie schafft ist der Start problematisch und daher für unsere Zwecke ungeeignet
21.03.2011 - 27.03.2011 Gemeinsam
  • gegenseitiges Update
  • fast alle Bauteile eingetroffen bzw. vorhanden, Ausnahme: Printplatte
    • voraussichtlicher Liefertermin der Printplatte kommende Woche
Board
  • vergebliche Versuche, den UART in Betrieb zu nehmen
  • gemeinsam mit Hrn. Wenzl nochmals versucht, auch ergebnislos
  • Entschluss, das Vorgehen zu ändern
  • neues Projekt auf Basis Interrupt Template vom 3. Semester
  • Anpassung auf unsere Umgebung
NIBObee
  • Implementierung gestartet mit folgenden Funktionen:
  • Systemtimer mit 100Hz Taktfrequenz
  • Statemachine für folgende Module:
    • Drive, zuständig für das fahren entlang der Linie des Labyrinths
    • Sensor, zuständig für die Fühler. Entprellen und melden von Änderungen.
    • Line, zuständig für das erkennen der Linie und melden von Abweichungen
  • Scheduler, der alle Module die einen Event bearbeiten müssen aufruft.
28.03.2011 - 03.04.2011 Gemeinsam
  • Leiterplatten eingetroffen, Beginn des Aufbaus der Bluetooth Module
Board
  • neuerliche Recherche nach UART Implementierungen
  • Vergleich diverser UART Implementierungen
  • Durcharbeiten der Dokumentation
NIBObee
  • Implementieren der Linienverfolgung mit den Statemachines
  • Neuer Modul für Distanzmessung. Wurde von der Implementierung der Odometrie-Bibliothek abgeleitet.
  • Erfolgreiches Ausrichten des NIBObee im Zentrum eines Felds des Labyrinths
  • Probleme beim Unterscheiden von Spurabweichung und Kreuzung. Kann mit den vorhandenen Sensoren nicht gelöst werden. Es wird eine Erweiterung des NIBObee geplant.
  • Zusätzliche 6 LEDs für Debugzwecke über Erweiterungsports angeschlossen und Ansteuerung implementiert
04.04.2011 - 10.04.2011 Gemeinsam
  • Nochmals Bauteile für BT-Modul getauscht da ein leistungfähiger Low-Drop-Out Spannungsregeler verwendet werden soll um auch mit abgesunkener Akkuspannung noch eine konstante Spannung am BTM-222 zu haben.
  • Das machte allerdings eine Korrektur an den fertigen Leiterplatten notwendig :-(
Board
  • IO Konfiguration für UART 1 nicht erfolgreich
  • neuerliches Durcharbeiten der Dokumentation
NIBObee
  • Fertigstellen des ersten Bluetooth Moduls
  • Verbindung von NIBObee mit PC hergestellt
  • Neue Funktionen zur Kommunikation. Senden und Empfangen mittels Interrupts implementiert
  • Start Implementierung der State Maschine für das MaDeCo Protokoll
  • Debug Möglichkeit mittels BT-Verbindung zum PC implementiert
  • PC Testapplikation für die Bluetooth Verbindung mit spezieller Unterstützung des MaDeCo Protokolls implementiert.
  • Erzeugen von DoxyGen Dokumentation
11.04.2011 - 01.05.2011 Gemeinsam
  • Statusabgleich
Board
  • Design Windows Board GUI
  • Implementierung Windows Board GUI
NIBObee
  • Überarbeiten des Event-Mechanismus
  • Optimieren der Debug-Protokollierung über Bluetooth. Strings belegten zu viel Speicher. Das führte zu undefinierbarem Verhalten wegen Überschreiben von Stack und Daten.
  • Erweitern der PC Applikation zum bedienen der NIBObee BT-Schnittstelle. Die optimierte Debug-Ausgabe kann auf Basis von speziellen Kommentaren der NIBObee-Source (debug.h) symbolisch aufbereitet werden.
  • Erweiterung mit zusätliche Liniensensoren angefertigt
  • Wegen zusätzlicher Liniensensoren neue Applikation zum Kalibrieren der Liniensensoren (jetzt 5 Sück) erstellt.
  • Wegen zusätzlicher Liniensensoren ersetzen des original Moduls zum Einlesen der Analogwerte.
  • Wegen zusätzlicher Liniensensoren ersetzen des original Moduls zum ermitteln der Werte der Liniensensoren.
  • Kreuzungserkennung und Linienverfolgung funktionieren nun parallel, NIBObee fährt kleines Testlabyrinth gezielt ab.
  • Waagrechte Ausrichtung des NIBObee korrigiert da der Abstand der Liniensensoren zum Boden von essentieller Bedeutung ist.
  • Doxygen Kommentare in Code eingefügt
  • Doxygen in Entwicklungsumgebung eingebunden
02.05.2011 - 08.05.2011 Gemeinsam
  • Statusabgleich
Board
  • verschiedene UART sourcecodes aus fremden Demoapplikationen versucht auf das board zu portieren
  • Ursachenforschung
  • Versuch Support Embedded Artists => Support für dieses Board wurde eingestellt
NIBObee
  • Tests mit neuen, zusätzlichen Liniensensoren.
  • Probleme mit Hardwareausfällen der neuen Erweiterung. Die Phototransistoren reagieren nicht so gut wie erwartet. Ausserdem scheinen sie sehr leicht bei den Lötarbeiten defekt zu werden. Austausch notwendig
  • Weitere Optimierungender Debugausgaben notwendig. Zusätzliche Funktionen in Testapplikation implementiert um nicht nur die Testpunkte, sondern auch die unterschiedlichen dezimalen Werte in symbolische Ausgaben umrechnen zu können.
  • Fehlerhafte Linienendeerkennung, optimieren des Algorithmus.
09.05.2011 - 15.05.2011 Gemeinsam
  • Statusabgleich
Board
  • Verfeinerung Board GUI
  • Debugging Initialisierungsfunktion
  • Vergleiche Dokumentation/Schaltpläne/Code für QVGA Baseboard
NIBObee
  • Fertigstellen der MaDeCo State Machine für die unterschiedlichen Betriebsmodi und der Kommunikation mit dem drive Modul
  • Implementieren der unterschiedlichen Betriebsmodi im drive Modul
  • Test des Calibrate Modus zeigt Probleme beim Geradeauslauf nach Linienende, Kalibrierungsvorlage muss überarbeitet werden.
16.05.2011 - 22.05.2011 Gemeinsam
  • Statusabgleich
Board
  • Bluetooth Modul Teile erhalten
  • Bluetooth Module zusammengebaut
  • BT Modul getestet
NIBObee
  • Zusätzliche MaDeCo Funktionen für den Testbetrieb
  • Erweiterung des MaDeCo Protokolls für einfachere Implementierung
  • Überarbeiten der Inlinedokumentation
23.05.2011 - 29.05.2011 Gemeinsam
  • Statusabgleich
Board
  • PLL Initialisierung kontrolliert, marginaler Fehler korrigiert
  • UART Initialisierung kontrolliert, nichts gefunden. UART0 Senden OK, UART1 NOK
NIBObee
  • Aktualisieren der Wiki Dokumentation
  • Modus Calibration erfolgreich abgeschlossen, EEPROM wird mit korrekten Werten versorgt
  • Linienverfolgung funktioniert nicht zufriedenstellend, Analyse aufwendig da beim Fehlersuchen sehr viele Daten der Liniensensoren anfallen, übertragen und ausgewertet müssen. Dabei stossen wir immer wieder an die Leistungsgrenzen des Systems.
30.05.2011 - 05.06.2011 Gemeinsam
  • Statusabgleich
  • Funktionsbesprechung Board GUI
Board
  • UART1 Initialisierung auf P3.16 und P3.17 führt zum Erfolg
  • Die nötigen UART Funktionen identifiziert und modular implementiert.
  • UART Funktionen Interrupt getrieben implementiert
NIBObee
  • Weiter massive Probleme bei der Linienverfolgung
  • Nach Rotation entstehen üblicherweise Positionierungsfehler die sich danach aufschaukeln
  • Follow und Drive Modul werden überarbeitet um "weichere" korrektur zu imlpementieren
06.06.2011 - 19.06.2011 Gemeinsam
  • Live Funktionstest für Bluetooth Modul am Board und interruptgetriebene UART Funktionen
  • Kommunikationstest NIBObee - Board
Board
  • Interrupt Handler erweitert: signalisiert wenn message komplett (CR) empfangen
  • Handling für Sequenz- und Acknowledge-Nummern
  • state machine für MaDeCo Protokoll
  • Interface zu PC-Applikation
NIBObee
  • Überarbeiten des Scheduling um Linienverfolgung mit mehr Priorität zu versehen
  • Weitere Überarbeitung der Linienerkennung
  • Verbesserung der Schnittstelle zum Board (ACK strikt nach Protokoll, keine unnötigen Ausgaben)
  • Korrigieren des problematischen Verhaltens wegen der Meldungen des BTM-222 in der Initialisierungsphase
20.06.2011 Projekt präsentiert -> Projektende