Dies ist eine alte Version des Dokuments!
projektesose2016:robboard:doku
RoBoard ist ein Roboter, der in erster Linie die Tafel wischt. Er soll sich zu dem vom Benutzer angegebenen Bereich bewegen und in diesem vorhandene Schrift entfernen. Eventuell soll er auch noch schreiben können.
Er MUSS sich auf der Tafel positionieren und zum gewünschten Breich hin bewegen und die Tafel wischen können. Er SOLL die Schrift möglichst gründlich entfernen und auch nur genau den angegebenen Bereich säubern. Wenn diese Teile funktionieren, wäre es NETT, den Roboter schreiben zu lassen und die Arbeit mit dem Kamerabild möglichst benutzerfreundlich zu gestalten, z.B. durch Markierung des zu wischenden Ausschitts statt durch Eingabe der exakten Koordinaten. Bewusst VERZICHTEN wir auf die Steuerung des Stifts durch einen beweglichen Arm und auf die Nutzung von einer Sprühflasche, die die Nutzung auf einer Kreidetafel vereinfacht hätte.
RoBoard
Dazu gehört sich die physikalischen und mathematischen Grundlagen zu erarbeiten und eine Materialiste zu erstellen. Das wird auch im Verlauf der weiteren eine Rolle spielen, da immer wieder neue Problemstellungen auftauchen werden. Hierzu werden wir sowohl das Internet als auch Bücher und Fachzeitschriften zu Rate ziehen. Zu Problemen könnten fehlerhafte Quellen und Berechnungen führen.
Auf der fahrenden Plattform wird die Halterung für den Schwamm befestigt sein. Außerdem ein W- LAN Modul und eventuell ein Stift in der Mitte. Fortbewegt werden soll es mittels drei Räder samt Motoren. Der Roboter soll in der Lage sein, sich an der Tafel in alle Richtungen zu bewegen.
Wir werden uns hierfür näher mit dem Drehmoment beschäftigen müssen, um die für den Motor benötigte Kraft berechnen zu können. Außerdem werden wir uns mit den Möglichkeiten zur Datenübertragung beschäftigen.
Risiken bestehen bei der Berechnung des Drehmoments, weil von der Korrektheit des Ergebnisses die spätere Funktionsfähigkeit des Roboters abhängt. Sonst könnte es passieren, dass es nicht möglich ist vertikal die Tafel hinunter zu fahren.
Der Schwamm soll beweglich gelagert sein, so dass man den Schwamm nach oben von der Tafel weg klappen kann. Hierdurch soll es möglich sein, den Roboter über die Tafel zu bewegen, ohne sie dabei zu wischen. Die Halterung soll deswegen mit einem Motor an der Plattform befestigt sein.
Wir werden zu den Möglichkeiten für Motoren der Halterung recherchieren. Hierbei ist die benötigte Kraft um den Schwamm in der Luft zu halten und ihm ihn fest auf die Tafel zu drücken zu berücksichtigen.
Ein Risiko könnte sein, dass der Schwamm nicht fest genug auf die Tafel gedrückt wird, um sie gründlich zu reinigen, weil der Motor der Halterung nicht stark genug ist.
Die Tafel soll durch eine fest installierte Kamera aufgenommen werden. Die Übertragung der Bilder der Kamera auf den Rechner soll wenn möglich ebenfalls über W- LAN erfolgen. Für die Auswertung der Daten u.ä. siehe „Bildauswertung“.
Verknüpfung der Kamera mit dem Rechner
In diesem Abschnitt geht es darum, wie die durch die Kamera aufgenommenen Bilder ausgewertet werden. Das Bild soll den Roboter (für den Nutzer auf dem Rechner sichtbar) innerhalb des Systems lokalisieren.
Das Kamerabild soll mit einem Koordinatensystem verknüpft werden und so die genaue Position aus den übermittelten Daten bestimmt werden. Die Position des Roboters soll für den Nutzer klar erkennbar sein, deswegen soll das Koordinatensystem auch auf dem Bildschirm sichtbar sein.
Wir werden Wissen über die Verarbeitung von Bilddaten auf dem Rechner benötigen. Außerdem, wie wir ein Koordinatensystem erstellen und die gemessenen Daten darin einfügen können.
Risiken bestehen hierbei in einer ungenauen Justierung der Kamera, die zu fehlerhaften Daten führen könnte. Außerdem in einer fehlerhaften Einordnung der Koordinaten.
Das Programm sucht den vom Nutzer angegebenen Bereich nach Schrift ab. Falls diese vorhanden ist, geht es in den nächsten Schritt der Datenverarbeitung.
Wir müssten noch herausfinden, wie das Programm Schrift erkennen kann.
Flecken oder Spiegelungen könnten fälschlicherweise als Schrift erkannt werden und dann wird dort ungewollt gewischt. Das könnte mit einer hohen Wahrscheinlichkeit auftreten. Beziehungsweise könnte die Schrift auch zu undeutlich vom Hintergrund hervorstechen, sodass sie nicht erkannt wird und nicht gewischt wird. Wir müssten also immer auf einen sauberen Hintergrund achten und den Kontrast zwischen Tafel und Schrift hoch halten (z.B. Beleuchtung).
Der Bereich in dem gewischt werden soll, soll durch die manuelle Eingabe der Koordinaten (bzw. falls möglich durch Markierung des Bereichs im Koordinatensystem auf dem PC) angegeben werden. Damit der RoBoard weiß, wo er hinfahren und nach Schrift suchen muss.
Wie man das mit dem Markieren im Koordinatensystem macht
Die Koordinaten könnten falsch abgelesen und daraufhin falsch eingegeben werden. Dies ist eher wahrscheinlich, wenn man unkonzentriert arbeitet. Wenn man sich Mühe gibt und die Koordinaten richtig eingibt, dürfte nichts schief gehen. RoBoard würde bei einer falschen Eingabe zu einer anderen Stelle fahren, dort nach Schrift suchen und diese gegebenenfalls wegwischen, auch wenn dies nicht gewünscht war. Wenn die Dateneingabe nicht funktionieren sollte, könnte man den RoBoard so vereinfachen, dass er immer die gesamte Tafel nach Schrift absucht und wischt.
In der Datenauswertung werden die, durch Bildauswertung und Eingabe des Nutzers, gesammelten Daten zur Berechnung der Aufgaben des Roboters verwendet. Die beinhaltet insbesondere die Berechnung seines Weges auf Grund seiner aktuellen Position und seines Zieles mitsamt des Wissend, wann der Schwamm gesenkt oder gehoben werden muss.
Wichtig ist hierbei den möglichst kürzesten Weg zum Abfahren einer Fläche zu finden. Dabei muss aus gegebenen Randkoordinaten ein Rechteck abgefahren werden.
Falls bei der Berechnung Fehler vorkommen, könnte es passieren, dass unser Roboter versucht über den Rand der Tafel hinauszufahren und dabei abstürzt.
Dieser Teilbereich beinhaltet sowohl die Kommunikation, also Datenübertragung, zwischen Rechner und Arduino, als ach die Kommunikation zwischen Kamera und Rechner. Hierbei muss die Datenübertragung zum und vom Arduino drahtlos erfolgen. Für die Kamera wäre eine drahtlose Übertragung optimal, um unabhängig von der Position der Kamera den Rechner aufbauen zu können. Die zu Übertragenden Daten sind bei der Kamera das Bild in Echtzeit, und bei dem Arduino der berechnete Weg.
Hierfür benötigen wir das Wissen, wie der Arduino über ein Wlan-Modul angesprochen werden kann. Dies muss dann in unser Eingabeprogramm eingebunden werden. Das gleiche gilt bei der Kamera, wobei in diesem Fall hauptsächlich Daten empfangen werden müssen.
Wenn die Kommunikation nicht funktionieren sollte, dabei ist es egal auf welcher Teilstrecke, kann entweder der Weg nicht berechnet werden oder der Weg nicht übertragen werden. In beiden Fällen würde es zum Stillstand unseres Roboters führen
Die Ansteuerung beinhaltet die eigentliche mechanische Arbeit des Roboters. Hier werden die einzelnen Motoren gesteuert. Da gibt es zwei Motoren für die Räder, welche dann für eine Drehung entgegengesetzt gedreht werden müssen und für eine Bewegung entlang einer Geraden gleichgerichtet. Wenn möglich wollen für diesen Teil Schrittmotoren verwenden -falls diese stark genug sind- , da die Steuerung dadurch leichter zu realisieren wäre. Dazu kommt der Motor für die Absenkung des Schwammes und vielleicht auch einer für die Absenkung eines Stiftes.
Wichtig ist hier herauszufinden, wie genau man mit den Motoren Drehungen vollziehen und Entfernungen abfahren kann. Dazu muss für den Servo die richtige Position gefunden werden, damit der Schwamm fest genug auf der Tafel aufliegt um zu wischen, aber nicht zu fest, um den Roboter nicht von der Tafel weg zustoßen.
Falls die Schrittmotoren zu ungenau sind und wir zu nah an der Kante versuchen zu wischen, könnte es passieren, dass der Roboter den Tafelbereich verlässt und zu Boden stürzt. Sollte der Servo den Schwamm zu schwach an die Tafel drücken, könnte selbige nicht mehr vollständig gereingt werden. Ist der Druck jedoch zu groß, könnte der Roboter in die Tiefe stürzen.