lalywr2000 / In-Vehicle-Infotainment

In-Vehicle-Infotainment system for the PiRacer vehicle using Raspberry Pi4, Qt, and COVESA's vsomeip for IPC, all within a Yocto-based operating system.

Home Page:https://github.com/SEA-ME-COSS/In-Vehicle-Infotainment.git

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

In-Vehicle Infotainment


Result

DEMO_Video.mp4

If you want to check out more clearly, click me!

Introduction

Yocto Logo Qt Logo Covesa Logo

This repository presents of developing the In-Vehicle-Infotainment system for the PiRacer vehicle. Through the design of IPC mechanisms, it enables the implementation of functionalities on a Raspberry Pi4 that closely resemble those found in a real vehicle.

This project is the final compilation of the 'DES Project’. The 'DES Project' stands for Distributed Embedded Systems. The main focus of this In-Vehicle Infotainment project is to create an infotainment system in an environment similar to an actual vehicle using Qt, an embedded GUI development application, and COVESA's vsomeip, an IPC that conforms to the AUTOSAR standard. An essential challenge in this endeavor is to ensure that all of these interactions occur within an operating system developed based on Yocto.

Therefore, if you want to precisely follow this project, you need to have the exact hardware setup ready and proceed according to the instructions on the meta-infotainment page. Once you've done this, you should burn the final image onto an SD card. By doing so, you too can experience and use our project!

Architecture

software_architecture

Setting

Requirements

Detailed information regarding setup and configuration can be found within the settings folder. Following the content within this folder should allow you to reproduce the test environment we have implemented.

Below are the specifications of the hardware used in the project.

Raspberry Pi 4B

  • 2-Channel CAN-BUS(FD) Shield (MCP2518FD)
  • PiRacer AI Kit (PiRacer Standard)
  • 7.9inch DSI LCD (400 x 1280)
  • 7inch HDMI LCD (H) (1028 x 600)
  • Gamepad controller

Arduino UNO

  • CAN-BUS Shield V2.0 (MCP2515)
  • IR infrared Speed Sensor (LM393)
  • Raspberry Pi 4 Camera
  • Arduino ultrasonic sensor (HY-SRF05)

hardware_architecture

Usage

To run it on a Yocto-based OS go to our meta-infotainment repo.

Additionally, for executing it on Raspbian OS after setting, use the following code:

mkdir build
cd build
cmake ..
make
./IPCManager

Key Concept

Qt

Brief on Qt

  • Qt is a cross-platform C++ framework used for developing both GUI and non-GUI applications. It is popular for creating applications that can run on various operating systems and includes modules for networking, databases, and graphics.

Brief on Qt Compositor

  • Qt Compositor, part of the Qt framework, is used for developing Wayland compositors. It enables developers to create their custom compositors for managing application windows on the screen, integrating well with Qt's robust graphics capabilities.

Why Qt Compositor for Headunit Development

  1. Modularity: Enables handling each application as an independent window, simplifying the addition or removal of applications.
  2. Independent Development: Facilitates developing applications separately and integrating them smoothly.
  3. Enhanced User Experience: Supports seamless transitions and interactions between applications, vital for driver-focused systems.
  4. Resource Efficiency: Offers efficient resource management, essential in the resource-constrained environment of automotive systems.

These strengths of Qt Compositor make it an ideal choice for developing sophisticated and responsive headunit systems.

vSomeIP & CommonAPI

vSomeIP

  • The SOME/IP protocol is a standard IPC within AUTOSAR, and vSomeIP is its open-source implementation.

  • vSomeIP supports features like service discovery, service-oriented communication, and event notification, making it suitable for complex automotive systems that require reliable and scalable communication solutions.

CommonAPI

  • CommonAPI is one of the developments by the GENIVI Alliance to standardize middleware communication in automotive software.

  • It provides an advanced C++ API for developing applications that communicate between various middleware systems within vehicles, such as SOME/IP, DBus, and others.

  • CommonAPI abstracts the underlying communication mechanisms, allowing developers to focus on the application logic without worrying about the details of the communication protocols.

vSomeIP and CommonAPI are crucial parts of modern automotive software architecture, enabling efficient and standardized communication in complex vehicle systems. We have chosen these IPCs for implementing vehicle communication on Raspberry Pi.

Yocto Project

  • The Yocto Project is an open-source project designed to create custom Linux-based operating system /media.

  • This project assists developers in easily creating Linux distributions tailored for specific hardware. This enables the development of customized Linux environments suitable for a wide range of platforms including IoT (Internet of Things) devices, embedded systems, automotive applications, and mobile phones.

We have utilized the Yocto Project to develop a Linux environment optimized for our IVI (In-Vehicle Infotainment) application. We then created a single image from this environment, making it easily accessible for anyone to download and use this optimized Linux image.

References

Shield: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

About

In-Vehicle-Infotainment system for the PiRacer vehicle using Raspberry Pi4, Qt, and COVESA's vsomeip for IPC, all within a Yocto-based operating system.

https://github.com/SEA-ME-COSS/In-Vehicle-Infotainment.git

License:Creative Commons Attribution Share Alike 4.0 International


Languages

Language:C++ 86.1%Language:QML 9.0%Language:Shell 2.0%Language:CMake 2.0%Language:C 0.8%