|
ADTF
|
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:
Please have a look at Release Notes.
The architecture documentation provides a general deep dive, concepts and insights.
The delivery is separated in two packages:
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.
| 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). |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
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.
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.
| 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. |
| 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). |
| 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. |
cmake. We recommend using it combination with conan as well.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 !A hardware requirement specification always has to differ between following two basic questions:
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:
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:
The following platforms are used and tested (native/container):
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 requirementsRuntime requirements:
Development requirements:
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 requirementsRequirements:
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:
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.