1. Introduction

1.1. Purpose

The SODA.Sim is an OpenSource vehicle simulator for vehicle systems and environment simulation as a part of vehicle research and development activities, prototyping, design and architecture review, testing, training and education

The SODA.Sim serves as a comprehensive automotive simulation tool designed to meticulously emulate the internal systems of a vehicle and their interaction with dynamic external virtual environments.

The SODA.Sim is a plugin (and set of plugins) for Unreal Engine that turns Unreal Engine into a vehicle simulator tool.

1.2. Base Features

  • Vehicle Digital Twin

    • Vehicle Digital Twin Framework: This tool adopts a ‘component-based’ methodology where a vehicle is perceived as an assembly of small, autonomous units termed ‘components’. These components can signify actual devices such as lidar or transmission systems, or embody algorithms, such as Advanced Driver Assistance (AD). Leveraging this approach, you can swiftly construct a vehicle model by merging pre-defined components or developed new. This component-centric method facilitates a seamless transition between Software-in-the-Loop (SIL) and Hardware-in-the-Loop (HIL) vehicle simulation, provided that the SODA.Sim is amalgamated with an appropriate HIL device. This transition can be accomplished by merely substituting a virtual component with a physical counterpart, negating the need to modify other sectors of the vehicle model. This not only preserves the integrity of your simulation but also enhances the efficiency and adaptability of your project.

    • DDS (Data Distribution Service) for SIL (Software in the Loop) [Coming Soon]: A connectivity framework that serves as the “glue” between all vehicle components and the physical body of the vehicle. Provides virtualization of CAN/LIN buses, digital and analog input/outputs ports, mechanisms for synchronizing vehicle components, logging, etc.

    • Vehicle Component Library: A vast library of components (+60 items now) at your fingertips, allowing for a wide range of customization. Includes a lot of abstract and vender specific sensors (Lidars, Radars, IMU, GPS, Cameras, Fisheye Cameras), ECU controllers, mechanicals componenst and imitators, etc.

    • Visual Vehicle Assembly Tool: Intuitively design and visualize your vehicle configurations.

    • Save and Retrieve Vehicle Configurations: Effortlessly save and load different vehicle setups.

    • Abstract Physics-Based Vehicle Chassis: Connect various physics engines and vehicle models to simulate vehicle physics. Now included 3 - the chaos, the chrono and 2D.

    • CAN Serializer/Deserializer Tools: Allows to simplify the problems of serialization and deserialization of CAN messages based on the DBC file format. Two approaches are proposed - realtime parsing of DBC and C++ code generation.

    • Virtual and Real CAN Bus Integration: Simulate or connect to real CAN bus networks effortlessly.

    • Augmented Reality: Drive a real vehicle in a virtual space.

    • Simulink Model Importing [Coming Soon]: Develop vehicle components using Simulink and add them to the general vehicle components library.

  • Hardware-In-Loop (HIL) Simulation

    • Soda.HIL Analog/Digital I/O and CAN Multiplexer [Coming Soon]: A toolset designed for versatile HIL simulations.

    • FPD-Link Interface: Ensures smooth interfacing within the simulation environment. Based on proFRAME camera adapter.

    • Support of USB-CAN adapters: PCAN, Kvaser, SockenCAN, CAN via Ethernet.

  • Scenario Design and Editing

    • Visual Scenario Scripting Tool: Create and edit scenarios visually, enhancing your workflow efficiency.

    • Visual Level Editor: Facilitate the design and customization of different levels with a visual editor.

    • Realtime Python Scripts [Coming Soon]: Create more powerful scenario in Python.

    • City Traffic Generation based on the Summo [Coming Soon] .

    • Racing AI [Coming Soon]: Built-in AI for creating racing bots

    • The OpenScenario support [Coming Soon].

  • CI and Automated Testing (part of Soda.Validate) [Coming Soon].

    • Automated Test Orchestrator and Scheduler: Schedule and manage tests automatically, saving time and reducing errors.

    • Test Rule Base: Establish and utilize a rule base for effective testing.

    • Report Generation: Easily generate comprehensive reports post-testing.

    • Web Interface: Access and manage your tests through a user-friendly web interface.

  • Remote Database Functionality

    • Vehicle Configuration Storage and Retrieval: Save and retrieve different vehicle configurations remotely.

    • Scenario Storage and Retrieval: Save and load different scenarios.

    • Dataset Recording: Easily record and analyze various data during simulations.

  • Environment, Maps, and Assets

    • Ready-to-Use Map Sets: Access a collection of ready-to-use maps for immediate utilization in your simulations for diffrent AD/ADS usecase.

    • A unified scenario library accessible and executed by the entire community [Coming Soon]

  • Other Features

    • Driver AI Integration: Incorporates AI capabilities to simulate realistic driver behavior.

    • Vehicle-to-Vehicle and Vehicle-to-Infrastructure Connectivity: Facilitate communication between vehicles and infrastructure seamlessly.

    • Modular and Plugin Architecture: Leverage the benefits of a flexible and expandable software architecture.

    • Support for Non-Real-Time Simulation: Conduct simulations at different speeds (faster or slower than real time).

    • Distributed simulation [Coming Soon]. Parallelization of simulation on multiple computers to simulate more sensors.

    • Remote Control API based on C++/Blueprint code reflection: Easily integrate and control the simulation remotely through the API based on UnrealEngine Remote Control API. Any new C++/Blueprint class will be accessed through the API automatically without any additional development to support it in the API.

    • UI generated based on C++/Blueprint code reflection. Any new vehicle component of an actor will be automatically accessed in the UI with all its properties without any additional development of the UI.

    • Scene Save/Load template. A universal approach that allows to serialize/deserialize a scene and then load and save it. Also it include UI elements.

    • Integration with ROS/ROS2 [Coming Soon]