Endlich mal wieder ein Auto-Thema hier im Blog! Ich hatte ja schonmal bei Gelegenheit hier im Blog erwaehnt, dass ich zur Zeit ein kleines Forschungs- und Bastelprojekt am laufen habe: Im wesentlichen geht es darum das ich meinen PASSAT CC fernlenken will.
Fragt nicht warum oder nach einem tieferen Sinn, die Idee kam mir einfach mal so in den Kopf.
Die technischen Vorraussetzungen bringt das Fahrzeug ja schliesslich bereits mit: Spurassistent der in der Lage ist das Lenkrad zu drehen, ACC zur digitalen Regelung des Gaspedals und der Bremse...und einen ganzen Haufen an Elektronik.
Mein Fernlenk-Renner
Und nach vielen schlaflosen Naechten dann der zuendende Einfall: Ein ausgedienter A/D-Wandler aus einem seit laengerem abgestuerzten Modellhubschrauber nebst passender 6-Kanal-Fernsteuerung genommen und schnell ran ans Tuefteln.
Da ich bei einem Bremer Softwarehaus arbeite und die Programmiersprache Java fuer mich nicht unbekannt ist war ein softwarebasierter Weg zur Umformung von Fernsteuersignalen, die von einem an den Computer angeschlossenen Empfaenger kommen in Richtung serieller Schnittstelle oder in Richtung USB schnell konzipiert und geschrieben.
Die Grundidee war nun die folgende: Eine Art Software-Proxy zu schreiben, der die analogen Fernsteuerungssignale ueber den alten Modellhubschrauber-A/D-Wandler empfaengt, entsprechend transformiert und ueber das RossTech HEX+CAN USB-Kabel weiter an das Fahrzeug gibt. Da der Hersteller RossTech leider keine weiteren Angaben fuer Entwickler oder Schnittstellendokumentationen veroeffentlicht, wie genau die Daten von VCDS ueber deren USB-Treiber in Richtung Auto geschickt werden war erstmal ein genaues Studium der verwendeten Protokolle und Methoden angesagt und siehe da: Es war in der Tat einfacher als gedacht!
Jedenfalls kann man nahezu 1:1 und ohne grossen Aufwand die Steuersignale mit meiner Software in Bytes umformen und ueber das Interface an die entsprechenden Baugruppen im Fahrzeug als realen Messwert weitergeben.
Ein wichtiger Punkt ist das ich das System sehr offen gestalten wollte, ohne Aenderungen am Fahrzeug selbst vorzunehmen (Leasingwagen). Die Stromversorgung aller hinzugefuegten Baugruppen - im besonderen des Empfaengers - sollte aus Sicherheitsgruenden ueber den an den Zigarettenanzuender angeschlossenen Laptop erfolgen so das immer ausreichen Saft da ist.
Ferner sollten auch die Kosten fuer alles sollten moeglichst gering sein, fuer meine derzeitige Loesung legt man ca. 150 EUR auf den Tisch (dafuer kauft man dann den benoetigten Modellhubschrauber zum ausschlachten und andere Kleinteile/Bausteine). Dazu kommt dann noch das RossTech HEX+CAN-Kabel als Verbindung zum Auto, welches allerdings inklusive VCDS so um die 350 US$ EUR kostet. Und: Es muss leider das HEX-Kabel sein, weil man nur mit diesem direkt Hexwerte im quasi laufenden Betrieb ein- und auslesen kann.
Einfach ausgedrueckt funktioniert das nun so: Meine Software versetzt mit einer Art Reboot das Auto in einen vorher genau definierten Status - meiner Grundeinstellung, die aktuelle Geschwindigkeit wird auf >65 km/h gesetzt - wobei die echte Geschwindigkeit die vom Auto ausgegeben wird nur der Software vorliegt um entsprechende Beschleunigungseingaben unzuformen und zu uebersetzen, ACC und FrontAssist werden aktiviert und der Spurassistent eingeschaltet. Beschleunigt man mit dem Stick auf der Fernsteuerung, wird das Signal im Empfaenger in ein digitales Signal umgesetzt und meine Software leitet das ganze dann als Bytewert direkt in die Fahrzeugelektronik an das richtige Steuergeraet (in diesem Fall das ACC) mit der korrekten Adressierung weiter. Das gleiche gilt fuer die Bremse und eine Reihe anderer wichtiger Funktionen. Somit kann man schon mal vorwaerts und rueckwaerts fahren - zumindest theoretisch!
Wobei: Die Funktion rueckwaerts fahren geht im Moment jedenfalls noch nicht, weil ich leider (noch) nicht das Getriebe oder den Ganghebel fernbedienen kann, jedenfalls habe ich keine Moeglichkeit dazu gefunden, aber vielleicht findet sich ein Workaround ueber das vorherige einlegen der manuellen Fahrstufe und virtuelle Schaltpaddels die durch die Software bedient werden (wobei die Schaltpaddles ja nur innerhalb der Fahrstufe "vorwaerts" die Gaenge durchschalten - mal sehen). Aber wie der gemeine Entwickler so zu sagen pflegt: "Das kommt irgendwann ... spaetestens in der uebernaechsten Version!"
Die Lenkung hingegen war etwas schwieriger zu realisieren, hier ueberliste ich die Fahrzeugelektronik und gaukele quasi die gueltigen Messwerte der Kamera des Spurhalteassistenten vor. Das Problem allerdings war hier das dieser normalerweise erst ab 65 km/h aktiviert wird. Und alle sechs bis acht Sekunden schreibt die Software zusaetzlich einen manuellen minimalen Lenkeinschlag in den Speicher des Lenkwinkelgebers, damit nicht der Spurassistent automatisch abschaltet.
Aus diesem Grund musste ich der Elektronik vorgaukeln, das sich das Fahrzeug stets mit mindestens 65 km/h bewegt - auch im Stillstand - und der Spurhalte-Assistent stets aktiviert bleibt, auch wenn keine Steuerungseingaben von der Fernbedienung kommen. Dies loeste ich mit stetig etwas taenzelnden Bytewerten, auch wenn man den Stick nicht bewegt. Einfach ausgedrueckt bewegt man nun mit dem Fernsteuerungs-Stick sozusagen virtuelle weisse Linien, die normalerweise das Kameramodul des Spurassistenten in der Frontscheibe sieht und als Messwerte an die Blackbox fuer den Spurassistenten weitermelden wuerde. Dieses hin- und herschieben der virtuellen Fahrbahn-Linien veranlasst nun das Fahrzeug entsprechend nach links oder rechts zu fahren. Vermutlich werden durch diesen Loesungsansatz aber noch keine engen Wendemanoever moeglich sein - mal sehen und lassen wir uns ueberraschen.
Die restlichen Kanaele habe ich ebenfalls nicht ungenutzt gelassen: Ein Kanal schaltet das Licht an oder aus (in Wahrheit denkt der Lichtsensor es ist Tag oder es ist Nacht), ein weiterer aktiviert fuer den aeussersten Notfall die Parkbremse, einer weiterer die Lichthupe und der letzte freie Kanal die Warnblinker.
Versuchsaufbau
Gestern Abend habe ich meinen Aufbau zum ersten Mal trocken getestet: Zwei Laptops, also der Fahrzeugrechner und der zweite zur Visualisierung und zum debuggen der Steuerungsimpulse, der Empfaenger nebst Magnetfuss-Antenne, A/D-Wandler und meiner Software nebst angeschlossenem RossTech-Kabel.
Die Analyse der Stuerinformationen auf dem zweiten Laptop erfolgte ausnahmsweise einmal ueber ein Laplink-Kabel, da ich keine CAN-Buchse habe.
Mir kam noch eine Idee zu einem weiteren Sicherheitsfeature, denn der Empfaenger des Hubschraubers hat einen eingebauten Kreisel, ich moechte gerne noch eine Art "Not-Aus" integrieren, die bei zu hoher Beschleunigung die Signale der Software abkoppelt und das Fahrzeug somit zum Stillstand kommt.
Dieses werde ich in den naechsten Tagen noch umsetzen und eventuell ist ein realer Test mit dem Auto auf einem extra abgesperrten grossraeumigen Gelaende noch vor Ende August absehbar - mal schauen. Ein befreundeter Gendarm hier in meinem Ort will an einem Sonntag extra den Parkplatz vom hiesigen Leclerq-Supermarkt dafuer sperren.
Jedenfalls hat die Trockensimulation keine Ungereimtheiten in der Loesung an den Tag gebracht, was mich stark hoffen laesst.
Weiteres - dann auch mit Video - also demnaechst an dieser Stelle. Der naechste Teil dieser kleinen Serie beschaeftigt sich mit der Integration in das Auto und erste Funktionstests.