Treiberentwicklung für Datenfusion auf ARM Cortex-M4

Im Rahmen eines Robotik-Projektes wurden Protokolltreiber für die Schnittstellen eines STM32L476RG (ARM Cortex-M4) implementiert. Der STM32L4 zentralisiert die Datenverarbeitung/-fusion von Sensoren zur Eigenbewegungsschätzung, sowie die Steuerung von Aktoren (Servocontrolboard) und ist mit einem leistungsfähigeren Masterprozessor verbunden.
Zur besseren Verständlichkeit und Erweiterbarkeit der verwendeten Peripherie und deren Konfiguration wurde eine minimale Hardwareabstraktionsebene in C++17 entwickelt.
Für die parallele Verarbeitung der Daten mit unterschiedlicher Datenrate wird FreeRTOS als Task-Scheduler eingesetzt.

- Implementierung von I2C-Treiber für IMU und Odometrie
- Implementierung der UART-Schnittstelle für Logging
- Implementierung der ISP-Schnittstelle zum Masterprozessor
- Entwicklung eines Anwendungsspezifischen Protokolls
- Integration von minimalen FreeRTOS Task-Scheduleing
- Konfiguration von GPIOs für Taster und Status-LEDs
- Erstellen von Skripten (Bash, Python, Json) für Buildumgebung und CI
- Integration der Entwicklungsumgebung in Docker-Container
- Hardware: STM32L476RG (ARM Cortex-M4)
- Programmiersprachen: C, C++ 17

Test-/Simulationsumgebung für Kommunikations-Geräte.

Entwicklung einer Simulation für Kommunikations-Geräte unter Linux (Ubuntu 22.04) und Integration der Embedded-Softwarekomponenten. Die Schnittstellen der Softwarekomponenten auf dem Embedded-System (MPSoC) wurden anhand von Methoden der Interprozesskommunikation unter Linux implementiert und über eine Kommunikations-Middleware abstrahiert. Das Softwaredesign wurde in Enterprise Architect modelliert und aus dem Modell wurde Quellcode generiert.

Weitere Infos:
- Programmiersprachen: C++ 17, Python
- Entwicklungsumgebung: Visual Studio Code
- Softwarearchitektur: Modellbasierte Softwarearchitektur mit Quellcodegenerierung der Middleware
- Test-Framework: Catch2
- CI-Toolchain: GitLab

Modelbasierte Softwareentwicklung mit IBM Rhapsody

Modellierung einer Software zum Fehlermanagement auf einer zentralen Steuereinheit mit OpenSAFETY Netzwerkarchitektur. Modellierung der Testarchitektur basierend auf Rhapsody Test Conductor.

Automatisierung der Modultesterstellung über die Java API von Rhapsody.

Wartung und Debugging des generierten C++ Quellcodes.

Softwareentwicklung Middleware für Radardatenverabeitung

Implementierung einer modularen Softwarearchitektur mit generischer Schnittstelle zur Einbettung von AUTOSAR konformen Softwarekomponenten in Simulations- und Testumgebungen wie ADTF, ROS1 und ROS2.
Portierung von existierenden Basissoftwaremodulen und Algorithmen von ADTF nach ROS1 und ROS2. Weiterentwicklung und Wartung einer continuous integration pipeline basierend auf Jenkins, Github und CMake.

Softwareentwicklung: unter Windows und Linux
Softwarearchitektur: Enterprise Architect
Entwicklungsumgebung: Eclipse und Visual Studio Code
Test- und Simulationsumgebung: ADTF und ROS

3D-Grafikprogrammierung zur Darstellung von Radardaten

3D Grafikprogrammierung zur Darstellung der Radarsensordaten an verschiedenen Stellen in der Signalverarbeitungskette.
Verwendete Grafikbibliotheken sind OpenGL, GLSG und OSG (OpenSceneGraph)

Softwareentwicklung: unter Windows
Softwarearchitektur: Enterprise Architect
Entwicklungsumgebung: Visual Studio
Test- und Simulationsumgebung: ADTF (3D Scene Graph)

Softwareentwicklung Radardatenübertragung via Ethernet

Integration eines AUTOSAR konformen Ethernet Stack (COM, PDU, Socketadapter) auf dem Radarsensor.
Plattformübergreifende Softwareentwicklung einer Ethernet- Schnittstelle auf dem Datenlogger. (Socket-Programmierung für Win & Linux)

Softwareentwicklung: unter Windows und Linux
Softwarearchitektur: Enterprise Architect
Entwicklungsumgebung: Eclipse und Visual Studio Code
Test- und Simulationsumgebung: ADTF
Embedded System: Custom SoC based on ARMv7 (Cortex-R5)

Softwareentwicklung Eigenbewegungs-Schätzung

Entwicklung einer Softwarekomponente zur Eigenbewegungsschätzung anhand von Odometrie- und Gyrometriedaten.
Im Rahmen dieser Komponente programmierte ich Algorithmen für die Aufbereitung und Fusion der jeweiligen Fahrdynamiksignale.

Softwareentwicklung: unter Windows and Linux
Softwarearchitektur: Enterprise Architect
Entwicklungsumgebung: Visual Studio und VSCode
Test- und Simulationsumgebung: ADTF
Embedded System: Custom SoC based on ARMv7 (Cortex-R5)

Softwareentwicklung Fahrerassistenzfunktion ACC

Softwareentwicklung einer Simulationstoolkette für die Längsregelung der Fahrerassistenzfunktion ACC (Adaptive Cruise Control)

Softwareentwicklung: unter Windows
Softwarearchitektur: IBM Rhapsody
Entwicklungsumgebung: Visual Studio
Test- und Simulationsumgebung: Matlab/Simulink und CarMaker (IPG)

Embedded-Softwareentwicklung CAN-Bus

Embedded Softwareentwicklung einer parametrierbaren Schnittstelle zur Übertragung von Radarsensordaten über CAN.

Softwareentwicklung: unter Windows
Softwarearchitektur: IBM Rhapsody
Entwicklungsumgebung: Eclipse
Test- und Simulationsumgebung: CANoe
Embedded System: MPC5675K von NXP (32-bit Embedded
Controller for Advanced Driver Assistance Systems)

Embedded-Softwareentwicklung CAN-Bus

Embedded-Softwareentwicklung einer Softwarekomponente zur Fahrzeugvariantenkodierung über CAN-Bus.

Softwareentwicklung: unter Windows
Softwarearchitektur: IBM Rhapsody
Entwicklungsumgebung: Eclipse
Test- und Simulationsumgebung: CANoe
Embedded System: MPC5675K von NXP (32-bit Embedded
Controller for Advanced Driver Assistance Systems)

Portierung von Trackingalgorithmen

Portierung von Trackingalgorithmus und Funktion eines radarbasierten Spurwechselassistent.

Softwareentwicklung: unter Windows
Test- und Simulationsumgebung: MTS
Entwicklungsumgebung: Visual Studio

Portierung von Bildverarbeitungs-Algorithmen

Portierung von Bildverarbeitungsalgorithmen auf steuergerätenahen, intern parallel arbeitenden SOC der Firma NEC, der sowohl im SIMD- als auch im MIMD-Modus betrieben werden konnte.

Softwareentwicklung: unter Windows
Entwicklungsumgebung: Visual Studio und Eclipse
Test- und Simulationsumgebung: ADTF