Ein Rennwagen ist eine anspruchsvolle Umgebung mit hohen Geschwindigkeiten, Hitze und Telemetriebeschränkungen. Wie kann ein On-Device-Agent helfen, Echtzeit-Fahrzeugdaten für Sport- und technische Anwendungen zu verarbeiten?
In dieser technischen Session wird eine experimentelle Hybridarchitektur vorgestellt, die Edge-Hardware und Cloud-Agents kombiniert. Wir gehen ein Proof-of-Concept-Forschungsprojekt durch, bei dem ein Raspberry Pi zum Streamen von CAN-Bus-Telemetriedaten, ein Pixel Smartphone mit einem On-Device-Konversations-Agenten, der auf ML Kit und Gemini Nano basiert, und eine Agent-to-Agent-Cloud-Verbindung (A2A) für Workflows nach dem Rennen verwendet werden.
Transkript
Hallo,
Mein Name ist Alastair und ich freue mich, Ihnen heute ein Projekt vorstellen zu können, das wir letztes Jahr mit der Formel E durchgeführt haben.
Oli ist heute hier, um ein wenig darüber zu sprechen, was wir gemeinsam gemacht haben.
Ich arbeite bei Google Cloud im CTO-Büro. Wir versuchen oft, die Grenzen des Möglichen auf Mobilgeräten und in der Cloud zu erweitern und zu sehen, wie sie zusammenarbeiten können.
Ich zeige Ihnen ein kurzes Video, das Ihnen einen kleinen Einblick in unsere Arbeit gibt.
Das Gen4-Auto ist ein Rennmonster mit 600 kW.
Rein elektrischer Antrieb, permanenter Allradantrieb.
Ich würde es als verdammt schnell beschreiben.
Könnten wir einen Agenten auf einem Pixel Smartphone verwenden, der mit den Telemetriedaten des Autos verbunden ist?
Während der Fahrer den Hügel in Goodwood hinauffährt, kann er tatsächlich mit dem Auto sprechen.
Das ist beeindruckend.
Hey Gemma, wie ist der Zustand meiner Reifen?
Der Reifendruck ist mit etwa 1, 4 bar in Ordnung.
Es gibt ein Smartphone, das direkt mit dem Steuergerät verbunden ist und viele Datenpunkte zu meinem Fahrverhalten erfasst.
Das ist das erste Mal, dass so etwas in einem Rennwagen passiert ist.
Ich finde, es gibt keinen besseren Ort, um sie zu präsentieren.
Hey Gemma, sind wir bereit?
Ich bin bereit, sobald du es bist.
Wir wollten einen KI-Beifahrer ins Cockpit bringen.
Im Grunde versuchen wir hier, die Grenzen dessen zu erweitern, was mit Agenten am Edge möglich ist, denn dies ist ein hervorragendes Beispiel für eine wirklich schwierige Herausforderung.
In einem Rennwagen ist es natürlich sehr heiß.
Rennwagen sind dafür bekannt, dass sie heiß werden, und das ist eine der größten Herausforderungen.
Lückenhafte Verbindung.
Wir machen das beim Goodwood Festival of Speed, wo sich Hunderttausende Motorsportfans versammeln, um sich die Bergrennen anzusehen.
Und wie Sie sich vorstellen können, ist die Konnektivität bei Hunderttausenden von Menschen auf einem Feld eine ziemliche Herausforderung.
Bluetooth ist ebenfalls aktiviert.
Dieses Auto ist im Grunde ein faradayscher Käfig. Sie können sich also vorstellen, wie schwierig es ist, überhaupt eine Verbindung zum Helm des Rennfahrers herzustellen.
Und schließlich die Anforderungen an eine niedrige Latenz.
Dieser Fahrer fährt über 200 km/h. Es ist also sehr wichtig, dass die Antworten des Co-Driver-Agenten schnell und präzise sind.
Wir sind davon überzeugt, dass KI-Agenten bald allgegenwärtig sein werden.
Diese Entwicklung zeichnet sich bereits ab.
Sie sind nicht mehr nur in unseren Computern.
Sie sind in unseren Smartphones, Smartwatches, Brillen, Smart Homes und jetzt sogar in unseren Autos.
Wir wollten also herausfinden, was wir in einem so schwierigen Szenario erreichen können.
Als wir uns überlegt haben, wie wir das umsetzen könnten, haben wir uns gefragt, ob wir einen kleinen Mikrocomputer mit einem kleinen Beschleuniger bauen sollten, um ein Modell zu haben.
Wir haben plötzlich erkannt, dass alle erforderlichen Zutaten bereits vorhanden waren – und zwar in Android.
Android ist dafür die perfekte Plattform, weil es das ADK (Agent Developer Kit) gibt.
Das ist eine sehr gute Bibliothek, mit der Sie Agenten direkt in Ihre Anwendung einbinden können.
Es gibt Milliarden von Nutzern und verschiedene Formfaktoren, auf denen wir das ganz einfach ausführen können. Es ist also wirklich einfach, das zu testen und den Code selbst zu verteilen.
Entwicklertools, mit denen Sie Fehler beheben, verschiedene Dinge ausprobieren und herausfinden können, was schief läuft.
Google Pixel-Smartphones werden jetzt mit einer TPU direkt im Smartphone ausgeliefert, die für das On-Device-Modell optimiert ist, das sich direkt im Smartphone befindet. So ist es wirklich einfach, über APIs wie ML Kit auf ein wirklich leistungsstarkes Modell zuzugreifen.
Außerdem gibt es Funktionen wie Text-zu-Sprache und Spracherkennung, vollständig offline nutzbare APIs, die wirklich leistungsstarke Konversationsfunktionen ermöglichen.
Und schließlich die Konnektivität.
Smartphones sind für die Verbindung mit anderen Geräten und dem Internet konzipiert, sei es über Mobilfunknetze, WLAN oder andere Mittel.
Eine der Herausforderungen ist jedoch, dass KI-Agenten am Edge nicht alles können. Wie würden sie also mit KI-Agenten in der Cloud zusammenarbeiten?
Und was, wenn die Lösung hybrid wäre?
Was wäre, wenn ein Agent auf einem Smartphone direkt mit einem Agenten in der Cloud kommunizieren könnte, um komplexere Aktionen auszuführen?
Stellen Sie sich zum Beispiel vor, der Fahrer möchte wissen, auf welcher Position er sich im Rennen befindet.
Das Auto selbst weiß nicht, auf welcher Position es sich im Rennen befindet, aber vielleicht ein KI-Agent in der Cloud.
Und wir haben ein Protokoll namens Agent-to-Agent, mit dem Sie Agenten auf Edge-Geräten und in der Cloud erstellen und sie direkt miteinander kommunizieren lassen können, um komplexere Aktionen auszuführen.
Wie haben wir das also gemacht?
Ich werde Ihnen die Komponenten dieses Systems vorstellen.
Beginnen wir mit der Kabelaufhängung.
Die Testumgebung ist im Grunde eine Android-App, die das Agent Developer Kit für Android ausführt.
Der zweite Teil ist ein Modell.
Dafür braucht man ein Modell. Wir haben Gemini Nano über ML Kit verwendet, ein wirklich leistungsstarkes On-Device-Modell, das direkt verfügbar ist.
Dann die Daten.
Oli wird gleich noch etwas dazu sagen, aber Sie haben die Daten, die vom Auto kommen, und möglicherweise auch die Spracherkennung des Fahrers.
Und schließlich gibt es noch die Aktionen, die der Agent ausführen kann.
Das könnte Text-zu-Sprache sein, um mit dem Fahrer zu sprechen und Folgefragen zu stellen oder die erforderlichen Informationen zu geben, oder wie bereits erwähnt, die Kommunikation zwischen Agenten mit einem Agenten in der Cloud, um einige der komplexeren Aktionen auszuführen.
Ich möchte jetzt Oli auf die Bühne bitten, um ein wenig darüber zu sprechen, wie wir das mit der Formel E gemacht haben.
Danke, Alastair.
Wir haben also die Zutaten. Jetzt kommt der schwierige Teil: Wie integrieren wir einen KI-Agenten in ein Formel-E-Auto?
Es beginnt hier bei der VCU (Vehicle Control Unit, Fahrzeugsteuereinheit).
Jeder Sensor und jede Komponente im Auto meldet sich über den sogenannten CAN-Bus beim Steuergerät.
Das Auto generiert pro Sekunde Tausende von Telemetriedatenpunkten, z. B. Geschwindigkeit, Beschleunigung, Gas, Bremsen und mehr.
Um diese Telemetriedaten zu lesen, haben wir einen Raspberry Pi über diese CAN-Verbindung direkt an die VCU des Autos angeschlossen.
Der Raspberry Pi hat verschiedene Funktionen.
Zuerst werden die Rohsignale decodiert, transformiert und auf etwa 10 Hz heruntergerechnet. Das sind genügend Informationen für einen Co-Piloten.
Der Raspberry Pi veröffentlicht diese verarbeiteten Daten dann über MQTT auf einem Pixel 10 Pro im Cockpit des Autos.
Dies ist eine Eingabe, die die Anwendung, die unsere Agentenanwendung hostet, akzeptieren kann.
Die zweite ist die Android-Spracherkennung.
Wenn der Fahrer also spricht, wandelt die App die Eingabe in Text um und Gemini Nano kann beide Eingaben verarbeiten.
Der KI-Agent kann nun zwei Entscheidungen treffen: Erstens kann er die Text-zu-Sprache-Engine von Android verwenden, um mit dem Fahrer zu sprechen.
Zweitens kann er, wie Alastair bereits erwähnt hat, über das A2A-Protokoll mit dem Cloud-Agenten kommunizieren.
Der Ablauf ist ganz einfach: Hotword sagen, in diesem Fall „Hey, Gemma“, Frage stellen und Antwort erhalten.
Der KI-Agent hört danach noch etwa 5 Sekunden lang zu, damit du eine Folgefrage stellen kannst, ohne von vorn anfangen zu müssen – genau wie bei einem Gespräch mit einem echten Renningenieur.
Die App ist auch ein Multi-Turn-Agent. Das bedeutet, dass sie auf den Unterhaltungsverlauf zugreifen kann, um sich besser unterhalten zu können.
Sie erwarten wahrscheinlich, dass der Code dafür etwas kompliziert aussieht, oder?
Das ist eigentlich ganz einfach.
In den ersten Zeilen wird die onDeviceModel mit ML Kit aufgerufen und als Gemini Nano verpackt.
val generativeModel: GenerativeModel = Generation.getClient()
val onDeviceModel = GenaiPrompt.create(
generativeModel = generativeModel,
name = "gemini-nano",
)
val agent = LlmAgent(
name = "race_engineer",
model = onDeviceModel,
staticInstruction = /* System prompt */,
instruction = Instruction {
/* Dynamic context */
},
tools = listOf(
/* Custom tools */
)
)Anschließend definieren wir den KI-Agenten mit dem ADK.
Geben Sie ihm einen Namen und zwei Arten von Anweisungen: Die erste ist die statische Anweisung, die seine Persönlichkeit und Identität beschreibt.
Dazu gehören beispielsweise die Kommunikation mit dem Fahrer und Informationen zur Rennstrecke.
Die zweite ist die dynamische Anweisung.
Diese wird bei jeder Abfrage mit der neuesten Telemetriezusammenfassung generiert, sodass der Agent immer weiß, was der Fahrer gerade tut.
Wie bereits erwähnt, ist auch der aktuelle Unterhaltungsverlauf enthalten.
Darüber hinaus definieren wir einige Tools, mit denen der Agent beispielsweise auf Daten aus früheren Sitzungen, auf den Cloud-Agenten und auf den Fahrer per Text-zu-Sprache zugreifen kann.
Sehen wir uns nun eine kurze Demo des KI-Agenten in Aktion auf unseren Sim-Rigs im Formula E-Büro an.
Hey Gemma, wie aggressiv ist mein Lenkverhalten?
Gleichmäßig und kontrolliert.
Der maximale Lenkeinschlag betrug 48 Grad und du hast das Lenkrad im Durchschnitt um 11 Grad pro Sekunde bewegt.
Hey Gemma, was ist meine maximale G-Kraft?
Die maximale G-Kraft betrug 2, 2 G in den Kurven.
Hey Gemma, wie war mein Lauf?
Guter Lauf, Dan.
Höchstgeschwindigkeit 306 km/h, Durchschnittsgeschwindigkeit 186 km/h über 35 Sekunden.
Du warst 58 % der Zeit mit Vollgas unterwegs und hast eine Höchstgeschwindigkeit von 2, 2 G erreicht.
So, das war's.
Das ist Gemini Nano auf einem Smartphone, das mit einem Fahrer spricht und seine Fragen in Echtzeit beantwortet.
Ein Sim-Rig ist eine Sache, ein Formel-E-Auto etwas ganz anderes.
Wie haben wir das alles zusammengebracht?
Zuerst mussten wir zu Spark Racing Technology in Paris, wo unsere Autos gebaut werden.
Hier bin ich links zu sehen, wie ich den Raspberry Pi mit der VCU des Formel-E-Autos verbinde.
Alles, was wir bisher erstellt haben, lief mit emulierten Daten und wurde aus einer Testsitzung wiedergegeben. Wir wussten also nicht wirklich, ob es mit echten Daten funktionieren würde.
Wir haben es also angeschlossen, eingeschaltet, gewartet, noch ein bisschen gewartet und schließlich kamen die Telemetriedaten auf dem Gerät an. Das hat bewiesen, dass die Daten wie erwartet durch das System fließen.
Rechts sehen Sie das fertige System. Das Smartphone ist im Cockpit direkt neben dem Fahrersitz eingebaut.
Wir waren also bereit für Goodwood.
Was ist an diesem Tag also tatsächlich passiert?
Erinnern Sie sich an die vier Herausforderungen, die Alastair vorhin erwähnt hat?
In Goodwood wurden zwei davon auf die Probe gestellt.
Der erste war die Hitze.
In Großbritannien planen wir normalerweise für jedes Wetter, außer für Sonnenschein.
Natürlich war es eine der heißesten Wochen seit Beginn der Aufzeichnungen, mitten in einer Hitzewelle.
Der perfekte Zeitpunkt, um einen Computer in ein Formel-E-Auto einzubauen.
Aber jetzt kommt der Clou.
Das Smartphone war eigentlich in Ordnung.
Android hat nicht wirklich gelitten.
Es stellte sich heraus, dass der Raspberry Pi die größten Probleme hatte.
Da wir ihn nicht direkt an das Auto anschließen konnten, mussten wir eine USV verwenden. Das ist im Grunde eine Reihe von Akkus, die an der Unterseite des Pi befestigt sind.
Glücklicherweise konnten wir das Problem beheben, indem wir das Auto im Laufe des Tages immer wieder aufgeladen haben. Ohne diese Maßnahme und ohne KI-Agenten wäre das Auto den Hügel wahrscheinlich nicht hinaufgekommen.
Als Nächstes kam Bluetooth.
Zu diesem Zeitpunkt hatten wir die App noch nie mit dem Helm des Fahrers getestet, der über Bluetooth mit der App verbunden ist.
Das war eine kleine Herausforderung.
Um das zu testen, haben wir uns auf den Rasen gesetzt. Es sieht so aus, als hätten wir eine wirklich gute Zeit, oder?
Wir haben unsere Laptops ausgepackt und unterhalten uns nett.
In Wirklichkeit war das wahrscheinlich eine der stressigsten Phasen meiner bisherigen Karriere.
Wir haben verzweifelt versucht, den Code zum Laufen zu bringen und den Bluetooth-Helm mit der App zu verbinden, bevor es am Nachmittag den Berg hinaufging.
Aber dank einiger Hotfixes in letzter Minute und der hervorragenden Debugging-Tools von Android konnten wir das Problem rechtzeitig beheben. Das Auto fuhr den Berg hinauf und der KI-Agent funktionierte einwandfrei.
Ich übergebe jetzt wieder an Alastair, der uns mehr über die Erkenntnisse aus dem Projekt erzählen wird.
Vielen Dank.
Danke, Oli.
Was haben wir also aus diesem Projekt gelernt?
Erstens ist Android die perfekte Plattform für Ihre KI-Agenten.
Ich empfehle Ihnen dringend, die Vielseitigkeit von Android, die verfügbaren APIs, die On-Device-Modelle und das ADK zu nutzen.
Probiere sie aus, denn du wirst überrascht sein, wie viel du mit so einfachen Dingen erreichen kannst.
Die Integrationshölle existiert immer noch.
Die meisten Menschen in diesem Raum haben das wahrscheinlich schon einmal in ihrer Karriere erlebt.
Sie erstellen alle Unterkomponenten separat und wenn Sie sie schließlich zusammenfügen, funktioniert etwas nicht ganz.
Und der Rennhelm des Fahrers war genau das.
Glücklicherweise konnten wir das Problem noch am selben Tag beheben. Das zeigt, wie wichtig Tests sind.
Und schließlich Gemini Nano.
Gemini Nano war hier eine echte Hilfe.
Es ist ein sehr effektives Modell, das auf Ihrem Gerät sehr schnell läuft und wirklich komplizierte Aufgaben ausführen kann. Das funktioniert aber nicht sofort.
Das ist wirklich gut durchdacht.
Sie müssen Prompt Engineering betreiben.
Du musst es testen.
Sie müssen sich überlegen, wie Sie die dynamische Anleitung im Vergleich zur statischen Anleitung bereitstellen möchten.
Sie müssen sich überlegen, welche Tools Sie ihm zur Verfügung stellen und wie Sie es am besten anweisen, diese zu verwenden.
Mit den richtigen Tests und Bewertungen können Sie jedoch auch mit einem Modell wie Gemini Nano direkt auf dem Gerät viel erreichen.
Vielen Dank an alle.
Wir sind später am Stand, also kommt vorbei und stellt uns eure Fragen.
val generativeModel: GenerativeModel = Generation.getClient()
val onDeviceModel = GenaiPrompt.create(
generativeModel = generativeModel,
name = "gemini-nano",
)
val agent = LlmAgent(
name = "race_engineer",
model = onDeviceModel,
staticInstruction = /* System prompt */,
instruction = Instruction {
/* Dynamic context */
},
tools = listOf(
/* Custom tools */
)
)