Skip to content
Snippets Groups Projects
Tuan Duong Quang's avatar
Tuan Duong Quang authored
Resolve "Add legal documents"

Closes #32

See merge request !14
685c7950
History

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. "Example of LLVM compiler"

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. "Example for a potential Yase setup"

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)