Lehre.ThemaReengRobo (Struktur)


Reengineering der Robonova-Firmware

Die humanoiden Edutainment-Roboter Robonova-1 haben einen ATmega Prozessor mit einem lad- und auslesbaren Maschinenprogramm als Steuerung. Dieses Programm erlaubt nicht den Befehlsempfang über Infrarot während der Ausführung einer Bewegung. Ein Reengineerung hat als Ursache gezeigt, dass das Programm die Pulse für die Servo-Ansteuerung mit Warteschleifen, statt mit Timern erzeugt.

Ziel der Arbeit ist, die zeitkritischen Programmteile -- Pulseerzeugung und Befehlsempfang -- so als Interrupt-Routinen zu programmieren, dass dem Roboter während der Ausführung einer Bewegung bereits die nächste Anweisung übermittelt werden kann, so dass die Steuerung flüssiger Bewegungen möglich wird. Eine weitere wünschswerte Erweiterung ist der Ersatz der seriellen Schnittstelle durch Bluetooth und eine Fernsteuerung von einem PC-Programm. Auch das erfordert eine zur Bewegungsausführung nebenläufige Kommunikation.

Ein Modellbauservo wird über pulsweitenmodulierte Signale mit einer Periode von ca. 20 ms und Impulsen der Breite von 1 bis 2ms angesteuert (siehe Signalaufbau). Der einzustellende Drehwinkel steckt in der Variablen x der nachfolgenden Formel für die Pulsbreit t=1ms+x*1us (us -Mikrosekunde). Der einstellbare Wertebereich reicht ca. von 0 bis 1000. Der Roboter hat 16 Servos. Die Original-Software wartet in jedem Pulse-Zyklus zuerst in einer Schleife, bis die erste Millisekunde vorbei ist, schaltet dann in einer Schleife alle Pulse ein, wiederholt dann in einer Schleife 1000 mal: warte kurz und dann in einer inneren Schleife für alle Pulse, schalte ihn aus, wenn seine Zeit heran ist. Dieser Ablauf ist nicht unterbrechbar, müsste es aber für eine zur Bewegung nebenläufige Kommunikation sein. Die Lösungsidee zur Programmverbesserung ist die Verwendung von Timern und Interruptroutinen für die Pulseerzeugung. Da der Prozessor keine 16 Timer hat, müssen die Zeitereignisse nacheinander erzeugt werden. Das wiederum verlangt Zustandsautomaten als Interrupt-Routinen, die zur Erzielung ausreichend zeitgenauer Pulse in Assembler zu programmier sind. Damit sich dass Ein- und Ausschalten nach Timer-Ereignissen nicht unkontrollierbar verzögern kann, müssen alle anderen Interuptroutinen unterbrechbar sein.

Die ersten Ziele sind die Entwicklung und der Test geeigneter Interrupt-Routinen für die Pulserzeugung. Dazu sollen die Mikrorechner-Board für die Praktika und für den Test die USB-Logi für die Praktika verwendet werden. Die nächsten Ziele sind die Anpassung und der Test der im Originalprogramm implementierten Interrupt-Routinen sowie die Entwicklung von Interrupt-Routinen für die Kommunikation (Infrarot und USART). Falls danach noch Bearbeitungskapazität übrig sein sollte, folgt die schrittweise Portierung des restlichen Programms und abschließend die Portierung auf die Original-Hardware.

Arbeitsplan

  • Zusammenstellen aller noch freien Timer und der Prozessor-Pins, an denen Pulse zu erzeugen sind, für die Originalsteuerung. Untersuchung der Signalverläufe für die Servo-Ansteuerung an der Originalbaugruppe mit Logikanalysator. Dokumentation der Ergebnisse für die weitere Arbeit. Die benötigten Daten befinden sich überwiegend hier.
  • Entwicklung eines Zeitablaufs für die Pulse, der mit den im Prozessor verfügbaren Timern erzeugbar ist. Entwicklung des Ablaufautomaten für die Interrupt-Routinen. Programmieren der Interrupt-Routinen und eines Testrahmens, der die Pulsbreiten für jeden Servo mit einem eigenen programmierbaren Inkrement zyklisch vergrößert und verkleinert. Kontrolle mit Logikanalysator.
  • Ergänzung von Interrupt-Routinen für den Datenempfang über Infrarot und die serielle Kommunikation. Erweiterung des bisherigen Testrahmens so, dass die über Infrarot empfangenen Bytes auf das LC-Display ausgegeben werden. Kontrolle, dass der Infrarot-Empfang und die serielle Ausgabe die Impulse für die Servoansteuerung nicht verfälschen. Das erfordert eine Triggerung des Logikanalysators auf den Infrarot-Empfang bzw. die serielle Ausgabe auf das LCD.
  • Planung der schrittweisen Portierung der übrigen Funktionalität.
  • ...


Autor: gkemnitz, Letzte Änderung: 21.03.2024 19:29:57


 TU Clausthal 2020  Impressum