Infotainmentsystem

Infotainmentsysteme im Fahrzeug umfassen neben gängigen Funktionen sowohl wichtige für den Kunden relevante Inhalte wie Navigation, Telefonie, Radio/Entertainment als auch die Steuerung von Fahrzeugfunktionen wie Klimabedienung oder Reifendruckkontrolle. All diese Elemente finden sich unter einer Bedienoberfläche (User Interface) in einem zentralen Steuergerät. Um Informationen sammeln und verteilen zu können, ist das System mit anderen Steuergeräten im Fahrzeug sowie mit Backend-Servern vernetzt. Um den Fahrer möglichst wenig abzulenken, bietet das Gerät eine Onboard- und Online-Sprachbedienung, Vorlesefunktionen sowie eine Handschrifterkennung. Als typische Entwicklungssprachen im Infotainmentsystem setzen wir derzeit C, C++, Java und JavaScript/TypeScript in unserer täglichen Arbeit ein.

Ansicht Aufbau eines Infotainmentsystems

User Interface – Angular als Infotainment-Frontend

Das User Interface (UI) stellt für den Endnutzer im Fahrzeug eine Bedienschnittstelle bereit, mit der die Funktionen eines Infotainmentsystems gesteuert werden können. Hierfür setzen wir bei der e.solutions Web-Technologien ein, konkret Angular, HTML5 und JavaScript/TypeScript. Aber Angular als Embedded-Technologie? Wir machen das möglich! Dabei ist nicht nur eines der größten Angular-Projekte entstanden, sondern auch eines mit besonderen Anforderungen an die Performance. Screen-Übergänge müssen schnell und mit ruckelfreien Animationen ablaufen, um eine durchgehend positive User Experience zu gewährleisten. Um das zu erreichen, ist einiges zu beachten. Wir haben in Angular Rahmenbedingungen definiert, die eine schnelle Ausführung der Applikation ermöglichen. Ein wichtiges Schlagwort ist hier die Change Detection, bei der wir die Updates in den Templates selbst steuern und auf ein Mindestmaß beschränken. Auch im Bereich Layout-Definition über CSS sind einige Punkte zu beachten. Animationen werden so definiert, dass sie hardware-beschleunigt auf dem Grafikprozessor ausgeführt werden können. Die Rendering-Pipeline des Browsers ist für uns kein theoretisches Konzept – Nur mit Kenntnissen in diesem Bereich lassen sich performante Web-Anwendungen im Embedded-Umfeld entwickeln.

Business Logic – Eine Middleware in Java

Die Verbindung zwischen UI und den Funktionskomponenten im Infotainmentsystem stellt die sogenannte Business Logic her. Dabei handelt es sich um einen Java-Server, der Zugriff auf die Fahrzeugfunktionen (wie z.B. Navigation, Telefon, Media) über eine REST-Schnittstelle bietet. Dabei werden nicht nur Funktionen über diese Schnittstelle bereitgestellt, sondern die einzelnen Komponenten werden auch miteinander verknüpft. Ein klassisches Beispiel ist ein eingehender Telefonanruf – Hier muss die Business Logic in der Lage sein, die Audio-Verbindung vom Radio auf das Telefon umzuschalten. In der Business Logic setzen wir auf RxJava. Dieser Ansatz eignet sich sehr gut, um die asynchronen und Event-getriebenen Abläufe zu implementieren, die in einem Infotainmentsystem auftreten. Um unsere Business Logic während der Entwicklung effizient zu testen und gegen Fehler abzusichern, legen wir einen besonderen Wert auf den Einsatz von Unit Tests.

Funktion – Kernfunktionen des Infotainmentsystems

Die Kernfunktionen des Infotainmentsystems werden sowohl an den Standorten Ingolstadt als auch Erlangen geschrieben. Hier geht es oft um „number crunching“ Aufgaben und Performance. Bei der Entwicklung der Kernfunktionen setzen wir daher in der Entwicklung vornehmlich auf die Sprache C++ – in einigen Bereichen auch auf Java. Für folgende Funktionsbereiche tragen wir bei der e.solutions ganz oder teilweise die Verantwortung:

  • Spracherkennung und Synthese
  • Audio Management
  • Navigation
  • Adressbuch
  • Zentrale Suchfunktion
  • Telefonie, Bluetooth und WiFi Funktionen
  • Grafik und Kameraanbindung
  • Kommunikation mit anderen Fahrzeugsystemen
  • Media (Audio/Video) sowie Anbindung von Smartphones
  • Fahrzeugdiagnose
  • Software Update lokal und „over the air“
  • Security im Fahrzeug
  • Performance und Stabilität
  • Anbindung Sirius (US Satellitenradio)
  • Schwarmdienste, Datenaggregation mit Backends, Online Dienste

Einige Lösungen setzen wir gemeinsam mit unseren Partnerfirmen um. Wir übernehmen die technische Betreuung, die Integration in die Gesamtsoftware oder bei Bedarf den Austausch. Ziel ist es, den Endkunden immer „best in class“ Systeme anbieten zu können. Unsere Funktionen basieren auf dem sehr erfolgreichen e.solutions Framework, das uns die verschiedenen Betriebssysteme abstrahiert und Interprozess-Kommunikation erlaubt. Nach Integration mit den anderen Bestandteilen des Infotainmentsystems erproben wir – typischerweise täglich – unsere Software in den firmeneigenen Erprobungsfahrzeugen, die durch unser sogenanntes „Flash-Team“ sowohl aufgebaut als auch aktuell gehalten werden. Fehler können wir damit umgehend identifizieren und zuordnen. Wir haben den Anspruch, ein Automotive-Serienprodukt ganzheitlich zu entwickeln und zu betreuen. Daher sind die Software-Integration, der Produktionssupport und auch die Analyse von Feldbeanstandungen weitere wichtige Aufgaben, die durch unsere Teams am Standort Ingolstadt abgedeckt werden.

Framework

Die Middleware – auch Software-Framework und bei der e.solutions „esoFramework“ genannt – bildet das Rückgrat jeder professionellen Softwareentwicklung im industriellen Maßstab. Das Framework ermöglicht die verteilte Entwicklung von Softwarekomponenten, die Sprach-, Betriebssystem- und Architektur-unabhängig sind. So können beispielsweise Komponenten aus der Simulation vom Desktop live mit Komponenten im Fahrzeug verbunden werden. Die Kommunikation der Komponenten untereinander kann zu Analysezwecken im Quelltext mitgeschnitten werden. Applikation können für den Fall eines Absturzes automatisch neu gestartet oder sogar im Betrieb durch neue Versionen ausgetauscht werden. e.solutions verfügt über eine eigene Embedded-Middleware-Lösung, die kontinuierlich weiterentwickelt wird und allen Projekten zugrunde liegt. Im Kern in C++ geschrieben, adaptiert das "esoFramework" auf alle eingesetzten Betriebssysteme, Prozessorarchitekturen, Sicherheitskonzepte und Programmiersprachen – von C/C++, Java, Python und Kotlin bis hin zu JavaScript. Das "esoFramework" bietet allen Applikationen Basis-Mechanismen zur Kommunikation, Überwachung, Persistierung, Logging etc. in das Embedded System. So kann man sich als Anwendungsentwickler auf das Wesentliche – nämlich den Applikations-Code – konzentrieren.