ADTF
Loading...
Searching...
No Matches
Overview

Description

ADTF (Automotive Data and Time-Triggered Framework) is a framework and toolset for the development, validation, visualization and test of driver assistance and autonomous driving features that includes the latest technology.

It was designed as a Rapid Prototyping Toolset, Simulation Framework and Test- and Measurement Tool, can be a zero-copy middleware or adapt to other transport layers as gateway to fulfill following main use cases:

  • Reuse of software components in real and virtual environments
  • Development of plug-and-play software and easy integration of your specific hardware
  • Using the same software across different platforms
  • Prototyping of automotive functions
  • Providing essential communication definitions and interfaces
  • Building fully automated and highly scalable software solutions and cloud (post-)processing
  • Utilization of automotive standards such as CAN, CAN FD, FlexRay, XCP, Some/IP, Automotive Ethernet / AUTOSAR
  • Capture and process bus communication, cameras, LiDAR, radar and other data
Remarks
You already have created ADTF Sessions with ADTF <= 3.20 or <= 3.23 ?
Please have a look at our migration guide.

Please have a look at Release Notes.

Architecture

The architecture documentation provides a general deep dive, concepts and insights.

Content

The delivery is separated in two packages:

  • adtf - Runtime package for base usage like launching and controlling ADTF Sessions.
  • adtf_sdk - Developer package for creating own ADTF tools, filters, services, streaming sources and sinks.

ADTF Package

Following components are delivered within the adtf package.

The tools and plugins are located in the bin folder, for scripts and sessions please have a deeper look at the examples folder.

Runtime Tools

Tool Description
adtf_launcher Use this CLI tool to launch an ADTF Session (or system/graph combinations).
adtf_control Use this CLI tool to remote control an ADTF Session (ADTF Launcher).
adtf_config_tool Use this CLI tool to create and edit ADTF Sessions related files (graphs, system, properties).

Redeployed Tools

Tool Description
adtf_dattool Use this extendable CLI tool to access .adtfdat files and other container formats for reading, writing and processing containing streams.
licenser_tool Use this CLI tool for activating/deactivating/inspecting license keys and files.

Basic components

Component Description
Sample Stream Provides a usable implementation of the adtf::streaming::cSampleStream.
Binding Proxy Provides the opportunity to connect an adtf::streaming::IBindingServer with an adtf::streaming::IBindingClient.

Active Runners

Component Description
Timer Runner Use this active runner to create a thread in which all connected runners of filters and streaming services will be triggered and executed in a periodic manner at a specified interval.
Thread Runner Use this active runner to create a thread in which all connected runners of filters and streaming services will be triggered and executed, by default, repeatedly without any delay.
RPC Runner Use this active runner to send a trigger to connected runners by using RPC interfaces.

Playback & Recording

Component Description
Player Use this streaming source to play back measurement data from ADTF 3 .adtfdat files and other container formats.
Recorder Use this streaming sink to store the measurement data on the hard disk in .adtfdat files.

Interprocess Communication

Component Description
IPC Host Only Receiver Use this streaming source to receive sample data from another local ADTF Session using Unix Sockets on Linux and Pipes on Windows.
IPC Host Only Sender Use this streaming sink to transmit sample data to another local ADTF Session using Unix Sockets on Linux and Pipes on Windows.
IPC TCP Receiver Use this streaming source to receive sample data from another ADTF Session using TCP protocol.
IPC TCP Sender Use this streaming sink to transmit sample data to another ADTF Session using TCP protocol.
IPC UDP Receiver Use this streaming source to receive sample data from another ADTF Session using UDP protocol.
IPC UDP Sender Use this streaming sink to transmit sample data to another ADTF Session using UDP protocol.
IPC UDP Multicast Receiver se this streaming source to receive sample data from another ADTF Session using UDP multicast protocol.
IPC UDP Multicast Sender Use this streaming sink to transmit sample data to another ADTF Session using UDP multicast protocol.
IPC SCTP Receiver [Linux only] Use this streaming source to receive sample data from another ADTF Session using SCTP protocol.
IPC SCTP Sender [Linux only]Use this streaming sink to transmit sample data to another ADTF Session using SCTP protocol.
TCP Receiver From Non-ADTF Application Use this streaming source to receive sample data from a Non-ADTF Application using the TCP protocol.
TCP Sender To Non-ADTF Application Use this streaming sink to transmit sample data to a Non-ADTF Application using the TCP protocol.
UDP Receiver From Non-ADTF Application Use this streaming source to receive sample data from a Non-ADTF Application using the UDP protocol.
UDP Sender To Non-ADTF Application Use this streaming sink to transmit sample data to a Non-ADTF Application using the UDP protocol.

Common Utilities

Component Description
DDL Mapper Use this filter to map, convert and transform DDL described data streams between different structures.
Media Description Data Generator Use this filter to generate random values for a specified Media Description structure.
Sample Stream Merger Use this filter to merge multiple sample streams of the same type onto one output.
Media Description Dumper Use this filter to print the sampla data of a received input.
Sample Time Gate Use this filter to hold back samples / stream type changes until they are not in the future regarding the stream time anymore.
Subsampler Use this filter to perform subsampling of (sub)streams based on a maximum output sample rate.
TimeStamp Synchronizer Use this filter to sort incoming samples according to their timestamp in live setups. For playback, please use the builtin sorted_by_timestamps reader of the Player.

Substreams Utilities

Component Description
Substream Assembler Use this filter to take samples from multiple inputs and forwards them via substreams on one output.
Substream Dissector Use this filter to dissects the input samples into seperate substreams that provide the data of the individual elements.
Substream Merger Use this filter to take substreams from multiple inputs and forwards them via substreams on one output.
Substream Reducer Use this filter to output only a subset of the incoming substreams from the input sample stream.
Substream Requestor Use this filter to request ALL substreams provided on the connected sample stream.
Substream Selector Use this special sample stream implementation to filter stream types and samples of a specific substream.
Substream Dumper Use this filter to dump data of all samples of all available substreams.
Substream Element Dumper Use this filter to dump a single element of a specific substream.

Threading Utilities

Component Description
Thread Dispatcher Use this filter to dispatch/distribute processing of sets of input samples/triggers to multiple threads.
Thread Invoker Use this filter to forward/process triggers asynchronously.
Thread Mapper Use this filter to map processing of an input onto multiple threads.
Thread Reducer Use this filter to trigger when all inputs have triggered at least once.

Monitoring Utilities

Component Description
Sample Stream Trace Statistics Use this streaming source to get information about data rates and more for further processing, i.e. assessment, recording or visualization.
Log Messages Use this streaming source to get the ADTF Log as samples for further processing, i.e. assessment or recording.
System Status Use this streaming source to get CPU and memory information as samples for further processing, i.e. assessment or recording.

Additional functionality

Component Description
Reference Clock Service Use this service to extend the ADTF Session with a system wide reference clock.
Kernel Service Use this service to extend the ADTF Session with a system independent thread and timing support.
Playback Service Use this service to extend the ADTF Session with playback support for ADTF 3.x .adtfdat files and other container formats.
Clock Synchronization Service Use this service to extend the ADTF Session with a RPC Interface to synchronize the local clock with that of a remote system.
Memory Allocator Service Use this service to extend the ADTF Session with pre-allocation sample buffers.
Sample Pool Service Use this service to extend the ADTF Session with pre-allocation for a set of samples.

EOL

Component Description
(Legacy) ADTF File Support Service This is a dummy service to ensure compatibility with older system files. The service implementation has moved to the adtf core plugin.
(Legacy) Sample Stream Provides a legacy implementation of the adtf::streaming::cSampleStream that will forward all triggers by default and exists solely for compatibility reasons.
(Legacy) Sample Stream Tracer Service This is a dummy service to ensure compatibility with older system files. The service implementation has moved to the adtf core plugin.
(Deprecated) Media Description Service This service is deprecated. Use this service to extend the ADTF Session to provide DDL described structures from .description files for samples and signals.
(Deprecated) Signal Registry Service This service is deprecated, please use the Qt5 Stream Display instead. Use this service to extend the ADTF System with a distributed publisher-subscriber model for floating-point signals.
(Deprecated) Signal Provider This filter is deprecated, please use the Qt5 Stream Display instead. Use this filter to provide data/signals from sample streams / substreams via the (Deprecated) Signal Registry Service.

Example Scripts

Script Description
demo_script_adtf_control Shows how to use ADTF Control with Python for scripting automization.
demo_script_adtf_config_tool Shows how to use ADTF Config Tool with Python for scripting automization.

Example Sessions

Please have a look at the examples folder within the package for an example ADTF project and sessions showing the main functionality provided by the binaries within this delivery.

ADTF SDK Package

Following components are delivered within the adtf_sdk package.

The libraries are located in the pkg folder, for demo source codes please have a deeper look at the examples folder.

Libraries

Library Description
base Provides interfaces and definitions for all other SDK package, i.e. base types, error codes and more.
filter Provides interfaces and definitions to create and test graph components like filters and streaming services.
mediadescription Provides interfaces and definitions like stream types and more to enhance the plain external DDL library with ADTF specific content.
remote Provides interfaces to remotely access the ADTF Session (ADTF Launcher), i.e. to control session, player, recorder and more.
streaming Provides interfaces and definitions for data streaming and runtime behavior used within graph components.
system Provides interfaces and definitions to create and test services to extend runtime functionality.
testing Provides interfaces and definitions to create and execute unit and integration tests for ADTF plugins.
ucom Provides interfaces and definitions for communication across binary borders, binary compatibility and the runtime.

Redeployed Libraries

Library Description
adtf_file_library This package provides a C++ SDK and tooling to read/write/process adtfdat files and other container formats.
dev_essential This package provides libraries for many common tasks in C++, i.e. Data Definition Language (DDL), Remote Procedure Call (RPC).

Programming Examples

Example Description
adtf_ipc_integration Shows how to integrate the IPC mechanism into non-ADTF applications.
communication_with_foreign_application Shows how to create a device by integrating a 3rd party library.
demo_code_generation Shows how to create samples from a media description file.
demo_custom_stream_type Shows how to create own stream meta types.
demo_data_load_generator Shows how to implement a streaming source to produce traffic.
demo_data_trigger Shows how to implement a filter which is triggered by input pins.
demo_description_generation Shows how to create samples from a C++ header file.
demo_dynamic_properties Shows how to use dynamic properties.
demo_interface_binding Shows how to share functionality between filters.
demo_interface_source Shows how to create an interface client.
demo_requestable_substream_filter Shows how to handle incoming substream requests.
demo_rpc Shows how to access the rpc interfaces.
demo_sample_data_reference Shows how to process samples with zero-copy.
demo_string_handling Shows how to transmit and receive samples containing strings.
demo_substream_generator Shows how to create substreams.
demo_thread_trigger Shows how to implement a filter which is triggered by a Thread Runner.
demo_time_trigger Shows how to implement a filter which is triggered by a Timer Runner.
demo_user_defined_properties Shows how to create own data types.
demo_virtual_clock Shows how to create samples containing images.
media_description_data_generator Shows how to create samples provided by the (Deprecated) Media Description Service.
media_description_dumper Shows how to access incoming samples.
substream_dumper Shows how to access incoming substreams.
substream_element_dumper Shows how to access members of incoming substreams.
timestamp_synchronizer Shows how to access the timestamps of incoming samples.

System requirements

Remarks

Note
We can only support development setups for all platforms in combination with using cmake. We recommend using it combination with conan as well.
Warning
Mixing adtfplugins build with different build types (e.g. optimzed like RelWithDebInfo and non-optimized Debug) will work propably as far as their dependencies and (3rd party) ABI will fit as well. This can lead to trouble for example using a Debug adtfplugin consuming e.g. Qt (Debug) but try to load it within a Release ADTF Launcher consuming Qt (RelWithDebInfo). This won't work and could not be supported !

Hardware requirements

A hardware requirement specification always has to differ between following two basic questions:

  • What is the required hardware to reach a specific use case ?
  • What are the possible use cases reached by a specific hardware ?

Thus there is no guaranteed hardware requirement specification possible for using ADTF which is helpful and valid to cover the customers specific needs.

Within ADTF as framework and toolset this depends on the combination of tools, adtfplugins and 3rd party content configured together, especially:

  • Combination of used tools and adtfplugins (headless, UI)
  • Live, playback (real time or faster) or recording mode (quantity of streams, several recorders, etc)
  • Use ADTF Launcher standalone, with 3rd party tools or several instances / distributed setup
  • Bare metal, desktop, docker, cloud or virtual images
  • Combination, sum and nesting of components within adtfgraph
  • Count and nesting of data structures within loaded meta (xml)files
  • Data size, amount and rate of processed samples
  • Number of requested substreams to be processed and decoded
  • Singe-threaded or multithreaded playback
  • CPU/Core/thread affinity depended libraries
  • Latency, available queues and buffers for devices
  • I/O traffic for reading and writing
  • GPU for UI algorithms and operations

The ADTF Configuration Editor will require at least 200MB of RAM for basic usage which scales with additional loaded content or several sessions. The ADTF Launcher will consume at least 30MB of RAM and the defined and launched session will also scale with the hardware itself - and vice versa.

The only possible and qualified announcement for pure basic usage and what ADTF requires will be:

  • Hardware setup which supported the required software dependencies to be installed
  • At least a single-core processor or SoC with 1GHz
  • At least 2GB RAM for basic usage of the tools and basic unnested graphs with standard components from base delivery
  • At least following free disk space for the ADTF delivery package:
    • 4GB: Windows Desktop (x86_64)
    • 6GB: Linux x86_64
    • 4GB: Linux for ARMv8 (AArch64)
  • Monitor using Full-HD (recommended resolution)
Remarks
We also recommend using at least a dual-core CPU, at least 16GB of RAM, a SSD for fast file access and use only Full HD resolution to prevent high-dpi issues regarding Qt/QML. Regarding GPU there is no announcement possible except using a hardware and driver which is compatible to the required use case and 3rd party dependencies (e.g. DirectX, OpenGL, OSG and friends).

Available and supported platforms

The following platforms are used and tested (native/container):

Windows Desktop (x86_64)

Note
The packages can be used OS version independent, prefered together with conan. We recommend our used and tested platform Microsoft Windows 11 64 Bit. On any other Windows 64 Bit platform (e.g. Windows 7, 10 or Server) make sure that it fulfills the following requirements

Runtime requirements:

  • Visual C++ 2019 Redistributable
  • Visual C++ 2019 / Visual C++ 14.2 (for debug libraries and executables)

Development requirements:

  • Visual C++ 2019 (at least CXX Compiler MSVC 19.29) / Visual C++ 14.2 (VC142 Toolchain at least 14.29)
  • MSBuild Version 16.x (at least 16.11)
  • MSBuild Tools only or full Visual Studio IDE installation which covers this requirements
  • Windows Kit 11 (at least 10.0.22621.0)
  • CMake at least 3.23 (recommended >= 4.1)

Linux Desktop (x86_64)

Note
The packages can be used OS version and distribution independent, prefered together with conan. We recommend our used and tested platform Ubuntu 18.04 LTS 64 Bit or higher. On any other distributions (e.g. Fedora, Debian) make sure that it fulfills the following requirements

Requirements:

  • gcc >= 7
  • libc >= 2.27
  • libstdc++ >= 6.0.25
  • CMake at least 3.23 (recommended >= 4.1)
  • build-essential libarchive-dev mesa-common-dev mesa-utils libglib2.0-0 libxcb-xinerama0 xterm

Linux for ARMv8 (AArch64)

Note
The packages can be used OS version and distribution independent, prefered together with conan. We recommend our used and tested platform Ubuntu 18.04 LTS 64 Bit or higher. On any other distributions (e.g. Fedora, Debian) make sure that it fulfills the following requirements. Our reference hardware is nVidia Jetson TX2 Board (compatible to e.g. nVidia Drive PX 2 or Jetson AGX XAVIER)

Requirements:

  • gcc >= 7
  • libc >= 2.27
  • libstdc++ >= 6.0.25
  • CMake at least 3.23 (recommended >= 4.1)
  • build-essential libarchive-dev mesa-common-dev mesa-utils libglib2.0-0

License Information

Please make sure you have an active and valid subscription for this feature, the license key/file is set and the used license server is reachable (if required). For more information, please contact our support under adtf.dev.

For any licence information have a look at LICENSE.

Furthermore please refer to Used Open Source Software for an overview of 3rd party packages we are glad to use.