The Yase package
About Yase:
The Yase (Yet Agnostic Scenario Engine / Another Scenario Engine) package is a simulator agnostic scenario/simulation engine in the AD/ADAS context to develop and test intelligent vehicles. The Yase eco system allows to create customized simulation solutions, which can be adapted easily to the system complexity by adapting extensions for simulators and scenario languages where needed.
The architecture is hereby orientated on programming language compilers.
Within these compilers, programming languages are translated into an intermediate representation by a front-end.
From here, several back-ends can translate the intermediate representation into different target architectures.
This modular and flexible architecture is used for the Yase eco system.
The basis is the agnostic_behavior_tree
in the middle-end (also refereed as the simulation kernel).
Furthermore, it contains multiple other agnostic packages.
Around this middle-end the eco system with extensions can be build, which are agnostic of the underlying simulator as well as of the used scenario input file format.
This middle-end can be filled by different front-ends, compiling in different scenario formats.
On the other side, back-ends can connect the middle-end with different simulators or simulator feature subsets.
The following figure shows a potential expansion with potential simulation back-ends/ scenario formats front-ends.
Current Yase content:
The current Yase project consist of one middle-end package.
Please follow the following issues to track the current publishing process for the agnostic_type_system
(ATS) and the OpenSCENARIO2.0 frontend.
The implementation of the OpenSCENARIO1.x implementation for OpenPASS can be found here.
Middle-end
- The agnostic_behavior_tree package with an agnostic behavior tree implementation. It allows to build up any scenario behavior with the help self implemented actions.
How to start:
To play around with the project, one can use the containerized setup. It contains all required dependencies. Open the project with docker or vscode.
Once the container started, it is possible to build the available packages and run their tests either via cmake or bazel.
Via CMake:
cmake -B build [--install-prefix=<path/to/prefix>]
cmake --build build [--target test]
cmake --install build
Via bazel:
bazel build //agnostic_behavior_tree/...
bazel test --test_output=all //agnostic_behavior_tree/...
How to use:
Via CMake
Build and install Yase (see above), then find either the built or the installed package:
set(Yase_DIR <path/to/yase>)
find_package(Yase REQUIRED)
...
target_link_libraries(<target> PUBLIC Yase::agnostic_behavior_tree)
Integrate Yase into your project:
include(FetchContent)
FetchContent_Declare(
yase
GIT_REPOSITORY https://gitlab.eclipse.org/eclipse/simopenpass/yase.git
GIT_TAG main)
FetchContent_MakeAvailable(yase)
...
target_link_libraries(<target> PUBLIC Yase::agnostic_behavior_tree)