Benutzer-Werkzeuge

Webseiten-Werkzeuge


projektesose2016:leonarduino:dokumentation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projektesose2016:leonarduino:dokumentation [2016/08/07 07:20]
julianboell
projektesose2016:leonarduino:dokumentation [2016/08/25 11:06] (aktuell)
fbonowski
Zeile 1: Zeile 1:
 +<note important>​
 +**Abschließende Bewertung Felix**
 +  * Vollständig und qualitativ hochwertig
 +  * Gut verständlich
 +  * Viele ansprechende Bilder
 +
 +**Sehr gut**
 +
 +</​note>​
 +
 +<​note>​
 +**Kommentar Felix:**
 +Insgesamt schon sehr gut und sehr vollständig!
 +
 +Für eine Ausgezeichnete Bewertung wäre es noch schön..
 +  * Ein paar der Berechnungen auch mit Formeln (im Latax Format $a=\frac{b}{c}$) zu erklären
 +  * Messwerte zur Motorsteuerung zu zeigen.
 +
 +</​note>​
 +
 ======= Leonarduino da Vinci Projektdokumentation ======= ======= Leonarduino da Vinci Projektdokumentation =======
  
Zeile 17: Zeile 37:
 {{:​projektesose2016:​leonarduino:​vorne.jpg?​ |}} {{:​projektesose2016:​leonarduino:​vorne.jpg?​ |}}
 {{:​projektesose2016:​leonarduino:​hinten.jpg?​ |}} {{:​projektesose2016:​leonarduino:​hinten.jpg?​ |}}
 +<​note>​
 +**Kommentar Felix:**
  
 +Gute Einleitung und schicke Bilder, die noch mehr zum Verständnis beitragen könnten, wenn darauf die Komponenten markiert und beschriftet wären!
 +
 +</​note>​
 ---- ----
  
 ====Beschreibung von Details der einzelnen Systembestandteile==== ====Beschreibung von Details der einzelnen Systembestandteile====
  
-===Motoransteuerung=== +==Datenaufarbeitung ​und -berechnung==
-Die Motorgruppe hat sich mit dem Ansteuern der Motoren ​und der selbstständigen Nachregelung beschäftigt. +
- +
----- +
- +
-===Programmierung=== +
-Die Programmierung hat sich mit dem Berechnen der Daten, dem Übertragen der Werte auf den Arduino und der Schnittstelle zwischen Motoransteuerung und Datenerzeugung beschäftigt. +
- +
-==Berechnung==+
 Zum einen wurden verschiedene Methoden zur Berechnung von Punkten ausprobiert. Eine Option war das Rastern von Bildern oder Graphen in einzelne “Pixel”,​ die aber vorerst komplett weggelassen wurde. Zum einen wurden verschiedene Methoden zur Berechnung von Punkten ausprobiert. Eine Option war das Rastern von Bildern oder Graphen in einzelne “Pixel”,​ die aber vorerst komplett weggelassen wurde.
  
Zeile 129: Zeile 146:
  
 ==Aufbau und was wir uns dabei gedacht haben== ==Aufbau und was wir uns dabei gedacht haben==
-{{ :​projektesose2016:​leonarduino:​2016-08-07_06_59_29-leonarduino_-_google_praesentationen.png?300 |}}+{{ :​projektesose2016:​leonarduino:​2016-08-07_06_59_29-leonarduino_-_google_praesentationen.png |}}
  
 Ziel der allgemeinen Konstruktion war es einerseits, die physikalischen Belastungen auf unseren Roboter gering zu halten (hauptsächlich das (Massen)trägheitsmoment,​ auch Luiftwiderstand),​ andererseits (und auch daraus folgend) die Gesamtmasse des Systems gering zu halten. Dazu musste beachtet werden, dass allein der volle Farbbehälter mindestens 5 kg wiegt und nahezu 50 cm lang ist, weshalb das Gehäuse durchaus groß wurde und die wirkenden physikalischen Kräfte durchaus betrachtet werden müssen. Hinter der vorliegenden Konstruktion liegen folgende Überlegungen:​ Ziel der allgemeinen Konstruktion war es einerseits, die physikalischen Belastungen auf unseren Roboter gering zu halten (hauptsächlich das (Massen)trägheitsmoment,​ auch Luiftwiderstand),​ andererseits (und auch daraus folgend) die Gesamtmasse des Systems gering zu halten. Dazu musste beachtet werden, dass allein der volle Farbbehälter mindestens 5 kg wiegt und nahezu 50 cm lang ist, weshalb das Gehäuse durchaus groß wurde und die wirkenden physikalischen Kräfte durchaus betrachtet werden müssen. Hinter der vorliegenden Konstruktion liegen folgende Überlegungen:​
Zeile 141: Zeile 158:
  
  
 +====Motoransteuerung und Nachregelung====
 +==Motoransteuerung und Nachregelung==
 +Die Motoransteuerung hat die Aufgabe, die Motoren des Roboters so zu betreiben, dass eine vorgegebene Vektorgrafik mit einer gleichmäßigen Geschwindigkeit abgefahren wird. Dazu ist eine ständige Nachregelung der Motoren nötig:
 +Deren Ziel ist es, dass der Roboter in zeitlich engen Intervallen sein jeweiliges Ziel (Koordinatenpunkt) neu anpeilt, indem er dessen Ort sowie seine eigenen Polarkoorinaten (Ort, Richtung) kennt. So lässt sich vermeiden, dass der Roboter (zB zufällig durch eine Inhomogenität am Boden) seinen Kurs ändert und sich so die Abweichung vom Ziel für jeden angefahren Koordinatenpunkt immer stärker ändert. Dazu ist der an den Motoren angebrachte CPR-Encoder essenziell: Mit diesem lässt sich die jeweilige Geschwindigkeit der Motoren stets bestimmen und dokumentieren. Damit kann einerseits stets auf eine konstante Geschwindigkeit geregelt werden mit der der Roboter fährt (sonst würde zB der Roboter langsamer fahren, wenn er über eine leichte Anhöhung fährt), andereseits lässt sich mit der Kenntnis, wie oft sich die beiden Räder in welche Richtung gedreht haben, die momentane Richtung des Leonarduinos bestimmen. Dieses Schema ist in der nachfolgenden Abbildung skizziert
 +{{ :​projektesose2016:​leonarduino:​encoder_schema.png |}}
 +Der CPR-Encoder besteht im Grunde aus einer mitrotierenden,​ inhomogenen Metallscheibe (diese besitzt eine diskrete Anzahl an Schlitzen) am Motor, deren Umdrehungen von einem Hallsensor erfasst werden. Dadurch kann aus dessen Signal die Anzahl der effektiven Radumdrehungen (also hinter dem Getriebe) in einem Zeitintervall ausgerechnet werden.
 +{{ :​projektesose2016:​leonarduino:​cpr.png |}}
 +In der vorliegenden Abbildung erkennt man hierzu links die Hardware des Encoders und rechts ein effektives Beispielsignal.
 +==Zielanpeilung==
 +Nachfolgend wird schematisch skizziert, wie der Roboter sein Ziel anpeilt, beziehungsweise dementsprechend seine Geschwindigkeit und/oder Rotation ändert. Dazu ist natürlich die Kenntnis seiner eigenen Koordinaten sowie derer des Ziels zwingend erforderlich. Aus seinem eigenen Richtungsvektor (r) und dem Zielvektor (z) (siehe Skizze) wird der Winkel, sowie die orthogonale Projektion gebildet. ​
 +{{ :​projektesose2016:​leonarduino:​anpeilung_schema.png |}}
 +Daraus ergeben sich für den Roboter zwei Geschwindigkeiten:​ Eine Rotationsgeschwindigkeit (v_dreh), mit der sich dieser in dir Richtung des Ziels dreht, sowie eine Vorwärtsgeschwindigkeit (v_vor) mit der in die aktuelle Richtung gefahren wird. die Gesamtgeschwindigkeit ergibt sich aus der Addition der beiden Teilgeschwindigkeiten. v_vor berechnet sich aus dem Zielvektor mal der orthogonalen Projektion des Richtungsvektors darauf, als v_dreh wird der Winkel mal einen orthogonalen Einheitsvektor auf den Richtungsvektor verwendet. Daraus resultiert folgendes Schema: Ist der Richtungsvektor stark vom Zeilvektor verschieden,​ so ist der Winkel dazwischen Groß und die orthogonale Projektion klein, also dreht sich der Roboter schnell, während er langsam nach vorne fährt. Stimmen die Vektoren hingegen nahezu überein, dreht sich der Roboter nur sehr langsam, während er schneller nach vorne fährt.
 ====Ergebnis und Diskussion==== ====Ergebnis und Diskussion====
-Das Ziel von unserem Projekt war es einen Roboter zu bauen welcher Koordinaten übergeben bekommt und einen Schriftzug ​auf den Boden malen kann.  +Das Ziel von unserem Projekt war es einen Roboter zu bauenwelcher ​Vektorgrafiken in Form von Koordinaten übergeben bekommt und diese Grafik flüssiger Farbe auf den Boden sprühen  ​kann. Dies wurde bisher teilweise erreicht: 
-Der Leonarduino kann zu vorgegebenen Punkten ​Fahren ​und sich dabei grob selber ​nachregeln und regulieren.+Der Leonarduino kann die vorgegebenen Punkten ​anpeilen, dorthin fahren ​und seine Geschwindigkeit und Postion ​dabei nachregeln und regulieren. ​Das Gehäuse/ die Konstruktion hierzu ist soweit fertig. Der Sprühmechanismus ist fertig automatisiert und einsatzbereit. 
  
 +Problemfelder bei der Entwicklung des Leonarduinos bestanden in der Übertragung der Koordinaten an den Arduino sowie beim Nachregeln der Position während dem Fahren. Zu Details hierzu, siehe die jeweiligen Unterpunkte der Dokumentation.
 +Dadurch war es bisher noch nicht möglich, ausgiebige Tests und "​Outdoor"​- Erprobungen mit der Leonarduino zu fahren, und diese entsprechend wissenschaftlich zu dokumentieren.
  
-Wo wir mehrere Schwierigkeiten hatten bzw bis zum Ende haben ist die Übertragung der Koordinaten an den Arduino und das Nachregeln beim Fahren. +Der eigentliche,​ makroskopische ​Aufbau des Roboters ​wurde relativ ​zügig ​fertig gestellt. Da wir uns in einzelne Gruppen aufgeteilt hatten, konnten wir von Anfang an auch alle Aufgaben bearbeiten. Wir hatten genügend Zeit mehrere Tests mit dem Sprühgerät durchzuführen und uns eine gute Montage und Ansteuerung auf dem Roboter zu überlegen.
-Den eigentlichen ​Aufbau des Roboters ​haben wir relativ ​schnell ​fertig gestellt. Es gab auch keine besonderen großen Schwierigkeiten oder Probleme bei der Konstruktion zu lösen. Da wir uns in einzelne Gruppen aufgeteilt hatten, konnten wir von Anfang an auch alle Aufgaben bearbeiten. Wir hatten genügend Zeit mehrere Tests mit dem Sprühgerät durchzuführen und uns eine gute Montage und Ansteuerung auf dem Roboter zu überlegen.+
  
 +Insgesamt ist zum Hergang der Roboterentwicklung zu sagen, dass mehr Zeit ins Schreiben und Testen der Software gesteckt werden hätte müssen, als in den Aufbau eines sehr guten Gehäuses. So hätten wir früher die gesteckten Ziele erreichen, und eine Perfektionierung der Konstruktion hinten anstellen können. Es bleibt jedoch zu sagen, dass wir ambitionierte Ziele hatten/​haben,​ und deren Realisierung und Erfüllung innerhalb unserer divergenten Gruppe unter Eigenregie relativ gut funktioniert hat. Auch wurden oft die Themenbereiche und Aufgaben der jeweiligen Gruppenmitglieder geändert, es wurde miteinander gearbeitet, und jeder konnte dort helfen wo sie/er Lust hatte. Dennoch liegt vor allem noch in Schnittstellen,​ zB zwischen Datenübertragung und -verarbeitung Arbeitsbedarf.
 +Auch wenn wir in den nächsten Wochen noch zusammenarbeiten werden und die gesteckten Ziele noch erreichen wollen, denken wir dass wir innerhalb des  Zeitfensters von einem Semester die Möglichkeiten und Potentiale ​ unseres Roboters nicht vollständig ausreizen können. Wir würden uns daher freuen wenn unser Roboter im Zuge des Projektlabors weiterleben würde, und sich zB eine Nachfolgegruppe findet, die diesen weiterentwickelt,​ verbessert und ggf neue Aufgabenbereiche erschließt:​ LET 'EM SPRAY! ​
 ---- ----
 ====Code Dateien==== ====Code Dateien====
projektesose2016/leonarduino/dokumentation.1470547215.txt.gz · Zuletzt geändert: 2016/08/07 07:20 von julianboell