This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

About Velocitas

Explore the goal, benefits and basic concepts of Eclipse Velocitas™

Problem

Currently, the development of in-vehicle applications (Vehicle Apps) can be excessively complex and challenging:

time.png

Many time-consuming steps involved from setting up the development environment to the deployment of a Vehicle App.

knowledge.png

Understanding the vehicle’s E/E architecture details and specific API requires expert knowledge.

porting.png

Porting a Vehicle App to another vehicle platform is complex.

collab.png

Specific processes, methods, and tools within each company creates challenges for effective collaboration.

Solution

The solution would be a development toolchain for creating vehicle-independent applications with:

unified.png

Usage of standardized vehicle APIs.

containerization.png

Enabling portability through containerized Vehicle Apps with no dependencies to E/E architecture.

setup.png

Pre-configured project setup​.

simulation.png

Speeding up the development by reducing complexity focus on differentiating business logic to innovate quickly.

Product

Eclipse Velocitas™ is an open source project providing an end-to-end, scalable and modular development tool chain to create containerized Vehicle Apps, offering a comfortable, fast and efficient development experience to increase the speed of a development team (velocity).

Features

  • Project lifecycle management to update Vehicle App repositories via CLI.
  • Vehicle abstraction support helps to focus on business logic by using a generated vehicle model on code level with type safety and auto-completion. The vehicle model is generated from a standardized API that hides the details of vehicle-specific signals and E/E architecture, allowing Vehicle Apps to be portable across different electronics and software architectures.
  • Microsoft Visual Studio Code integration with DevContainer helps to install everything required to start the local development immediately, while tasks and launch configurations help to launch runtime services, other apps, and tests.
  • Vehicle App skeleton and examples helps to understand easily how to write a Vehicle App using the KUKSA runtime services.
  • Ready-to-use CI/CD workflows that build (for multi architectures), test, document and deploy a containerized Vehicle App with no dependencies to E/E architecture help saving setup time.

Language Support

Feature Python C++
Project lifecycle management + +
Vehicle abstraction support + +
Visual Studio Code integration + +
Vehicle App skeleton and examples + +
CI/CD workflows + +
Unit test support + +
Integration test support +
digital.auto integration +

Concepts

1 - Use Cases

Is Velocitas for me? How does Velocitas help?

Velocitas offers a scalable and modular development toolchain for creating containerized Vehicle Apps that offers an easy to use, fast and efficient development experience to increase the velocity of your development team.

Vehicle Apps are implemented on top of a Vehicle Model (which is generated from the underlying semantic models like VSS for a concrete programming language) and its underlying language-specific SDK to provide headless comfort functions or connected application functions like Seat Adjuster, Dog Mode, Trunk Delivery or Data Logging & triggering.

use_case

Examples

1.1 - Seat Adjuster

Provides option to request a new seat position and to publish the current seat position

In the scenario of a car sharing company, the goal is to provide the functionality of automatically adjusting the driver’s seat position based on their preferred settings stored in their profile. When the driver unlocks the car, a request is sent to the vehicle to retrieve the preferred seat position. This is where your implementation begins.

The Seat Adjuster Vehicle App receives a MQTT message containing the seat position, which then triggers a seat adjustment command through the Seat Service to change the seat position. Additionally, to ensure convenience for future trips, the car sharing company saves the driver’s preferred seat position and utilizes it accordingly. The Seat Adjuster Vehicle App subscribes to the seat position, receiving updates from the Databroker, which streams data from the Seat Service.

Requesting new seat position

seat_adjuster_dataflow_1

  1. The Customer requests the change of the seat position as MQTT message on the topic seatadjuster/setPosition/request with the payload:

    {"requestId": 42, "position": 300}
    
  2. The Seat Adjuster Vehicle App that has subscribed to this topic, receives the request to change the seat position as a MQTT message.

  3. The Seat Adjuster Vehicle App gets the current vehicle speed from the Databroker, which is fed by the CAN Provider (KUKSA CAN Provider).

  4. With the support of the Vehicle App SDK, the Seat Adjuster Vehicle App triggers a seat adjustment command of the Seat Service via gRPC in the event that the speed is equal to zero. Hint: This is a helpful convenience check but not a safety check.

  5. The Seat Service moves the seat to the new position via CAN messages.

  6. The Seat Service returns OK or an error code as gRPC status to the Seat Adjuster Vehicle App.

  7. If everything went well, the Seat Adjuster Vehicle App returns a success message for the topic seatadjuster/setPosition/response with the payload:

    {"requestId": 42, "status": 0 }
    

    Otherwise, an error message will be returned:

    {"requestId": 42, "status": 1, "message": "<error message>" }
    
  8. This success or error message will be returned to the Customer.

Publishing current seat position

seat_adjuster_dataflow_2

  1. If the seat position will be changed by the driver, the new seat position will be sent to the Seat Service via CAN.

  2. The Seat Service streams the seat position via gRPC to the KUKSA Databroker since it was registered beforehand.

  3. The Seat Adjuster Vehicle App that subscribed to the seat position receives the new seat position from the KUKSA Databroker as a result.

  4. The Seat Adjuster Vehicle App publishes this on topic seatadjuster/currentPosition with the payload:

    {"position": 350}
    
  5. The Customer who has subscribed to this topic retrieves the new seat position and can store this position to use it for the next trip.

Example Code

You can find an example implementation of a Seat Adjuster Vehicle App here: Seat Adjuster

1.2 - Dog Mode

Climate control app that allows drivers to leave their vehicles while keeping the air conditioning system of the vehicle active for their pets.

The Dog Mode Vehicle App consists of the following key features:

  • Request the vehicle’s Heating, Ventilation, and Air Conditioning (HVAC) service to turn the Air Conditioning (AC) ON/OFF
  • The driver can adjust the temperature for a specific degree
  • The Vehicle App observe the current temperature and the battery’s state of charge and react accordingly
  • The driver/owner will be notified whenever the state of the charge drops below a certain value

Example Code

You can find an example implementation of a dog mode Vehicle App here: Dog Mode

2 - Repository Overview

The repositories of the Eclipse Velocitas and their relations between each other

Project Overview

Repository Description
vehicle-app-python-template GitHub Template repository contains an exemplary Vehicle App that uses an exemplary SDK to provide access to vehicle data points and methods. The sample SDK extends the sdv-vehicle-app-python-sdk. In addition the template repository contains the development environment for Visual Studio Code for a Vehicle App as well as the CI/CD workflows that can be used as blueprint for your own Vehicle App written in Python.
vehicle-app-python-sdk Provides basic functionality to write a SDK to allow access to vehicle data points and method. This includes publishing & subscribe messaging, VehicleApp API, vehicle data model ontology and function-based query & rule support.
vehicle-model-python Basic vehicle model for Python is generated from VSS with addition of some specialized vehicle services.
vehicle-app-cpp-template GitHub Template repository contains an exemplary Vehicle App that uses an exemplary SDK to provide access to vehicle data points and methods. The sample SDK extends the sdv-vehicle-app-cpp-sdk. In addition the template repository contains the development environment for Visual Studio Code for a Vehicle App as well as the CI/CD workflows that can be used as blueprint for your own Vehicle App written in C++.
vehicle-app-cpp-sdk Provides basic functionality to write a SDK to allow access to vehicle data points and method. This includes publishing & subscribe messaging, VehicleApp API, vehicle data model ontology and function-based query & rule support.
vehicle-model-cpp Basic vehicle model for C++ is generated from VSS with addition of some specialized vehicle services.
kuksa-databroker Is a part of the Vehicle Abstraction Layer (VAL) of the Eclipse KUKSA project and provides the KUKSA Databroker. The KUKSA Databroker offers data points available in the vehicle to the Vehicle Apps semantically aligned to a data model like the Vehicle Signal Specification (VSS) .
kuksa-can-provider The KUKSA CAN Provider is a generic data feeder that reads data from the vehicle’s CAN bus defined by a DBC file, maps them to a set of data points (e.g. according to the VSS) and feeds it into the Databroker.
kuksa-incubation Provides exemplary vehicle services and respective implementations that illustrates how to interact with in-vehicle components and services via an unified access.
release-documentation-action GitHub Action to generate a release documentation from the CI workflow output by rendering it to markdown files so that this can be easily published with GitHub Pages.
license-check GitHub Action to collect the licenses of the used components and can be configured to fail with an error message on invalid licenses.
vehicle-model-generator Provides basic functionality to create a vehicle model from the given vspec specification for the target programming
cli The CLI implements Velocitas lifecyle management concept of the development environment of a Vehicle App. It allows us to take care of the development environment while you focus on the business logic of your Vehicle App.
devcontainer-base-images Central configuration to create base docker images for specific languages to be used in devcontainer

Package Repositories

Repository Description
devenv-runtimes Central configuration for maintained runtime services
devenv-devcontainer-setup Central configuration for setting up devcontainer environment
devenv-github-workflows Central configuration for syncing github workflows
devenv-github-templates Central configuration for syncing github templates
devenv-runtime-local Central configuration for local runtime execution (deprecated)
devenv-runtime-k3d Central configuration for k3d runtime execution (deprecated)