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.
Autor: gkemnitz, Letzte Änderung: 06.11.2024 20:33:30