|
Mobile Robots : Graphisch und konventionellModellBasis ist der fischertechnik Robot MR2 des Konstruktionskastens "Mobile Robots". Der Robot MR2 hat zwei durch jeweils einen eigenen Motor angetriebene und gesteuerte Räder und ist mit einem Sensorbügel zur Erkennung von Hindernissen ausgestattet. Der Bügel betätigt, abhängig vom Auftreffen auf ein Hindernis, ein oder zwei richtungsorientierte Taster. Mobile Robots : mit RCX Mindstorms, Leonardo E-1 und das Original Für den Betrieb mit LLWin ist er mit der seriellen (aktiven) fischertechnik Interface ausgerüstet, für den Betrieb mit RoboLab und Robotics Invention mit dem Lego RCX Brick. Da der RCX Brick nur drei Motoren und drei Digitaleingänge betreiben kann, wurde hier die Wegstreckenmessung, die bei dem Original fischertechnik-Modell durch Impulsrädchen an den Radachsen gemacht wird durch eine Zeitmessung ersetzt, wie es auch beim Lego RobInv der Fall ist. Die dritte Alternative bildet der mit einem Leonardo E-1 ausgerüstetet MR2. Der mit jeweils vier (Analog/Digital) Ein- bzw. Ausgängen für den Original MR2-Aufbau ausreichend gerüstet ist. Die Robots werden am PC programmiert und dann im Download-Modus betrieben. D.h. unabhängi von PC. ProgrammeAblauf : Bei Start des Programms (und freistehendem Robot) fährt der Robot vorwärts, bis er auf eine Hindernis trifft, dann wird zunächst rückwärts gefahren. Wird der linke Taster der Berührungsbügels betätigt, so wird nach rechts gedreht (analog rechter Taster), werden beide Taster betätigt, hat der linke Vorrang. MR2 Original und LLWinMobile Robots : Modell MR2 Original fischertechnik MR2 der Mobile Robots MR2 zeigt den LLWin-typischen Ablaufplan (original LLWin Beispiel-Programm). Die beiden Taster des Berührungsbügels werden in einer Endlosschleife abgefragt. Ist einer betätigt, so wird zunächst rückwärts gefahren und dann links bzw. rechts sonst vorwärts. Die Fahrstrecken für rückwärts, rechts/links werden als Schrittzahl des jeweiligen Impulsrades vorgegeben. Rueckwaerts, vorwaerts, links, rechts sind Unterprogramme, die hier nicht widergegeben sind. MR2 mit ROBO ProModell MR2 des alten Mobile Robots Kastens mit dem neuen ROBO Interface ROBO Pro Programm, das weitgehend der LLWin-Lösung entspricht. Hier wurden die Werte für die Anzahl der Rück- bzw. Links- oder Rechts-Impulse direkt im Unterprogramm angegeben. Das erlaubt eine einfache Programmerstellung auf ROBO Pro Level 2. Weitere ROBO Pro Beispiele siehe ROBO Pro-Ecke MR2 mit RCX MindstormsMobile Robots : MR2 mit RCX Mindstorms Robotics Invention System
RCX-Code (so wird die Programmiersprache des RobInv) bezeichnet bietet Kommandos (commands) zur Steuerung der Ausgänge (Motoren, Lampen) sowie Tonerzeugung und Warten, Ereignisroutinen (Sensor Watcher) zur Überwachung der digitalen Eingänge (Taster, Photowiderstand, Temperatur, Rotationszähler), Verzweigungsbefehle (Stack Controller) : If (Check and Choose), Repeat (times, Forever, While Until) und eigene Unterprogramme (my commands) in einer reinen Drag & Drop Umgebung. Zur Ausführung muß das Programm über eine serielle/Infrarot-Schnittstelle in den RCX-Brick geladen werden. Dort kann es recht bequem bedient werden (On/Off-Knopf, Run-Knopf, Programmauswahl- (es können 5 Programme im RCX-Brick gespeichert werden) und View-Knopf für die Statusanzeige). Zum Programm Rover3 (Original Lego RobInv, siehe Bild oben - auch in der deutschen Version englische Programmbefehle - ) :
touch ist eine Ereignisroutine, die bei jedem Ereignis (Berühren eines Hindernisses) neu gestartet wird. Beim gleichzeitigen betätigen beider Taster (beim aktuellen Modell möglich, bei Lego Rover3 nicht) scheint der erste touch den Vorrang zu erhalten, es wird ohne zu ruckeln nach links gesteuert (wie beim fischertechnik MR2, eine Modifikation des Programm dürfte zu einer Lösung ala MR2 führen). Version 2.0 Wurde in der Darstellung gestrafft. die (optische) Nebenläufigkeit wurde zugunsten "normaler" Konstrollstrukturen aufgegeben. In roboterspezifischen Bibliotheken werden für den jeweiligen Roboter typische Funktionsbausteine angeboten. In dem Beipiel oben wurde kräftig Gebrauch davon gemacht. RoboLabLego RoboLab MR2 Implementierung der fischertechnik LLWin Lösung mit den Mitteln des RoboLab (LabView) graphischen Systems. Auch hier wurden die Schrittzähler durch Timer ersetzt. RoboLab bietet zwei Programmieroberflächen : den einfacheren Pilot und den anspruchsvollerern Inventor. Beide jeweils in vier Lernebenen mit allmählich steigenden Programmiermöglichkeiten. MR2 wurde mit Inventor Level 4 erstellt. Inventor bietet ein System von Werkzeugfenstern und meist auch noch Subfenstern mit Symbolen für die anschließbaren Geräte, Timer, und Programmkontrollstrukturen (Verzweigung, Schleife bis zu MultiThreads). Viele Symbole können durch Modifier zusätzlich beschrieben werden. Anmerkungen zu MR2 (Eigenbau) :
Spirit.OCX Spirit.OCX ist ein ActiveX-Komponente, die von Robotics Invention genutzt wird und von Lego für das Programmieren unter Visual Basic und Delphi freigegeben wurde. Ein umfangreiches Handbuch dazu (ca. 120 Seiten, Acrobat Reader) kann von www.legomindstorms.com/sdk/index.html geladen werden. Auch wenns nicht graphisch ist (wie der Titel sagt) hier ein Visual Basic 6 Beispiel, das in etwa dem RoboLab MR2 Programm entspricht (im Beispiel werden die Kurven mit beiden Motoren gefahren) :
Spirit.OCX bietet einen umfassenden Befehlssatz (u.a. auch MultiTasking) von dem hier nur ein Ausschnitt genutzt wurde. Die Befehle gelten (mit Ausnahmen) für den RCX (Mindstorms) und den CyberMaster. Beim RCX werden sie in der Regel (wie hier) erst in den Brick geladen (Infrarot/seriell) und dann autark im Brick ausgeführt. Beim CyberMaster werden sie immer direkt ausgeführt (es besteht Funkkontakt). Bei beden Bricks gibt es Konfigurationsbefehle, die immer direkt ausgeführt werden. Im widergegebenen Programmausschnitt wird das im RCX-Brick ablaufende Betriebsprogramm beschrieben und es werden zusätzlich die erforderlichen Downloadbefehle angegeben (RCX.SelectProgram, .BeginOfTask, .EndOfTask). Die im Brick ablaufenden Befehle haben den Character einer eigenen Programmiersprache, die auch ein Variablenkonzept und arithmetische Funktionen bietet. Im Beispiel wurden Literals durch symbolische Namen ersetzt (Definitionen in separatem BAS-File. zB. "02" - BeideMotoren, 1 - Wahr). Die vollständige VB6 Source ist im Päckchen MR2SP.ZIP zusammengefaßt. Das Programm enthält auch noch einige Auskunftsfunktionen zu Version und Status sowie ein Download der erforderlichen Firmware (bei "leerem" Brick) und der Standard-Beispielprogramme. MR2 mit Leonardo E-1Mobile Robots : MR2 mit Leonardo E-1 MR2 : Technologica v4.1 Programm für Leonardo E-1 Die Technologica bezeichnete Programmierumgebung für den Leonardo E-1 bietet die Möglichkeit Button aus einem Toolbereich in den Programm (Procedure) Bereich zu ziehen. Dabei können einzelne Eigenschaften modifiziert werden. Zusätzlich können von einem Symbol-Bild des Leonardo Elemente (hier die blauen Symbole für die Eingänge (1 - 4) und die für die Ausgänge (A - D)) in den Programmbereich gezogen werden. Die Symbole können auch zur direkten Kommunikation mit dem Leonardo genutzt werden. Es können auch eigene Proceduren im Sinne von Unterprogrammen erstellt werden. Eine Programmsequenz besteht aus einer Folge von Buttons, deren erster die Ein- bzw. Ausgabe"Adresse" (blaue 1 - 4 bzw. A - D ) angibt. Die weiteren geben die Operationen an. Z.B. in der Procedure L : links (rechts oben im Bild) wird Out A angewählt, der angeschlossene Motor sol linksrum laufen, anschließend wird er dann gestartet. Hinter der blauen 1 (Anwahl von In 1) folgt ein Zurücksetzen des zugeordneten Zählers und anschließend ein Button (?), der auf Erreichen des Counterstandes 5 wartet. Danach wird der aktuelle Motor ausgeschaltet. If- und Schleifen-Befehle werten stets den aktuellen Eingang aus. Die Art des Einganges kann auf dem Symbol-Bild von Leonardo festgelegt werden. Sie wirken immer nur auf den unmittelbarfolgenden Button. In Loop sind das Abfragen der Berührungssensoren rechts und links des MR2. Je nach Ergebnis wird in die zugeordnete Procedure verzweigt. Da immer nur ein Button vom If beachtet wird, mußten die Hilfs-Proceduren RL und RR erstellt werden. Ein Problem stellt bei Technologica die Programmierung von Endlosschleifen dar. Es gibt nur einen Button für einen bestimmte Anzahl Schleifendurchläufe (max. 99) das führt zu einem sehr schnellen Ende des Programms. Hier wurde deswegen als Notlösung ein Wartebefehl in V platziert, der immer zu min. 1 sec. Vorwärts-Fahren führt. Damit läuft das Programm dann deutlich länger, die Reaktionszeit am Hindernis vergrößert sich dann aber von praktisch 0 auf 1 Sekunde, das ist kaum akzeptabel. Man sieht hier also deutlich die Grenzen der Programmiermöglichkeiten des Technologica Konzepts. LeonardoXMit dem Programm Technologica wird auch ein ActiveX.OCX (LeonardoXControl.OCX) ausgeliefert. Es ist z.B. unter VB6 einsetzbar und umfaßt einen Befehlsumfang, der dem von Technologiga weitgehend entspricht. Für den Download-Betrieb ist aber die Bildung von Proceduren, wie sie bei Technologica zu finden sind, nicht möglich. Dafür Kennen die If- Schleifen-Befehle eine Beginn- End-Klammer, die so eine Reihe von Befehlen zusammenfassen kann. Mit dem Befehlspaar LabelPlace und LabelGoto findet sich sogar eine Realisierungsmöglichkeit für eine Endlosschleife.
Das Programm entspricht (mit Ausnahme der Endlos-Schleife) der Technologica-Lösung. Die Proceduren wurden in z.B. IfDo --- IfEnd Klammern untergebracht. So stellt das gesamte Programm nur einen Block dar. Es läuft, im Gegensatz zur Technologica Lösung voll befriedigend, da der Wartebefehl im V:vorwärts-Block entfallen konnte. Stand : 22.09.2009 |