Historically, the automotive industry has had a strong focus on vehicle hardware development and life cycle management. Software, however, is gaining more and more importance in the production of vehicles. In fact, software increasingly defines a vehicle’s features and its value to customers.
This transition towards a software-defined vehicle has changed how companies innovate, code, collaborate, and ultimately deliver software. It is a change across the whole mobility value chain and life cycle that is impacting the creation of new features, development and delivery processes, and in-vehicle operations.
Eclipse Velocitas, as part of the Eclipse Software Defined Vehicle Working Group (SDV), provides a tool chain for the development of in-vehicle applications (Vehicle Apps), making the developer experience more comfortable and allowing for faster and more efficient development. And we’re always looking to improve it.
Velocitas Programming Model Provides Easy-to-Use APIs and SDKs
One of the main ways Velocitas has made Vehicle App development faster and easier is the innovative programming model it defines. This model provides developers with easy-to-use APIs and SDKs for popular programming languages, such as Python and C++.
Figure 1: Vehicle Apps Using Vehicle API of Vehicle Abstraction Layer
Developers can access vehicle data simply by using instructions like `vehicle.Speed.get()` (Figure 1) while enjoying other perks of a modern IDE, such as automatic code completion (IntelliSense).
The Eclipse Velocitas programming model also simplifies the development of Vehicle Apps, enables reuse of code, and accelerates the onboarding of developers to new projects.
Model Built on Four Components
Our programming model provides a reusable Vehicle App Template for the different programming languages. This template comes prepared with the Vehicle App SDK and Vehicle Model to access the Vehicle Abstraction Layer (Figure 2).
Figure 2: Eclipse Velocitas’ Programming Model
Each of Velocitas’ four components provide different benefits:
- The Vehicle App Template enables quick setup of a Vehicle App project for the supported programming languages (e.g., Python and C++), including a sample Vehicle App, GitHub CI/CD workflows, and comfortable setup of the development environment and tools.
- The Vehicle App SDK covers some functions necessary for the Vehicle Abstraction API, such as subscribing to datapoint value updates and service invocation. In addition, it enables middleware integration for the Vehicle App, provides connectivity to the Vehicle Data Broker, and contains the necessary ontology, in the form of base classes, to create Vehicle Models.
- The Vehicle Model makes it easy to get vehicle data from the Vehicle Data Broker and to execute function calls against Vehicle Services and other Vehicle Apps. It is generated from the underlying semantic models for a concrete programming language. The base elements of the vehicle models are defined by the SDKs.
- The Vehicle Abstraction Layer simplifies vehicle data retrieval from the Vehicle Data Broker. It also makes it easy to execute function calls against Vehicle Services and other Vehicle Apps. It is generated from the underlying semantic models for a concrete programming language. The base elements of the vehicle models are defined by the SDKs.
Further Enhancement Via Integration With Digital.Auto
Building on this foundation, we’ve further enhanced the developer experience by integrating the Digital.Auto project with Velocitas. The web-based digital.auto.playground offers a rapid prototyping environment to explore and validate ideas of a Vehicle App early in the process. Developers can interact with different vehicle sensors and actuators via standardized APIs specified by the COVESA Vehicle Signal Specification without having to set up anything upfront. This provides opportunities to:
- Browse, navigate, and enhance vehicle signals (sensors, actuators, and branches) in the Vehicle API Catalogue, which is mapped to a 3D model of the vehicle
- Build Vehicle App prototypes in the browser using Python and the Vehicle API Catalogue
- Test a Vehicle App prototype in a dashboard in the browser with 3D animation for API calls
- Create new plugins, which usually represent UX widgets or remote server communication, to enhance the vehicle mock-up experience in the playground
- Collect and evaluate user feedback to prioritize a development portfolio
This integration with Digital.Auto allows Eclipse Velocitas to bridge the gap between rapid prototype generation and real Vehicle App development by providing a project generator. The project generator is available as a new feature in the “Code” section of the digital.auto playground. Users simply grant permission to create a new GitHub repository in their organization, enter a repository name, and the generator will create a new GitHub repository based on the Velocitas Vehicle App template. Prototype code will be instantly available as a Velocitas Vehicle App. This includes a so-called `devContainer` that contains a fully configured development environment inside of Visual Studio Code. With this, users can immediately start to develop and test a Vehicle App.
In addition, the newly created repository includes a ready-to-use CI/CD pipeline leveraging GitHub Actions workflows, which automatically builds, scans, and tests the Vehicle App on every push. The process includes creating a container that will be stored in the GitHub container registry. This provides a great starting point to test the interaction with the Vehicle Abstraction Layer in a container environment, allowing developers to focus on finding solutions without spending a lot of unproductive time on tedious setup and configuration tasks (Figure 3).
Figure 3: CI/CD Pipeline
Get Started and Give Us Your Feedback
If you’d like to get started using Digital.Auto, you can find a detailed explanation of how to do that and how to run a project generator in our Velocitas documentation. This integration is still pretty new, so we’re really looking for feedback from the community.
If you’re interested in getting involved or offering feedback, ideas, or feature requests, check out our website for more information.