!! UNDER CONSTRUCTION !!
This project merges the requirments of Park-Distance-Control (DES04) and autonomous lane detection (ADS01) into a scalable open-source E/E Architecture.
The goal of this project is to enhance integrating a new embedded in-vehicle feature <Park Distance Control (PDC) system> and a new in-vehicle feature for ADAS Lane Keeping Assist System (LKA).
The PDC system utilizes ultrasonic sensors to detect the distance between the vehicle and any obstacles, and provide an response to the driver. In addition, the full stack feature development will be integrated into the existing Yocto image, creating a comprehensive and fully functional system.
Furthermore, the intersection of virtual simulations and real-world applications is used to enable mechanisms of the Lane Keeping Assist System (LKA), a pivotal Level 1 autonomous driving feature. Using advanced simulation platforms and hardware implement an LKAS that can operate both virtually and in the real world.
The following sections will provide further details on the technical requirements, system architecture, software design, implementation, results, and references for this project.
If you find any kinds of bugs or issues, please contact Kian, Jinghong, Seungwoo, Nikas👌🏽
The following videos demonstrate the features of the project.
The image below shows the centralized E/E architecture.
It is devided into two layers:
- Computing Layer
- Sensor Layer
In the Computing Layer, you will find the central computing Unit, the ADAS Unit and the Cloud-Connector Unit.
The Sensor Layer is sub-devided into Zones:
- Front Zone
- Central Zone
- Rear Zone
The Front Zone contains the PDC System.
The Central Zone contains the Drive-Train & Battery Control.
The Rear Zone contains the Speed Sensor System.
This repository is structured as followed.
apps
: submodules for the Computing Layer
image
: submodule for the Central Control Units Yocto image.sensors
: submodules for the Sensor Layer.
documentation
: Please see submodules README.md for detailed informations. Additional project documentation can be found here.
The following image gives a brief overview about the software structure that runs on the cars' system structure.
Each application serves a different functional purpose and uses different peripheral interfaces and devices.
BMWs' CommonAPI ensures the communication between the applications in the Computing Layer via Scalable Service-Oriented Middleware over IP (SOME/IP). It is easy to add more apps by using our CI/CD workflows for CommonAPI.
The rear zone controller feeds speed sensor messages to the cars' CAN Bus (interface 1).
The front zone controller feeds distance informations of a sonar o the cars' CAN Bus (interface 0).
The Central Computing Unit operates with a custom-made Yocto Image deployed on a Raspberry Pi4B.
The ADAS runs on a NVIDIA Jetson Nano.
The NVIDIA Jetson Nano is connected to the Raspberry Pi via Ethernet.
The development in each submodule is done individually by the assigned developer following the teams' project conventions.
The CI is done by the developers in the submodules.
Once a change is pushed to the main branch, the CI will be triggered.
The Meta Team2 submodule is the only submodule that has a CD workflow.
It fatches the latest changes from the submodules and builds the Yocto Image.
To roll out the software, the sensors' controller and the ECU needs to be flashed.
A OTA update is not implemented yet.
- Requirements Gathering:
- Planning Design, System & Software:
- Team Collaboration:
- Integration:
- Technologies: tbd.
- Apps & Sensors: see submdoules's README.md
- Technologies: tbd.
- Testing: