====== Mobile Roboterplattform ====== Der mobile Roboter ist eine der populärsten Robotorkonstruktionen. Sehr verbreitet sind Sumoroboter, Sportroboter (Fußball, Volleyball usw.), Roboter die Rettungsoperationen simulieren (Feuerbekämpfung, Personen- oder Objektsuche) und viele andere. Es gibt auf der ganzen Welt und in Estland diverse Wettbewerbe für diese Art Roboter, es wurden sogar Standardklassen entwickelt (z. B. Sumoroboter). Alle diese Robotor nutzen eine mobile Plattform, welche zwar zum Teil unterschiedlich konstruiert ist oder andere Eigenschaften besitzt, deren Grundfunktion aber stets die gleiche ist. Diese umfasst die Steuerung von Motoren und einfacher Navigation, inklusive dem Ausweichen vor Objekten und der Bewegung zu einem festgelegten Punkt. Gewöhnlich wird der Hauptfunktion eine spezifische Funktion hinzugefügt, die auf die Voraussetzungen und Möglichkeiten des Projekts abgestimmt ist. Nachfolgend werden eine Dokumentation eines typischen Projekts für eine mobile Roboterplattform sowie die verschiedenen Projektphasen dargestellt. ===== Ursprüngliche Aufgabe ===== Planen und konstruieren Sie eine multifunktionale mobile Roboterplattform mit einfacher Navigationsfunktion unter der Verwendung von HomeLab Komponenten. Die Roboterplattform muss eine einfach zu ändernde operationale Funktion besitzen, wenn sie mit verschiedenen Gadgets ausgerüstet wird: * Manipulator * Radar * Kamera Der Roboter muss sich in geschlossenen Räumen auf flachen Böden bewegen können. ==== Voraussetzungen ==== * Maximale Abmessung: 20 cm x 20 cm x 20 cm * maximales Gewicht: 2 kg * Höchstgeschwindigkeit: 0,2 m/s * volle Selbstständigkeit ==== Einschränkung ==== * Muss überwiegend aus HomeLab Komponenten bestehen * Kostengrenze: 10000 EEK (~630€) ===== Grundlegendes Modell des Systems ===== Das grundlegende Modell des System wird mit einem Blockdiagramm dargestellt. Es beschreibt die Struktur, das Verhalten und andere wichtige Aspekte des Systems. Als Beispiel ist nachfolgend das hierarchische Modell des System abgebildet. [{{ :examples:projects:robot:robot_blokk_diagramm.png?500 |Model der Systemstruktur}}] ===== Designlösungen ===== Für diese Aufgabe hat das Team eine Brainstorming-Methode verwendet und drei vom Konzept völlig unterschiedliche Vorschläge erstellt. Es wurde eine Evaluationsmatrix erstellt und so die optimale Konstruktion gefunden. Der größte Unterschied der drei Lösungen liegt im Bewegungsschema. [{{ :examples:projects:robot:robot_ideekavandid.png?500 |Designlösungen}}] Vereinfachte Evaluationsmatrix: ^ Funktion/Lösung ^ I ^ II ^ III ^ Gewichtungsfaktor ^ |Kosten | 3 | 4 | 6 | 0,8 | |Komplexität im Bau | 2 | 4 | 7 | 0,7 | |Beweglichkeit | 4 | 8 | 8 | 0,5 | |Permittivität | 5 | 8 | 2 | 0,3 | |Anwendbarkeit in Homelab | 5 | 4 | 5 | 0,9 | |Gewicht | 5 | 6 | 7 | 0,8 | ^Total (mit Gewichtungsfaktor) ^ 19^27^ 28^ ^ Die Evaluationsskala umfasst Werte von 1 bis 10 und der Gewichtungsfaktor liegt zwischen 0 und 1. Der Gewichtungsfaktor wird nach den Anforderungen und Einschränkungen des Systems ausgewählt. So ist beispielsweise Lösung 2 beweglicher auf unebenen Boden, dieses war jedoch nicht in der ursprünglichen Aufgabe gefordert, daher ist der Gewichtungsfaktor niedrig. Basierend auf der Auswertung, ist die optimale Lösung für die gestellte Aufgabe eine Plattform auf zwei Rädern mit zwei separaten Motoren. Die weitere Arbeit besteht in der Entwicklung der gewählten Lösung in ein reales System. ===== Mechanik ===== Die Mechanik wurde so einfach wie möglich gehalten, wobei dem Prinzip der Modularität gefolgt wurde. Front- und Heckstossstange sind identische Module. Die Elektronik beseteht aus drei Modulen, welche übereinander platziert werden und mit einfachen Flachbandkabeln verbunden werden. Darüber hinaus wird so sicher gestellt, dass die Module relativ einfach ausgewechselt werden können. Die Motoren entstammen dem HomeLab kit: Motoren mit einem integrierten Drehzahlminderer und Coder, welche direkt mit den Antrieb des Motors verbunden sind. Es wurden Modellflugzeugräder benutzt, da diese sehr leicht und robust sind. Um die Konstruktion zu vereinfachen sind Boden und Dachplatte identisch. Die Platten haben Löcher, damit unterschiedliche Geräte an der Dachplatte angeschlossen werden können. Neben der Elektronik passt auch eine Batterie problemlos zwischen den Platten. [{{ :examples:projects:robot:robot_3d.jpg?500 |Erstes 3D-Modell des Roboters und Anordnung seiner Komponenten. }}] Die Stoßstangen des Roboters werden separat geplant und sind mit Berührungs- und Linienfolgesensoren ausgestattet. Die Stoßstange wird aus PCBs hergestellt und verfügt dadurch über Elektrizität. Die Linienfolgesensoren werden direkt auf die Stoßstange der Bodenplatte gelötet. Berührungssensoren (Mikroschalter) werden zwischen den Stoßstangenplatten platziert und mit einem Gummistück an der Front geschützt. Das Gummistück absorbiert den Aufprall und ermöglicht gleichzeitig zu identifizieren, woher der Aufprall kam. [{{ :examples:projects:robot:pamperi_joonis.jpg?500 |Zeichnung der Stoßstangenplatte}}] ===== Elektronik ===== Die Elektronik des Systems ist in einem Prinzipsschema und Schaltplan mit PCB-Aufbau-Plan beschrieben. [{{ :examples:projects:robot:robot_electronics.png?500 |Blockdiagramm der elektronischen Komponenten}}] Als Beispiel werden die Schaltpläne der Linienfolgesensoren sowie die dazugehörigen PCB-Aufbau Pläne der Stoßstange des Roboters gezeigt. [{{ :examples:projects:robot:robot_pumper_skeem.png?500 |Schaltplan der Stoßstangensensoren.}}] [{{ :examples:projects:robot:robot_pumper_pcb.png?500 |Aufbauplan der Stoßstange.}}] ===== Kontrollsystem ===== Das Kontrollsystem des Roboters, leitet sich von einem Verhaltensmodell ab und ist an Funktionalität, Anforderungen und Einschränkungen der ursprünglichen Aufgabe angepasst. Aus dem Verhaltensmodell des Systems wird ein spezifisches Kontrollprogramm entworfen, welches wiederum die Basis für den Softwareprogrammcode ist. Alle drei Ebenen (Verhaltensmodell-Algorihtmus-Quellcode) müssen miteinander vereinbar sein. ==== Algorithmus ==== Der Algorithmus beschreibt die Kontrolllogik des System und wird als Blockdiagramm dargestellt. Einige Elemente und Beschreibungen der Verhältnisse genügen, um einen einfachen Algorithmus zu erstellen. Wenn der Algorithmus für den Roboter richtig zusammengestellt ist, kann daraus sehr einfach ein Kontrollprogramm erstellt werden. Grundsätzlich werden zwei verschiedene Objekte in einem Algorithmus genutzt: ein Rechteck mit runden Ecken, zur Darstellung einer Aktivität sowie ein kleiner Diamant zur Kontrolle einer Bedingung, gefolgt von einem Start weiterer Aktivitäten, je nach Resultat der Kontrolle. Bedeutung der im Algorithmus verwendeten Symbole: ^Symbol^Bedeutung^0^1^-1^ |M1|linker Motor|Stop|rotiert im Uhrzeigersinn|rotiert gegen den Uhrzeigersinn| |M2|rechter Motor|stop|rotiert im Uhrzeigersinn|rotiert gegen den Uhrzeigersinn| |F|erster mittlerer Berührungssensor|kein Signal|Signal| | |FR|erster rechter Berührungssensor|kein signal|Signal | | |FL|erster linker Berührungssensor|kein signal|Signal | | |d|Bezug| | | | [{{ :examples:projects:robot:robot_algoritm.png?500 |Statusdiagramm eines Algorithmus}}] ==== Quellcode ==== Einfache Navigation #include #include #include // Definieren der Stoßstangenpins pin front = PIN(C, 0); pin frontleft = PIN(C, 1); pin frontright = PIN(C, 2); // // Hauptprogramm // int main(void) { // Starten von Motor 0 und 1 dcmotor_init(0); dcmotor_init(1); // Sensorpins als Inputs pin_setup_input_with_pullup(front); pin_setup_input_with_pullup(frontleft); pin_setup_input_with_pullup(frontright); // Endlosschleife while (true) { // Motorstart im Uhrzeigersinn dcmotor_drive(0, 1); dcmotor_drive(1, 1); // Kontrolle des mittleren Sensorsignals if (pin_get_value(front)) { // Umkehr der Motoren dcmotor_drive(0, -1); dcmotor_drive(1, -1); // Pause 1 Sekunde sw_delay_ms(1000); // Start des linken Motors im Uhrzeigersinn dcmotor_drive(0, 1); // Pause 2 Sekunden sw_delay_ms(2000); } // Kontrolle des linken Sensorsignals else if (pin_get_value(frontleft)) { // Umkehr des rechten Motors dcmotor_drive(1, -1); // Pause 2 Sekunden sw_delay_ms(2000); } // Kontrolle des rechten Sensorsignals else if (pin_get_value(frontright)) { // Umkehr des linken Motors dcmotor_drive(0, -1); // Pause 2 Sekunden sw_delay_ms(2000); } } } ===== Gebrauchsfertige Lösung ===== Die in diesem Projekt gebaute Roboterplattform besteht zum größten Teil aus Plastik, außer der Motorbefestigung, welche aus Aluminium hergestellt ist. Die elektrischen Module wurden auf einander platziert, die Batterie liegt lose zwischen den Platten. Die Stoßstangen wurden aus PCB gebaut und schwarz gestrichen. Die Dachplatte des Roboters ist flach und erlaubt das Anbringen verschiedener Geräten. Es wurde ein einfaches Radar installiert, welches aus einem kleinen RC Servomotor und einem Infrarotsensor besteht. Als zweite Lösung wurde ein intelligentes Kameramodul installiert, welches beim Lösen visueller Probleme hilft. Beide Lösungen werden auf den folgenden Bildern vorgestellt. Ein einfacher Manipulator wurde als drittes Gerät getestet, dessen Komponenten mit standard Servomotoren sowie einer seriellen Schnittstelle zur Kontrolle des Antriebs betrieben werden. [{{ :examples:projects:robot:robot_radar.png?580 |Roboter mit Infrarotradar.}}] [{{ :examples:projects:robot:robot_camera.png?580 |Roboter mit intelligentem Kameramodul (CMUcam3).}}] ===== Kostenkalkulation ===== Die Kostenkalkulation enthält die Kosten für die Komponenten und die Produktion des Roboters Tabelle der Komponentenkosten ^Komponent^Marke^Anzahl^Preis^Kosten^ |Motor|M LE149.6.43|2|500.-|1000.-| |Mikrocontroller|uC ATmega128|1|900.-|900.-| |Motorenantriebsplatine|Actuator Board v1.2|1|700.-|700.-| |Power plate|TP|1|500.-|500.-| |Linienfolgesensoren|LFS QRD1114|8|30.-|240.-| |Berührungssensoren|TS Microswitch|8|25.-|200.-| |Gehäuseblech|ABS |4|50.-|200.-| |PCB Rohteil| |2|50.-|100.-| |Motorenbefestigungsprofil|Al-L |2|10.-|20.-| |Reifen|60/10 mm |2|30.-|60.-| |Batterie|NI-MH 9,6 V|1|350.-|350.-| |Kabel| |10|20.-|200.-| |Muttern| |1|50.-|50.-| |Weiteres Zubehör| |1|100.-|100.-| ^ Total ^ ^ ^ ^ 4620.- ^ Kosten in EEK. Geschätzte Arbeits- und Produktionskosten für ein einzelnes Modell. ^Arbeit^Zeit (h)^Preis^Kosten ^ |Fräsen der Bauteile|1|300.-|300.-| |Fräsen der PCBs (Stoßstangen)|0,5|500.-|250.-| |Bau des Roboters|0,5|250.-|125.-| |Bau der Stoßstangen (löten der Komponenten)|1|300.-|300.-| |Programmierarbeit|5|300.-|1500.-| |Erstellen der Dokumentation|3|250.-|750.-| ^Total^ 11 ^ ^ 3225.- ^ Vorraussichtliche Kosten des Roboters **7845.-** Die Kostenkalkulation des Roboters basiert auf geschätzten, da es sich um ein Lehrprojekt handelt und aus diesem Grund mehr Zeit für die Arbeit und Konstruktion verwendet wird und keine direkte Bezahlung erfolgt. Daher spiegelt der berechnete Arbeitsaufwand keine reale Situationen wider. ===== Projektmanagement ===== Das mechatronische System (Roboter) ist in Gruppenarbeit mit straffem Zeitplan und Budget entstanden, und besitzt damit die wichtigsten Eigenschaften eines Projektes. Die Schlüsselaktivitäten des Projekts waren: Erstellung des Zeitplans, Planung und Management der Gruppenarbeit, Überwachung des Budgets sowie Besorgung des Materials, Weitergabe aktueller Berichte an den Leiter, Präsentation sowie Dokumentation des Ergebnisses. Der Projekbericht enthält Angaben zu den Arbeitsgruppen, Terminen von Meetings, dem Projektplan (am besten in einem Gantt Diagramm), der Ressourcenverteilung (inkl. Personalverteilung) sowie zum geplanten und aktuellen Budget. Nachfolgend wird ein einfacher Projektplan als Gantt Diagramm dargestellt. [{{ :examples:projects:robot:roboti_projekt_gantt.gif?580 |Projektplan}}] ===== Fazit ===== Die Kostenrechnung hat gezeigt, dass die Produktionkosten des Roboters sehr hoch sind, besonders wenn man nur mit einem Exemplar rechnet. Die Kosten blieben jedoch im anfänglich gesetzten Rahmen. Die Prouktionskosten könnten durch Optimierung des Materials und der Komponeten sowie durch gleichzeitige Fertigung mehrerer Roboter wesentlich reduziert werden. Während des Projekts ist deutlich geworden, wie ein mechatronisches System geplant, gebaut und getestet wird. Am Ende der Arbeit ist eines klar geworden: Damit der Roboter richtig funktioniert, sollte deutlich mehr Zeit zum Testen eingeplant werden, insbesondere für Softwaretests. Unterschiedliche Module funktionieren nicht immer einwandfrei zusammen, auch wenn dieses in einzelnen Experimenten klappt. Dadurch wird deutlich, dass die Integration von Modulen in ein System eine echte Herausforderung darstellt, und hierfür mehr Zeit und Ressourcen eingeplant werden sollten. Abschließend hoffen wir, dass das Projekt sehr interessant und lehrreich war und einen Einblick in das Design und die Konstruktion von integrierten Systemen geben konnte. ===== Genutzte Quellen und Materialien ===== - Allgemeines Benutzerhandbuch des HomeLab http://home.roboticlab.eu - Datenblatt des ATmega128 - Dudziak, R., Köhn, C., Sell, R., Integrated Systems & Design, TUT Press, 2008 - Friendenthal, S., Moore, A., Steiner, A., A Practical Guide to SysML, Elsevier, 2008 - Perens, A. Project Management, Külim, 1999 - Bräunl, T. Embedded Robotics, Springer-Verlag, 2003