Freitag, 4. April 2014

Meine Aufgaben

Heute ist endlich Mittwoch - endlich bekomme ich meine Aufgaben. Kein Grund, nicht doch bis 1100 zu schlafen und dann auch erst einmal gemächlich Essen zu gehen, bevor ich das Labor stürme.

Im Labor hat mich Wang Qi schon erwartet - ich sag ja, Wang ist sone Art chinesischer Kim (für Koreaner) oder Nguyen (für Vietnamesen) oder Müller (für Deutsche)... Der schreibt jedenfalls eine Diss (keinen Diss!) über ACC (Adaptive Cruise Control) in Fahrzeugen. Also wie kann man Autofahren sicherer machen.
Und hier komme ich ins Spiel. Meine Aufgabe ist, zwei Ansätze zu implementieren und dann zu vergleichen.
Der erste nutzt ein Cohda MK2 (spielt aber eigentlich keine Rolle) - das wesentliche dabei ist:
Es gibt eine GPS-Antenne, es gibt zwei 802.11p-Wifi-Antennen und ganz wichtig: Linux. Damit ist die Schlacht natürlich auch schon gewonnen. Es geht bei der Implementierung konkret um eine Client/Server-Architektur.
Die andere Methode nutzt einen Infineon TriCore der Aurix-Reihe und eine 3G-Schnittstelle (also ganz normal China-HSDPA, also "Handyinternet"). Das ist schon etwas anspruchsvoller in der Implementierung. Hier muss ich mich ersteinmal reinfreaken, wie man da eine Ethernetschnittstelle aktiviert (und programmiert, ist ja nur ein Prozessor und ein bisschen Board dabei - kein schickes Betriebssystem - ziemlich low level, aber interessant). Danach gehts dann über zum 3G, welches auch die Positionsbestimmung übernehmen soll.

Die Idee bei beiden ist: Die Positionsdaten sollen ausgetauscht werden - mit anderen Worten: Die Fahrzeuge sollen voneinander wissen, wo sie sich befinden. Wozu? Könnte nützlich sein, um dem Fahrzeug zu sagen "es wäre wirklich besser, wenn du jezz nicht mehr mit 250 über die Piste bretterst, hinter der nächsten Kurve steht nämlich schon einer und bewegt sich nicht :("
Die Sache mit dem Aurix ist wohl state of the art (in China) und meine Aufgabe ist, zu prüfen, ob das mit dem Mk2 nicht irgendwie besser ist.
Vor- und Nachteile kann man sich ja jetzt schon denken:
Preis, Sicherheit, Skalierbarkeit
(klar, die drei Autos, die in München im Stau stehen sind keinen Aufwand für einen Server (dafür könnte ich auch mein Smartphone nutzen...) - die 4000 Autos, die hier in Shanghai auf der Kreuzung stehen, produzieren mit Sicherheit wesentlich mehr Traffic (huehuehue - Traffic... Ich meine natürlich Netzwerktraffic). Vor allem muss man dann auch mal gucken, was für Nachrichten ausgetauscht werden sollen. Denkbar sind ja noch Geschwindigkeit, Richtung, etc.).

Hier habe ich mal das Aurix-Board fotografiert:
Kaum stellt man die Blende auf kleine Werte (oder große Blende), kommen künstlerisch wertvollste Fotos raus :D


Der schwarze Block (:D) ist im Übrigen der Prozessor


Sogar mit LCD!

Als ich die Aufgabe bekommen habe, habe ich mich natürlich gleich mal rangesetzt und mich mit dem MK2 verbunden. Fix ne Shell aufgemacht und die GPS-Daten abgegriffen (geht ja alles slightly easy).
Dann noch die Test-Sende und -Empfangs-Scripte gestartet und alle in Erstauen versetzt ("wieso kann der das so schnell?!" - (ist halt Linux...)). Die Kommunikation ist jetzt aber auch schon wieder vorbei, da ich erst einmal eine Lib benötige, um die Pakete nicht von Hand zu erstellen. Ich vermute stark, dass man die im Software Development Kit findet - das kostet auch nur schlappe 5000 AUD. Jedenfalls glaube ich nicht, dass es sinnvoll ist, den IEEE-Standard selbst umzusetzen (dauert zu lange und wieso das Rad neu erfinden?).
Jetzt war also die Aufgabe, die Testscripte zu lesen und zu verstehen. Nichts, was ich nicht in den letzten drei Minuten schon getan hätte. Die machen allerdings nichts wesentliches, sondern generieren nur Parameter für Binärfiles - und da kann ich dann (legal) nicht mehr weitermachen. Disassemblen wäre zwar möglich, aber das fände Cohda vermutlich nicht so spitze.

Ich war dann eher damit beschäftigt, ein Programm zu finden, dass mir diese GPS-Daten auf einer Karte anzeigt. QLandkarteGT kann das - ich habe mittlerweile auch schon rausgefunden, dass man dort Googlemaps mit einpflanzen kann. Das Problem dabei war (zumindest beim Arch-Package), dass ich erst den svn-build brauchte :( Egal, funktioniert.

Die GPS-Daten kommen übrigens vom gpsd vom MK2. QLandkarteGT kann sich aber irgendwie nicht so ohne Weiteres dahin verbinden (vermutlich ein Formatfehler). Und jetzt kommt mein Workaround - richtig schick, wie ich finde:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
Das generiert mir zwei virtuelle serielle Ports (z.B. /dev/pts/4 und /dev/pts/5).
Und jetzt kann man einfach die GPS-Daten auf den Umweg schicken:
gpspipe -r $gpsd_ip > /dev/pts/4
Und in QLandkarteGT ein GPS-Device (NMEA) auf /dev/pts/5 definieren.
Und dann funktionuckelts! Ich bin in Shanghai!
(Um das alles rauszufinden habe ich schon etwas länger gebraucht (zwei oder drei Arbeitstage), aber dokumentationstechnisch ist es besser, wenn ich das nicht aufsplitte...)

Wie dem auch sei. Wang Qi hat uns dann noch zum Hot-Pot-Essen eingeladen (Fondue Chinoise, Feuertopf). Dazu gibt es schon einen Artikel (wen das genauer interessiert). Nett von ihm - war auch ganz lecker! Auf dem Weg habe ich gesehen: Es gibt nen Starbucks auf dem Campus - Wuhu!

1 Kommentar:

  1. Ich habe alles verstanden - besonders dass es nen Starbucks gibt :)

    AntwortenLöschen