| « Lange nichts passiert | Kleines Update » |
PC steuert Kyosho Rock Force
Bisher wurde der Kyosho nur mit der originalen Fernbedienung gesteuert. Das Tracking des Fahrzeugs wurde ausschließlich über die Webcambilder gemacht. Dieses Verfahren allein ist, wie wir gesehen haben, nicht sonderlich geeignet um allein die Positionserfassung zu ermöglichen. Damit das Fahrzeug autonom fahren kann, muss der PC es steuern können. Die Steuerungsinformationen des Fahrzeugs können genutzt werden das bisherige Tracking zu ergänzen. Doch wie kann ein handelsüblicher PC ein RC-Fahrzeug steuern?
Möglichkeit 1. Auf das Fahrzeug kommt ein Mikrokontroller, der über WLAN ansprechbar ist und die Servomotoren mit gängiger PWM (Pulsweitenmodulation) anspricht. Dagegen spricht: Eine ähnliche Variante hatten wir bereits mit dem ersten LEGO-Auto. Letztlich muss das Auto viel zusätzliche Hardware transportieren und mit Strom versorgen. Eine TCP/IP Kopplung ist für Echtzeitanwendungen auch nicht unbedingt prädestiniert. Diese Variante scheidet also aus.
Möglichkeit 2. Man nutzt die vorhandene Fernbedienung, und bringt sie dazu das zu senden, was man möchte. Wie tut man dies? Ich habe absichtlich eine billige Fernbedienung gekauft, in der Hoffnung, die verbaute Technik ist simpel. Und das ist sie auch. Die Fernbedienung ist ein 40MHz FM Sender. Gesendet wird ein sogenannter PPM-Code. Dies steht für Pulse Position Modulation. Über die Länge von Pausen zwischen zwei Impulsen werden die einzelnen Kanäle (und somit Servostellungen) sequentiell über eine 40MHz Frequenz gefunkt. Die Impulse selbst sind immer gleich lang. Synchronisiert wird über eine überlange Pause am Anfang/Ende der Sequenz. Ein Frame ist dabei ca 20ms lang.

Hierbei ist zu beachten: In der Literatur findet sich auch eine andere Beschreibung von PPM. Hier wird über die Länge von Pulsen moduliert, ein überlanger Startpuls dient als Synchronisation und die Abständer zweier Pulse ist immer gleich. Diese beiden Beschreibungen sind identisch, wenn man Puls und Pause vertauscht.
Jeder, der schon einmal eine Windows/Linux-Anwendung programmiert hat und versucht hat dabei einen Timer zu verwenden, der Millisekundengenau auflöst und dabei kläglich gescheitert ist, wird sich jetzt fragen: Wie soll so etwas funktionieren? Gängige Timer unter Windows/Linux lösen nur 16ms auf. Weiterhin kann das Multitasking einem einen Strich durch die Rechnung machen, in dem es einfach mal einen Prozess ein paar Millisekunden aussetzen lässt. Die Lösung ist dennoch denkbar einfach: Man nimmt die Soundkarte! Eine Soundkarte feuert bei einer Samplingrate von 44.1kHz (CD-Qualität) 44100 Samples in einer Sekunde auf die Lautsprecher. Dabei sind die Soundkarten bestrebt, dies so gut wie möglich zu machen, damit einem beim Hören einer CD nicht die Ohren abfallen. Ein PPM-Frame umfasst etwa 20ms. In 20ms kann eine Soundkarte bei CD-Qualität 20ms*44.1Samples/ms = 882 Samples losschicken. In diesen 882 Samples kann ich nun meine Kanäle modulieren. Für einen Kanal steht etwa 1ms zur Verfügung, dies entspricht damit 44.1 Stufen pro Kanal. Dies ist nicht sonderlich gut, aber ausreichend und vor allem in Echtzeit und ohne zusätzlichen Hardwareaufwand. Also wurde die Fernbedienung kurzerhand auseindergebaut und das PPM Signal auf einem Oszilloskop betrachtet. Dann wurde dieses Signal über die Soundkarte nachgebaut.
Intern habe ich DirectX, bzw genauer XAudio2 (Nachfolger von Direct Sound) verwendet und einen PPM-Frame mit einer Streamingvariante über zwei abwechselnde Audiobuffer abgespielt. Soweit so gut, man kann also PPM über eine Soundkarte ausgeben. Hören kann man das somit natürlich auch. Aber wie kommt das Signal nun zum Auto? Die FM-Modulation auf die 40MHz Trägerfrequenz übernimmt weiterhin die Fernbedienung. Hierzu musste man lediglich kurz vor der Hochfrequenzeinheit der Fernbedienung das Signal der Soundkarte einspeisen. Damit ich meine Fernbedienung nicht gleich vernichte, hat mein Vater wieder einmal den Lötkolben geschwungen und nun hat meine Ansmann W3 Fernbedienung eine Stereobuchse bekommen. Musik sollte man hier jedoch nicht einspielen, das Auto interpretiert diese Signalfolgen nämlich ebenfalls als PPM und versucht dann zur Musik passend zu tanzen!
Auf Moderation wartende Feedbacks
Der Eintrag hat 7 auf Moderation wartende Feedbacks...