diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index adb7b22..54531b4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,13 +10,13 @@ jobs:
steps:
- name: Checkout Model
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
submodules: true
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
@@ -55,7 +55,7 @@ jobs:
- name: Cache Model FMU
id: cache-model-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/model_fmu
key: ${{ runner.os }}-model-fmu-${{ github.sha }}
diff --git a/.github/workflows/build_esmini.yml b/.github/workflows/build_esmini.yml
index f6af496..6774eef 100644
--- a/.github/workflows/build_esmini.yml
+++ b/.github/workflows/build_esmini.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Cache esmini FMU
id: cache-esmini-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/esmini_fmu
key: ${{ runner.os }}-esmini-fmu
diff --git a/.github/workflows/build_openmcx.yml b/.github/workflows/build_openmcx.yml
index 14d98c6..8280c83 100644
--- a/.github/workflows/build_openmcx.yml
+++ b/.github/workflows/build_openmcx.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Cache OpenMCx
id: cache-openmcx
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: openmcx
key: ${{ runner.os }}-openmcx
diff --git a/.github/workflows/build_osi-validation.yml b/.github/workflows/build_osi-validation.yml
new file mode 100644
index 0000000..eee4c75
--- /dev/null
+++ b/.github/workflows/build_osi-validation.yml
@@ -0,0 +1,55 @@
+name: Build osi-validation
+
+on:
+ workflow_call:
+
+jobs:
+ build_esmini:
+ name: Build osi-validation
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Cache osi-validation
+ id: cache-osi-validation
+ uses: actions/cache@v4
+ with:
+ path: /tmp/osi-validation
+ key: ${{ runner.os }}-osi-validation
+
+ - name: Get osi-validation
+ if: steps.cache-osi-validation.outputs.cache-hit != 'true'
+ working-directory: /tmp
+ env:
+ GIT_CLONE_PROTECTION_ACTIVE: false
+ run: git clone https://github.com/OpenSimulationInterface/osi-validation.git
+
+ - name: Update Submodules
+ if: steps.cache-osi-validation.outputs.cache-hit != 'true'
+ working-directory: /tmp/osi-validation
+ run: git submodule update --init
+
+ - name: Build osi-validation
+ if: steps.cache-osi-validation.outputs.cache-hit != 'true'
+ working-directory: /tmp/osi-validation
+ run: |
+ python3 -m venv .venv
+ source .venv/bin/activate
+ python3 -m pip install --upgrade pip
+ python3 -m pip install -r requirements_develop.txt
+ cd open-simulation-interface && python3 -m pip install . && cd ..
+ python3 -m pip install -r requirements.txt
+ python3 rules2yml.py -d rules
+ python3 -m pip install .
+
+ - name: Generate default rules
+ if: steps.cache-osi-validation.outputs.cache-hit != 'true'
+ working-directory: /tmp/osi-validation
+ run: |
+ source .venv/bin/activate
+ python3 rules2yml.py
+
+ - name: Add Commit ID to Cache
+ if: steps.cache-osi-validation.outputs.cache-hit != 'true'
+ working-directory: /tmp/osi-validation
+ run: |
+ git rev-parse --short HEAD > commit-id.txt
diff --git a/.github/workflows/build_osi_field_checker.yml b/.github/workflows/build_osi_field_checker.yml
deleted file mode 100644
index 9aff895..0000000
--- a/.github/workflows/build_osi_field_checker.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-name: Build OSI Field Checker
-
-on:
- workflow_call:
-
-jobs:
- build_osi_field_checker_fmu:
- name: Build OSI Field Checker
- runs-on: ubuntu-latest
-
- steps:
- - name: Cache Protobuf
- id: cache-protobuf
- uses: actions/cache@v3
- with:
- path: protobuf-21.12
- key: ${{ runner.os }}-protobuf
-
- - name: Download ProtoBuf
- if: steps.cache-protobuf.outputs.cache-hit != 'true'
- run: curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protobuf-all-21.12.tar.gz && tar xzvf protobuf-all-21.12.tar.gz
-
- - name: Build ProtoBuf
- if: steps.cache-protobuf.outputs.cache-hit != 'true'
- working-directory: protobuf-21.12
- run: ./configure DIST_LANG=cpp --disable-shared CXXFLAGS="-fPIC" && make -j4
-
- - name: Install ProtoBuf
- working-directory: protobuf-21.12
- run: sudo make install && sudo ldconfig
-
- - name: Cache OSI Field Checker FMU
- id: cache-osi-field-checker
- uses: actions/cache@v3
- with:
- path: /tmp/osi-field-checker
- key: ${{ runner.os }}-osi-field-checker
-
- - name: Clone OpenMSL OSI Field Checker
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- run: git clone https://github.com/openMSL/sl-5-2-osi-field-checker.git
-
- - name: Prepare C++ Build
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker
- run: git submodule update --init && mkdir build
-
- - name: Configure CMake
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker/build
- run: cmake -DCMAKE_PREFIX_PATH:PATH=${DEPS_DIR}/protobuf/install ..
-
- - name: Build C++
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker/build
- run: cmake --build . -j4
-
- - name: Create FMU Directory
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker/build
- run: mkdir /tmp/osi-field-checker
-
- - name: Copy Commit ID to Cache
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker
- run: |
- git rev-parse --short HEAD > commit-id.txt
- cp commit-id.txt /tmp/osi-field-checker/commit-id.txt
-
- - name: Copy OSI Field Checker FMU
- if: steps.cache-osi-field-checker.outputs.cache-hit != 'true'
- working-directory: sl-5-2-osi-field-checker/build
- run: cp OSIFieldChecker.fmu /tmp/osi-field-checker/OSIFieldChecker.fmu
-
- - name: Commit ID
- working-directory: /tmp/osi-field-checker
- run: |
- echo "Commit ID: "
- echo $(cat commit-id.txt)
diff --git a/.github/workflows/build_tracefile_player.yml b/.github/workflows/build_tracefile_player.yml
index b07a6c7..ad34aac 100644
--- a/.github/workflows/build_tracefile_player.yml
+++ b/.github/workflows/build_tracefile_player.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
@@ -31,7 +31,7 @@ jobs:
- name: Cache Tracefile Player FMU
id: cache-tracefile-player-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/tracefile_player_fmu
key: ${{ runner.os }}-tracefile-player-fmu
diff --git a/.github/workflows/build_tracefile_writer.yml b/.github/workflows/build_tracefile_writer.yml
index ea64ddd..4709029 100644
--- a/.github/workflows/build_tracefile_writer.yml
+++ b/.github/workflows/build_tracefile_writer.yml
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
@@ -31,7 +31,7 @@ jobs:
- name: Cache Tracefile Writer FMU
id: cache-tracefile-writer-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/tracefile_writer_fmu
key: ${{ runner.os }}-tracefile-writer-fmu
diff --git a/.github/workflows/cl0.yml b/.github/workflows/cl0.yml
index 2a62985..8a2d8ab 100644
--- a/.github/workflows/cl0.yml
+++ b/.github/workflows/cl0.yml
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- uses: enarx/spdx@master
with:
licenses: Apache-2.0 BSD-3-Clause BSD-2-Clause MIT MPL-2.0
diff --git a/.github/workflows/cl2.yml b/.github/workflows/cl2.yml
index 8d2e8b8..3092087 100644
--- a/.github/workflows/cl2.yml
+++ b/.github/workflows/cl2.yml
@@ -16,9 +16,9 @@ jobs:
name: Build esmini FMU
uses: ./.github/workflows/build_esmini.yml
- build_osi_field_checker_fmu:
- name: Build OSI Field Checker FMU
- uses: ./.github/workflows/build_osi_field_checker.yml
+ build_osi-validation:
+ name: Build osi-validation
+ uses: ./.github/workflows/build_osi-validation.yml
build_openmcx:
name: Build OpenMCx
@@ -29,7 +29,7 @@ jobs:
name: Generate Integration Test Paths
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Generate matrix with all integration tests
id: set-matrix
working-directory: test/integration
@@ -39,7 +39,7 @@ jobs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
run_integration_test:
- needs: [build_tracefile_player, build_tracefile_writer, build_openmcx, build_osi_field_checker_fmu, build_esmini, generate_integration_test_paths]
+ needs: [build_tracefile_player, build_tracefile_writer, build_osi-validation, build_openmcx, build_esmini, generate_integration_test_paths]
name: Integration Test
runs-on: ubuntu-latest
strategy:
@@ -52,55 +52,55 @@ jobs:
run: echo ${{ github.workspace }}/${{ matrix.path }}
- name: Checkout Model
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
submodules: true
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
- name: Cache Model FMU
id: cache-model-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/model_fmu
key: ${{ runner.os }}-model-fmu-${{ github.sha }}
- name: Cache Tracefile Player FMU
id: cache-tracefile-player-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/tracefile_player_fmu
key: ${{ runner.os }}-tracefile-player-fmu
- name: Cache Tracefile Writer FMU
id: cache-tracefile-writer-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/tracefile_writer_fmu
key: ${{ runner.os }}-tracefile-writer-fmu
- name: Cache esmini FMU
id: cache-esmini-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/esmini_fmu
key: ${{ runner.os }}-esmini-fmu
- - name: Cache OSI Field Checker
- id: cache-osi-field-checker
- uses: actions/cache@v3
+ - name: Cache osi-validation
+ id: cache-osi-validation
+ uses: actions/cache@v4
with:
- path: /tmp/osi-field-checker
- key: ${{ runner.os }}-osi-field-checker
+ path: /tmp/osi-validation
+ key: ${{ runner.os }}-osi-validation
- name: Cache OpenMCx
id: cache-openmcx
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: openmcx
key: ${{ runner.os }}-openmcx
@@ -108,6 +108,35 @@ jobs:
- name: Install dependencies
run: sudo apt install -y libxml2-dev zlib1g-dev libzip-dev
+ - name: Check For Input Trace Files
+ id: check-for-input-trace-files
+ working-directory: ./test/integration/${{ matrix.path }}
+ run: |
+ ( count=`ls -1 *.osi 2>/dev/null | wc -l`
+ if [ $count == 0 ]; then
+ echo No trace file found.
+ echo "found_trace=0" >> $GITHUB_OUTPUT
+ elif [ $count == 1 ]; then
+ echo One trace file found.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ filename=$(ls -1 *.osi)
+ else
+ echo More than one trace file.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ fi
+ )
+
+ - name: Check Input Trace Files with osi-validation and model input rules
+ if: steps.check-for-input-trace-files.outputs.found_trace == 1
+ run: |
+ if [ -d "./rules/input_rules" ]; then
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./test/integration/${{ matrix.path }}/*.osi; do
+ osivalidator --rules ./rules/input_rules --data ${filename}
+ done
+ else echo "No custom input rules found in ./rules/input_rules";
+ fi
+
- name: Create Output Folder
working-directory: ./test/integration/${{ matrix.path }}
run: mkdir output
@@ -116,8 +145,8 @@ jobs:
id: cosimulation
run: ./openmcx/install/openmcx ./test/integration/${{ matrix.path }}/SystemStructure.ssd
- - name: Check For Trace Files
- id: check-for-trace-files
+ - name: Check For Output Trace Files
+ id: check-for-output-trace-files
working-directory: ./test/integration/${{ matrix.path }}/output
run: |
( count=`ls -1 *.osi 2>/dev/null | wc -l`
@@ -125,22 +154,45 @@ jobs:
echo No trace file found.
echo "found_trace=0" >> $GITHUB_OUTPUT
elif [ $count == 1 ]; then
+ echo One trace file found.
echo "found_trace=1" >> $GITHUB_OUTPUT
filename=$(ls -1 *.osi)
echo "trace_file_name=${filename}" >> $GITHUB_OUTPUT
else
echo More than one trace file.
- echo "found_trace=0" >> $GITHUB_OUTPUT
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ zip ${{ matrix.path }}.zip *.osi
+ echo "trace_file_name=${{ matrix.path }}.zip" >> $GITHUB_OUTPUT
fi
)
- - name: Archive Trace File
- if: steps.check-for-trace-files.outputs.found_trace == 1
- uses: actions/upload-artifact@v3
+ - name: Archive Output Trace Files
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ uses: actions/upload-artifact@v4
with:
- name: ${{ steps.check-for-trace-files.outputs.trace_file_name }}
- path: ./test/integration/${{ matrix.path }}/output/${{ steps.check-for-trace-files.outputs.trace_file_name }}
-
+ name: ${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
+ path: ./test/integration/${{ matrix.path }}/output/${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
+
+ - name: Check Output Trace Files with osi-validation and default rules
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ working-directory: ./test/integration/${{ matrix.path }}/output
+ run: |
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./*.osi; do
+ osivalidator --rules /tmp/osi-validation/rules/ --data ${filename}
+ done
+
+ - name: Check Output Trace Files with osi-validation and model output rules
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ run: |
+ if [ -d "./rules/output_rules" ]; then
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./test/integration/${{ matrix.path }}/output/*.osi; do
+ osivalidator --rules ./rules/output_rules --data ${filename}
+ done
+ else echo "No custom output rules found in ./rules/output_rules";
+ fi
+
- name: Check For Python Scripts
id: check-for-python-scripts
working-directory: ./test/integration/${{ matrix.path }}
@@ -173,7 +225,7 @@ jobs:
- name: Run Trace File Analysis
if: steps.check-for-python-scripts.outputs.found_script == 1
working-directory: ./test/integration/${{ matrix.path }}
- run: python3 ${{ steps.check-for-python-scripts.outputs.python_file_name }} output/${{ steps.check-for-trace-files.outputs.trace_file_name }}
+ run: python3 ${{ steps.check-for-python-scripts.outputs.python_file_name }} output/${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
- name: Failed?
if: steps.cosimulation.outputs.failed == 1
diff --git a/.github/workflows/cl3.yml b/.github/workflows/cl3.yml
new file mode 100644
index 0000000..8721357
--- /dev/null
+++ b/.github/workflows/cl3.yml
@@ -0,0 +1,211 @@
+name: Credibility Assessment Level 3
+
+on:
+ workflow_call:
+
+jobs:
+ generate_behavior_test_paths:
+ runs-on: ubuntu-latest
+ name: Generate Behavior Test Paths
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Generate matrix with all behavior tests
+ id: set-matrix
+ working-directory: test/behavior
+ run: |
+ echo "matrix=$(ls -l | grep '^d' | awk -F ' ' '{print $9}' | grep -Po '\d{3}.*' | jq -R -s -c 'split("\n") | map(select(length > 0))')" >> $GITHUB_OUTPUT
+ outputs:
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
+
+ run_behavior_test:
+ needs: [generate_behavior_test_paths]
+ name: Behavior Test
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ path: ${{ fromJson(needs.generate_behavior_test_paths.outputs.matrix) }}
+
+ steps:
+ - name: Print matrix path
+ run: echo ${{ github.workspace }}/${{ matrix.path }}
+
+ - name: Checkout Model
+ uses: actions/checkout@v4
+ with:
+ submodules: true
+
+ - name: Cache Protobuf
+ id: cache-protobuf
+ uses: actions/cache@v4
+ with:
+ path: protobuf-21.12
+ key: ${{ runner.os }}-protobuf
+
+ - name: Cache Model FMU
+ id: cache-model-fmu
+ uses: actions/cache@v4
+ with:
+ path: /tmp/model_fmu
+ key: ${{ runner.os }}-model-fmu-${{ github.sha }}
+
+ - name: Cache Tracefile Player FMU
+ id: cache-tracefile-player-fmu
+ uses: actions/cache@v4
+ with:
+ path: /tmp/tracefile_player_fmu
+ key: ${{ runner.os }}-tracefile-player-fmu
+
+ - name: Cache Tracefile Writer FMU
+ id: cache-tracefile-writer-fmu
+ uses: actions/cache@v4
+ with:
+ path: /tmp/tracefile_writer_fmu
+ key: ${{ runner.os }}-tracefile-writer-fmu
+
+ - name: Cache esmini FMU
+ id: cache-esmini-fmu
+ uses: actions/cache@v4
+ with:
+ path: /tmp/esmini_fmu
+ key: ${{ runner.os }}-esmini-fmu
+
+ - name: Cache osi-validation
+ id: cache-osi-validation
+ uses: actions/cache@v4
+ with:
+ path: /tmp/osi-validation
+ key: ${{ runner.os }}-osi-validation
+
+ - name: Cache OpenMCx
+ id: cache-openmcx
+ uses: actions/cache@v4
+ with:
+ path: openmcx
+ key: ${{ runner.os }}-openmcx
+
+ - name: Install dependencies
+ run: sudo apt install -y libxml2-dev zlib1g-dev libzip-dev
+
+ - name: Install ProtoBuf
+ working-directory: protobuf-21.12
+ run: sudo make install && sudo ldconfig
+
+ - name: Check if analysis script exists
+ id: check_analysis_script
+ uses: andstor/file-existence-action@v3
+ with:
+ files: test/behavior/${{ matrix.path }}/analyze.py
+
+ - name: Check if trace file generator exists
+ id: check_trace_generator
+ uses: andstor/file-existence-action@v3
+ with:
+ files: test/behavior/${{ matrix.path }}/generate_test_trace.py
+
+ - name: Install OSI for python
+ if: steps.check_analysis_script.outputs.files_exists == 'true' || steps.check_trace_generator.outputs.files_exists == 'true'
+ working-directory: ./lib/open-simulation-interface
+ run: |
+ python3 -m pip install protobuf==4.21.12
+ python3 -m pip install .
+
+ - name: Run test trace generation
+ if: steps.check_trace_generator.outputs.files_exists == 'true'
+ working-directory: ./test/behavior/${{ matrix.path }}
+ run: python3 generate_test_trace.py
+
+ - name: Check For Input Trace Files
+ id: check-for-input-trace-files
+ working-directory: ./test/behavior/${{ matrix.path }}
+ run: |
+ ( count=`ls -1 *.osi 2>/dev/null | wc -l`
+ if [ $count == 0 ]; then
+ echo No trace file found.
+ echo "found_trace=0" >> $GITHUB_OUTPUT
+ elif [ $count == 1 ]; then
+ echo One trace file found.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ filename=$(ls -1 *.osi)
+ else
+ echo More than one trace file.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ fi
+ )
+
+ - name: Check Input Trace Files with osi-validation and model input rules
+ if: steps.check-for-input-trace-files.outputs.found_trace == 1
+ run: |
+ if [ -d "./rules/input_rules" ]; then
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./test/behavior/${{ matrix.path }}/*.osi; do
+ osivalidator --rules ./rules/input_rules --data ${filename}
+ done
+ else echo "No custom input rules found in ./rules/input_rules";
+ fi
+
+ - name: Create Output Folder
+ working-directory: ./test/behavior/${{ matrix.path }}
+ run: mkdir output
+
+ - name: Run OpenMCx
+ id: cosimulation
+ run: ./openmcx/install/openmcx ./test/behavior/${{ matrix.path }}/SystemStructure.ssd
+
+ - name: Check For Output Trace Files
+ id: check-for-output-trace-files
+ working-directory: ./test/behavior/${{ matrix.path }}/output
+ run: |
+ ( count=`ls -1 *.osi 2>/dev/null | wc -l`
+ if [ $count == 0 ]; then
+ echo No trace file found.
+ echo "found_trace=0" >> $GITHUB_OUTPUT
+ elif [ $count == 1 ]; then
+ echo One trace file found.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ filename=$(ls -1 *.osi)
+ echo "trace_file_name=${filename}" >> $GITHUB_OUTPUT
+ else
+ echo More than one trace file.
+ echo "found_trace=1" >> $GITHUB_OUTPUT
+ zip ${{ matrix.path }}.zip *.osi
+ echo "trace_file_name=${{ matrix.path }}.zip" >> $GITHUB_OUTPUT
+ fi
+ )
+
+ - name: Archive Trace File
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
+ path: ./test/behavior/${{ matrix.path }}/output/${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
+
+ - name: Check Output Trace Files with osi-validation and default rules
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ working-directory: ./test/behavior/${{ matrix.path }}/output
+ run: |
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./*.osi; do
+ osivalidator --rules /tmp/osi-validation/rules/ --data ${filename}
+ done
+
+ - name: Check Output Trace Files with osi-validation and model output rules
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
+ run: |
+ if [ -d "./rules/output_rules" ]; then
+ source /tmp/osi-validation/.venv/bin/activate
+ for filename in ./test/behavior/${{ matrix.path }}/output/*.osi; do
+ osivalidator --rules ./rules/output_rules --data ${filename}
+ done
+ else echo "No custom output rules found in ./rules/output_rules";
+ fi
+
+ - name: Run Trace File Analysis
+ if: steps.check_analysis_script.outputs.files_exists == 'true'
+ working-directory: ./test/behavior/${{ matrix.path }}
+ run: python3 analyze.py output/${{ steps.check-for-output-trace-files.outputs.trace_file_name }}
+
+ - name: Failed?
+ if: steps.cosimulation.outputs.failed == 1
+ run: exit 1
diff --git a/.github/workflows/cpp-linter.yml b/.github/workflows/cpp-linter.yml
index acbb48f..41e8f3c 100644
--- a/.github/workflows/cpp-linter.yml
+++ b/.github/workflows/cpp-linter.yml
@@ -9,13 +9,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Model
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
submodules: true
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
diff --git a/.github/workflows/credibility_assessment.yml b/.github/workflows/credibility_assessment.yml
index 8d9a646..28aff45 100644
--- a/.github/workflows/credibility_assessment.yml
+++ b/.github/workflows/credibility_assessment.yml
@@ -19,3 +19,8 @@ jobs:
name: CL 2
needs: cl1
uses: ./.github/workflows/cl2.yml
+
+ cl3:
+ name: CL 3
+ needs: cl2
+ uses: ./.github/workflows/cl3.yml
diff --git a/.github/workflows/fmu_artifact.yml b/.github/workflows/fmu_artifact.yml
index 503e2e4..ee92410 100644
--- a/.github/workflows/fmu_artifact.yml
+++ b/.github/workflows/fmu_artifact.yml
@@ -11,13 +11,13 @@ jobs:
steps:
- name: Cache Model FMU
id: cache-model-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/model_fmu
key: ${{ runner.os }}-model-fmu-${{ github.sha }}
- name: Archive built FMU
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: /tmp/model_fmu/${{ github.event.repository.name }}.fmu
diff --git a/.github/workflows/fmu_checker.yml b/.github/workflows/fmu_checker.yml
index d923d0a..9204bdc 100644
--- a/.github/workflows/fmu_checker.yml
+++ b/.github/workflows/fmu_checker.yml
@@ -11,14 +11,34 @@ jobs:
steps:
- name: Cache Model FMU
id: cache-model-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/model_fmu
key: ${{ runner.os }}-model-fmu-${{ github.sha }}
+ - name: Cache Protobuf
+ id: cache-protobuf
+ uses: actions/cache@v4
+ with:
+ path: protobuf-21.12
+ key: ${{ runner.os }}-protobuf
+
+ - name: Download ProtoBuf
+ if: steps.cache-protobuf.outputs.cache-hit != 'true'
+ run: curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protobuf-all-21.12.tar.gz && tar xzvf protobuf-all-21.12.tar.gz
+
+ - name: Build ProtoBuf
+ if: steps.cache-protobuf.outputs.cache-hit != 'true'
+ working-directory: protobuf-21.12
+ run: ./configure DIST_LANG=cpp --disable-shared CXXFLAGS="-fPIC" && make -j4
+
+ - name: Install ProtoBuf
+ working-directory: protobuf-21.12
+ run: sudo make install && sudo ldconfig
+
- name: Cache FMUComplianceChecker
id: cache-fmu-checker
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/FMUComplianceChecker
key: ${{ runner.os }}-fmu-checker
@@ -54,13 +74,13 @@ jobs:
steps:
- name: Cache Model FMU
id: cache-model-fmu
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: /tmp/model_fmu
key: ${{ runner.os }}-model-fmu-${{ github.sha }}
- name: Install FMPy
- run: python -m pip install fmpy[complete]
+ run: python -m pip install fmpy==0.3.16
- name: Run FMPy Validate
working-directory: /tmp/model_fmu
diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml
index 6c3dd4d..72df403 100644
--- a/.github/workflows/markdown.yml
+++ b/.github/workflows/markdown.yml
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: markdown-lint
uses: articulate/actions-markdownlint@v1
with:
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 4d1d1f8..e8c60f9 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -9,19 +9,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Model
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
submodules: true
- name: Check unit tests exist
id: check_files
- uses: andstor/file-existence-action@v2
+ uses: andstor/file-existence-action@v3
with:
files: "test/unit"
- name: Cache Protobuf
id: cache-protobuf
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: protobuf-21.12
key: ${{ runner.os }}-protobuf
diff --git a/README.md b/README.md
index ff886a1..55ce594 100644
--- a/README.md
+++ b/README.md
@@ -34,24 +34,28 @@ The detection of moving objects, stationary objects, traffic signs and traffic l
### Input: Required Fields in OSI3::SensorView
-- `sensor_view.mounting_position`
-- `sensor_view.global_ground_truth.timestamp`
-- `sensor_view.global_ground_truth.host_vehicle_id`
-- `sensor_view.global_ground_truth.stationary_object.id`
-- `sensor_view.global_ground_truth.stationary_object.base.position`
-- `sensor_view.global_ground_truth.stationary_object.base.orientation`
-- `sensor_view.global_ground_truth.stationary_object.base.dimension`
+| OSI Message | Required / Optional |
+|------------------------------------------------------------------|---------------------|
+| `sensor_view.mounting_position` | required |
+| `sensor_view.global_ground_truth.timestamp` | required |
+| `sensor_view.global_ground_truth.host_vehicle_id` | required |
+| `sensor_view.global_ground_truth.moving_object.id` | required |
+| `sensor_view.global_ground_truth.moving_object.base.position` | required |
+| `sensor_view.global_ground_truth.moving_object.base.orientation` | required |
+| `sensor_view.global_ground_truth.moving_object.base.dimension` | required |
### Output: Fields in OSI3::SensorData Filled by the Sensor Model
-- `sensor_data.timestamp`
-- `sensor_data.moving_object.header.ground_truth_id`
-- `sensor_data.moving_object.header.tracking_id`
-- `sensor_data.moving_object.header.existence_probability`
-- `sensor_data.moving_object.header.measurement_state`
-- `sensor_data.moving_object.header.sensor_id`
-- `sensor_data.moving_object.base.position`
-- `sensor_data.moving_object.base.dimension`
+| OSI Message | Required / Optional |
+|----------------------------------------------------------|---------------------|
+| `sensor_data.timestamp` | required |
+| `sensor_data.moving_object.header.ground_truth_id` | required |
+| `sensor_data.moving_object.header.tracking_id` | required |
+| `sensor_data.moving_object.header.existence_probability` | required |
+| `sensor_data.moving_object.header.measurement_state` | required |
+| `sensor_data.moving_object.header.sensor_id` | required |
+| `sensor_data.moving_object.base.position` | required |
+| `sensor_data.moving_object.base.dimension` | required |
## Build Instructions
diff --git a/rules/input_rules/osi_common.yml b/rules/input_rules/osi_common.yml
new file mode 100644
index 0000000..98cccc3
--- /dev/null
+++ b/rules/input_rules/osi_common.yml
@@ -0,0 +1,131 @@
+Vector3d:
+ x:
+ y:
+ z:
+Vector2d:
+ x:
+ y:
+Timestamp:
+ seconds:
+ - is_greater_than_or_equal_to: 0
+ nanos:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 999999999
+Dimension3d:
+ length:
+ - is_greater_than_or_equal_to: 0
+ width:
+ - is_greater_than_or_equal_to: 0
+ height:
+ - is_greater_than_or_equal_to: 0
+Orientation3d:
+ roll:
+ pitch:
+ yaw:
+Identifier:
+ value:
+ - is_greater_than_or_equal_to: 0
+ExternalReference:
+ reference:
+ type:
+ - is_set:
+ identifier:
+MountingPosition:
+ position:
+ orientation:
+Spherical3d:
+ distance:
+ - is_greater_than_or_equal_to: 0
+ azimuth:
+ elevation:
+LogicalLaneAssignment:
+ assigned_lane_id:
+ - refers_to: LogicalLane
+ s_position:
+ t_position:
+ angle_to_lane:
+BoundingBox:
+ dimension:
+ position:
+ orientation:
+ contained_object_type:
+ model_reference:
+BaseStationary:
+ dimension:
+ position:
+ orientation:
+ base_polygon:
+ bounding_box_section:
+BaseMoving:
+ dimension:
+ - is_set:
+ position:
+ - is_set:
+ orientation:
+ - is_set:
+ velocity:
+ acceleration:
+ orientation_rate:
+ orientation_acceleration:
+ base_polygon:
+ bounding_box_section:
+StatePoint:
+ timestamp:
+ position:
+ orientation:
+WavelengthData:
+ start:
+ end:
+ samples_number:
+SpatialSignalStrength:
+ horizontal_angle:
+ vertical_angle:
+ signal_strength:
+ColorDescription:
+ grey:
+ rgb:
+ rgbir:
+ hsv:
+ luv:
+ cmyk:
+ColorGrey:
+ grey:
+ColorRGB:
+ red:
+ green:
+ blue:
+ColorRGBIR:
+ red:
+ green:
+ blue:
+ infrared:
+ColorHSV:
+ hue:
+ saturation:
+ value:
+ColorLUV:
+ luminance:
+ u:
+ v:
+ColorCMYK:
+ cyan:
+ magenta:
+ yellow:
+ key:
+Pedalry:
+ pedal_position_acceleration:
+ pedal_position_brake:
+ pedal_position_clutch:
+VehicleSteeringWheel:
+ angle:
+ angular_speed:
+ torque:
+GeodeticPosition:
+ longitude:
+ latitude:
+ altitude:
+KeyValuePair:
+ key:
+ value:
+Polygon3d:
+ vertex:
diff --git a/rules/input_rules/osi_datarecording.yml b/rules/input_rules/osi_datarecording.yml
new file mode 100644
index 0000000..65ca3b5
--- /dev/null
+++ b/rules/input_rules/osi_datarecording.yml
@@ -0,0 +1,4 @@
+SensorDataSeries:
+ sensor_data:
+SensorDataSeriesList:
+ sensor:
diff --git a/rules/input_rules/osi_detectedlane.yml b/rules/input_rules/osi_detectedlane.yml
new file mode 100644
index 0000000..17e2899
--- /dev/null
+++ b/rules/input_rules/osi_detectedlane.yml
@@ -0,0 +1,22 @@
+DetectedLane:
+ header:
+ candidate:
+ CandidateLane:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
+DetectedLaneBoundary:
+ header:
+ candidate:
+ boundary_line:
+ boundary_line_rmse:
+ boundary_line_confidences:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ color_description:
+ CandidateLaneBoundary:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
diff --git a/rules/input_rules/osi_detectedobject.yml b/rules/input_rules/osi_detectedobject.yml
new file mode 100644
index 0000000..79be0fa
--- /dev/null
+++ b/rules/input_rules/osi_detectedobject.yml
@@ -0,0 +1,66 @@
+DetectedItemHeader:
+ tracking_id:
+ - is_set:
+ ground_truth_id:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ age:
+ measurement_state:
+ sensor_id:
+DetectedStationaryObject:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ radar_specifics:
+ lidar_specifics:
+ camera_specifics:
+ ultrasonic_specifics:
+ CandidateStationaryObject:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
+DetectedMovingObject:
+ header:
+ base:
+ base_rmse:
+ reference_point:
+ movement_state:
+ percentage_side_lane_left:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ percentage_side_lane_right:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ candidate:
+ color_description:
+ radar_specifics:
+ lidar_specifics:
+ camera_specifics:
+ ultrasonic_specifics:
+ CandidateMovingObject:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ type:
+ vehicle_classification:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ head_pose:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
+ upper_body_pose:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
diff --git a/rules/input_rules/osi_detectedoccupant.yml b/rules/input_rules/osi_detectedoccupant.yml
new file mode 100644
index 0000000..b41e5a9
--- /dev/null
+++ b/rules/input_rules/osi_detectedoccupant.yml
@@ -0,0 +1,8 @@
+DetectedOccupant:
+ header:
+ candidate:
+ CandidateOccupant:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
diff --git a/rules/input_rules/osi_detectedroadmarking.yml b/rules/input_rules/osi_detectedroadmarking.yml
new file mode 100644
index 0000000..a934bd2
--- /dev/null
+++ b/rules/input_rules/osi_detectedroadmarking.yml
@@ -0,0 +1,11 @@
+DetectedRoadMarking:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ CandidateRoadMarking:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/input_rules/osi_detectedtrafficlight.yml b/rules/input_rules/osi_detectedtrafficlight.yml
new file mode 100644
index 0000000..e4e48cc
--- /dev/null
+++ b/rules/input_rules/osi_detectedtrafficlight.yml
@@ -0,0 +1,11 @@
+DetectedTrafficLight:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ CandidateTrafficLight:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/input_rules/osi_detectedtrafficsign.yml b/rules/input_rules/osi_detectedtrafficsign.yml
new file mode 100644
index 0000000..c5640cb
--- /dev/null
+++ b/rules/input_rules/osi_detectedtrafficsign.yml
@@ -0,0 +1,23 @@
+DetectedTrafficSign:
+ header:
+ main_sign:
+ supplementary_sign:
+ DetectedMainSign:
+ candidate:
+ base:
+ base_rmse:
+ geometry:
+ CandidateMainSign:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
+ DetectedSupplementarySign:
+ candidate:
+ base:
+ base_rmse:
+ CandidateSupplementarySign:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/input_rules/osi_environment.yml b/rules/input_rules/osi_environment.yml
new file mode 100644
index 0000000..57f3998
--- /dev/null
+++ b/rules/input_rules/osi_environment.yml
@@ -0,0 +1,34 @@
+EnvironmentalConditions:
+ ambient_illumination:
+ time_of_day:
+ unix_timestamp:
+ atmospheric_pressure:
+ - is_greater_than_or_equal_to: 80000
+ - is_less_than_or_equal_to: 120000
+ temperature:
+ - is_greater_than_or_equal_to: 170
+ - is_less_than_or_equal_to: 340
+ relative_humidity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ precipitation:
+ fog:
+ source_reference:
+ clouds:
+ wind:
+ sun:
+ TimeOfDay:
+ seconds_since_midnight:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than: 86400
+ CloudLayer:
+ fractional_cloud_cover:
+ Wind:
+ origin_direction:
+ speed:
+ - is_greater_than_or_equal_to: 0
+ Sun:
+ azimuth:
+ elevation:
+ intensity:
+ - is_greater_than_or_equal_to: 0
diff --git a/rules/input_rules/osi_featuredata.yml b/rules/input_rules/osi_featuredata.yml
new file mode 100644
index 0000000..97c2b14
--- /dev/null
+++ b/rules/input_rules/osi_featuredata.yml
@@ -0,0 +1,149 @@
+FeatureData:
+ version:
+ radar_sensor:
+ lidar_sensor:
+ ultrasonic_sensor:
+ camera_sensor:
+SensorDetectionHeader:
+ measurement_time:
+ cycle_counter:
+ - is_greater_than_or_equal_to: 0
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ data_qualifier:
+ number_of_valid_detections:
+ - is_greater_than_or_equal_to: 0
+ sensor_id:
+ - is_set:
+ extended_qualifier:
+RadarDetectionData:
+ header:
+ detection:
+RadarDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ radial_velocity:
+ radial_velocity_rmse:
+ - is_greater_than_or_equal_to: 0
+ rcs:
+ snr:
+ point_target_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ ambiguity_id:
+ classification:
+LidarDetectionData:
+ header:
+ detection:
+LidarDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ height:
+ - is_greater_than_or_equal_to: 0
+ height_rmse:
+ - is_greater_than_or_equal_to: 0
+ intensity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ free_space_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
+ reflectivity:
+ echo_pulse_width:
+ - is_greater_than_or_equal_to: 0
+ radial_velocity:
+ beam_id:
+UltrasonicDetectionSpecificHeader:
+ max_range:
+ number_of_valid_indirect_detections:
+UltrasonicDetectionData:
+ header:
+ specific_header:
+ detection:
+ indirect_detection:
+UltrasonicDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ distance:
+ - is_greater_than_or_equal_to: 0
+UltrasonicIndirectDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ ellipsoid_radial:
+ ellipsoid_axial:
+ receiver_id:
+ receiver_origin:
+CameraDetectionSpecificHeader:
+ number_of_valid_points:
+ - is_greater_than_or_equal_to: 0
+CameraDetectionData:
+ header:
+ specific_header:
+ detection:
+ point:
+CameraDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ time_difference:
+ image_shape_type:
+ shape_classification_background:
+ shape_classification_foreground:
+ shape_classification_flat:
+ shape_classification_upright:
+ shape_classification_ground:
+ shape_classification_sky:
+ shape_classification_vegetation:
+ shape_classification_road:
+ shape_classification_non_driving_lane:
+ shape_classification_non_road:
+ shape_classification_stationary_object:
+ shape_classification_moving_object:
+ shape_classification_landmark:
+ shape_classification_traffic_sign:
+ shape_classification_traffic_light:
+ shape_classification_road_marking:
+ shape_classification_vehicle:
+ shape_classification_pedestrian:
+ shape_classification_animal:
+ shape_classification_pedestrian_front:
+ shape_classification_pedestrian_side:
+ shape_classification_pedestrian_rear:
+ shape_classification_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ color:
+ color_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ ambiguity_id:
+ first_point_index:
+ number_of_points:
+ - is_greater_than_or_equal_to: 0
+ color_description:
+CameraPoint:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ point:
+ point_rmse:
diff --git a/rules/input_rules/osi_groundtruth.yml b/rules/input_rules/osi_groundtruth.yml
new file mode 100644
index 0000000..1ce07b7
--- /dev/null
+++ b/rules/input_rules/osi_groundtruth.yml
@@ -0,0 +1,29 @@
+GroundTruth:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ host_vehicle_id:
+ - refers_to: MovingObject
+ - is_set:
+ stationary_object:
+ moving_object:
+ traffic_sign:
+ traffic_light:
+ road_marking:
+ lane_boundary:
+ lane:
+ occupant:
+ environmental_conditions:
+ country_code:
+ - is_iso_country_code:
+ proj_string:
+ map_reference:
+ model_reference:
+ reference_line:
+ logical_lane_boundary:
+ logical_lane:
+ proj_frame_offset:
+ ProjFrameOffset:
+ position:
+ yaw:
diff --git a/rules/input_rules/osi_hostvehicledata.yml b/rules/input_rules/osi_hostvehicledata.yml
new file mode 100644
index 0000000..14fb887
--- /dev/null
+++ b/rules/input_rules/osi_hostvehicledata.yml
@@ -0,0 +1,59 @@
+HostVehicleData:
+ version:
+ timestamp:
+ host_vehicle_id:
+ location:
+ location_rmse:
+ vehicle_basics:
+ vehicle_powertrain:
+ vehicle_brake_system:
+ vehicle_steering:
+ vehicle_wheels:
+ vehicle_localization:
+ vehicle_automated_driving_function:
+ vehicle_motion:
+ route:
+ VehicleBasics:
+ curb_weight:
+ operating_state:
+ VehiclePowertrain:
+ pedal_position_acceleration:
+ pedal_position_clutch:
+ gear_transmission:
+ motor:
+ Motor:
+ type:
+ rpm:
+ torque:
+ VehicleBrakeSystem:
+ pedal_position_brake:
+ VehicleSteering:
+ vehicle_steering_wheel:
+ VehicleWheels:
+ wheel_data:
+ WheelData:
+ axle:
+ index:
+ rotation_rate:
+ slip:
+ VehicleLocalization:
+ position:
+ orientation:
+ geodetic_position:
+ VehicleMotion:
+ position:
+ orientation:
+ velocity:
+ orientation_rate:
+ acceleration:
+ current_curvature:
+ VehicleAutomatedDrivingFunction:
+ name:
+ custom_name:
+ state:
+ custom_state:
+ driver_override:
+ custom_detail:
+ DriverOverride:
+ active:
+ override_reason:
diff --git a/rules/input_rules/osi_lane.yml b/rules/input_rules/osi_lane.yml
new file mode 100644
index 0000000..64f31c0
--- /dev/null
+++ b/rules/input_rules/osi_lane.yml
@@ -0,0 +1,90 @@
+Lane:
+ id:
+ - is_globally_unique:
+ - is_set:
+ classification:
+ source_reference:
+ Classification:
+ type:
+ is_host_vehicle_lane:
+ centerline:
+ centerline_is_driving_direction:
+ left_adjacent_lane_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ right_adjacent_lane_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ lane_pairing:
+ right_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ left_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ free_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ road_condition:
+ subtype:
+ RoadCondition:
+ surface_temperature:
+ - is_greater_than_or_equal_to: 0
+ surface_water_film:
+ - is_greater_than_or_equal_to: 0
+ surface_freezing_point:
+ - is_greater_than_or_equal_to: 0
+ surface_ice:
+ - is_greater_than_or_equal_to: 0
+ surface_roughness:
+ - is_greater_than_or_equal_to: 0
+ surface_texture:
+ LanePairing:
+ antecessor_lane_id:
+ - refers_to: Lane
+ successor_lane_id:
+ - refers_to: Lane
+LaneBoundary:
+ id:
+ - is_globally_unique:
+ boundary_line:
+ - first_element:
+ width:
+ - is_equal_to: 0.13
+ - first_element:
+ height:
+ - is_equal_to: 0.14
+ - last_element:
+ width:
+ - is_equal_to: 0.13
+ - last_element:
+ height:
+ - is_equal_to: 0.13
+ classification:
+ source_reference:
+ color_description:
+ BoundaryPoint:
+ position:
+ width:
+ height:
+ dash:
+ Classification:
+ type:
+ color:
+ limiting_structure_id:
+ - refers_to: StationaryObject
diff --git a/rules/input_rules/osi_logicaldetectiondata.yml b/rules/input_rules/osi_logicaldetectiondata.yml
new file mode 100644
index 0000000..9935c0d
--- /dev/null
+++ b/rules/input_rules/osi_logicaldetectiondata.yml
@@ -0,0 +1,33 @@
+LogicalDetectionData:
+ version:
+ - is_set:
+ header:
+ logical_detection:
+LogicalDetectionDataHeader:
+ logical_detection_time:
+ data_qualifier:
+ number_of_valid_logical_detections:
+ - is_greater_than_or_equal_to: 0
+ sensor_id:
+LogicalDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ velocity:
+ velocity_rmse:
+ - is_greater_than_or_equal_to: 0
+ intensity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ snr:
+ point_target_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ sensor_id:
+ classification:
+ echo_pulse_width:
+ - is_greater_than_or_equal_to: 0
diff --git a/rules/input_rules/osi_logicallane.yml b/rules/input_rules/osi_logicallane.yml
new file mode 100644
index 0000000..5f2c3ee
--- /dev/null
+++ b/rules/input_rules/osi_logicallane.yml
@@ -0,0 +1,68 @@
+LogicalLaneBoundary:
+ id:
+ - is_globally_unique:
+ - is_set:
+ boundary_line:
+ reference_line_id:
+ - refers_to: ReferenceLine
+ physical_boundary_id:
+ - refers_to: LaneBoundary
+ passing_rule:
+ source_reference:
+ LogicalBoundaryPoint:
+ position:
+ s_position:
+ t_position:
+LogicalLane:
+ id:
+ - is_globally_unique:
+ type:
+ source_reference:
+ physical_lane_reference:
+ - refers_to: Lane
+ reference_line_id:
+ - refers_to: ReferenceLine
+ start_s:
+ end_s:
+ move_direction:
+ right_adjacent_lane:
+ left_adjacent_lane:
+ overlapping_lane:
+ right_boundary_id:
+ - refers_to: LogicalLaneBoundary
+ left_boundary_id:
+ - refers_to: LogicalLaneBoundary
+ predecessor_lane:
+ successor_lane:
+ street_name:
+ traffic_rule:
+ PhysicalLaneReference:
+ physical_lane_id:
+ - refers_to: Lane
+ start_s:
+ end_s:
+ LaneConnection:
+ other_lane_id:
+ - refers_to: LogicalLane
+ at_begin_of_other_lane:
+ LaneRelation:
+ other_lane_id:
+ - refers_to: LogicalLane
+ start_s:
+ end_s:
+ start_s_other:
+ end_s_other:
+ TrafficRule:
+ traffic_rule_type:
+ traffic_rule_validity:
+ speed_limit:
+ TrafficRuleValidity:
+ start_s:
+ end_s:
+ valid_for_type:
+ TypeValidity:
+ type:
+ vehicle_type:
+ vehicle_role:
+ SpeedLimit:
+ speed_limit_value:
diff --git a/rules/input_rules/osi_motionrequest.yml b/rules/input_rules/osi_motionrequest.yml
new file mode 100644
index 0000000..22aa7eb
--- /dev/null
+++ b/rules/input_rules/osi_motionrequest.yml
@@ -0,0 +1,16 @@
+MotionRequest:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ motion_request_type:
+ desired_state:
+ desired_trajectory:
+ DesiredState:
+ timestamp:
+ position:
+ orientation:
+ velocity:
+ acceleration:
+ DesiredTrajectory:
+ trajectory_point:
diff --git a/rules/input_rules/osi_object.yml b/rules/input_rules/osi_object.yml
new file mode 100644
index 0000000..5ebfd10
--- /dev/null
+++ b/rules/input_rules/osi_object.yml
@@ -0,0 +1,110 @@
+StationaryObject:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ classification:
+ model_reference:
+ source_reference:
+ color_description:
+ Classification:
+ type:
+ material:
+ density:
+ color:
+ emitting_structure_attribute:
+ assigned_lane_id:
+ assigned_lane_percentage:
+ logical_lane_assignment:
+ EmittingStructureAttribute:
+ wavelength_data:
+ emitted_spatial_signal_strength:
+MovingObject:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ type:
+ assigned_lane_id:
+ vehicle_attributes:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ vehicle_classification:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ model_reference:
+ future_trajectory:
+ moving_object_classification:
+ source_reference:
+ color_description:
+ pedestrian_attributes:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
+ VehicleAttributes:
+ driver_id:
+ radius_wheel:
+ - is_greater_than_or_equal_to: 0
+ number_wheels:
+ - is_greater_than_or_equal_to: 1
+ bbcenter_to_rear:
+ bbcenter_to_front:
+ ground_clearance:
+ wheel_data:
+ steering_wheel_angle:
+ WheelData:
+ axle:
+ index:
+ position:
+ wheel_radius:
+ rim_radius:
+ width:
+ orientation:
+ rotation_rate:
+ model_reference:
+ friction_coefficient:
+ MovingObjectClassification:
+ assigned_lane_id:
+ assigned_lane_percentage:
+ logical_lane_assignment:
+ VehicleClassification:
+ type:
+ light_state:
+ has_trailer:
+ trailer_id:
+ - check_if:
+ - is_equal_to: true
+ target: this.has_trailer
+ do_check:
+ - is_set:
+ role:
+ LightState:
+ indicator_state:
+ front_fog_light:
+ rear_fog_light:
+ head_light:
+ high_beam:
+ reversing_light:
+ brake_light_state:
+ license_plate_illumination_rear:
+ emergency_vehicle_illumination:
+ service_vehicle_illumination:
+ PedestrianAttributes:
+ bbcenter_to_root:
+ skeleton_bone:
+ Bone:
+ type:
+ position:
+ orientation:
+ length:
+ missing:
+ velocity:
+ orientation_rate:
diff --git a/rules/input_rules/osi_occupant.yml b/rules/input_rules/osi_occupant.yml
new file mode 100644
index 0000000..062e01a
--- /dev/null
+++ b/rules/input_rules/osi_occupant.yml
@@ -0,0 +1,9 @@
+Occupant:
+ id:
+ - is_globally_unique:
+ classification:
+ source_reference:
+ Classification:
+ is_driver:
+ seat:
+ steering_control:
diff --git a/rules/input_rules/osi_referenceline.yml b/rules/input_rules/osi_referenceline.yml
new file mode 100644
index 0000000..535bdc6
--- /dev/null
+++ b/rules/input_rules/osi_referenceline.yml
@@ -0,0 +1,10 @@
+ReferenceLine:
+ id:
+ - is_globally_unique:
+ - is_set:
+ type:
+ poly_line:
+ ReferenceLinePoint:
+ world_position:
+ s_position:
+ t_axis_yaw:
diff --git a/rules/input_rules/osi_roadmarking.yml b/rules/input_rules/osi_roadmarking.yml
new file mode 100644
index 0000000..37b14e7
--- /dev/null
+++ b/rules/input_rules/osi_roadmarking.yml
@@ -0,0 +1,81 @@
+RoadMarking:
+ id:
+ - is_set:
+ base:
+ classification:
+ source_reference:
+ color_description:
+ Classification:
+ type:
+ traffic_main_sign_type:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ monochrome_color:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_equal_to: 1
+ target: this.monochrome_color
+ do_check:
+ - is_set:
+ value:
+ value_text:
+ assigned_lane_id:
+ - refers_to: Lane
+ is_out_of_service:
+ country:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ country_revision:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ code:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ sub_code:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ logical_lane_assignment:
diff --git a/rules/input_rules/osi_route.yml b/rules/input_rules/osi_route.yml
new file mode 100644
index 0000000..9621c28
--- /dev/null
+++ b/rules/input_rules/osi_route.yml
@@ -0,0 +1,11 @@
+Route:
+ route_id:
+ - is_set:
+ route_segment:
+ LogicalLaneSegment:
+ logical_lane_id:
+ - refers_to: LogicalLane
+ start_s:
+ end_s:
+ RouteSegment:
+ lane_segment:
diff --git a/rules/input_rules/osi_sensordata.yml b/rules/input_rules/osi_sensordata.yml
new file mode 100644
index 0000000..be3bda5
--- /dev/null
+++ b/rules/input_rules/osi_sensordata.yml
@@ -0,0 +1,40 @@
+DetectedEntityHeader:
+ measurement_time:
+ cycle_counter:
+ data_qualifier:
+SensorData:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ host_vehicle_location:
+ host_vehicle_location_rmse:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ sensor_view:
+ last_measurement_time:
+ stationary_object_header:
+ stationary_object:
+ moving_object_header:
+ moving_object:
+ traffic_sign_header:
+ traffic_sign:
+ traffic_light_header:
+ traffic_light:
+ road_marking_header:
+ road_marking:
+ lane_boundary_header:
+ lane_boundary:
+ lane_header:
+ lane:
+ occupant_header:
+ occupant:
+ feature_data:
+ logical_detection_data:
+ VirtualDetectionArea:
+ polygon:
+ virtual_detection_area:
+ system_time:
diff --git a/rules/input_rules/osi_sensorspecific.yml b/rules/input_rules/osi_sensorspecific.yml
new file mode 100644
index 0000000..078b330
--- /dev/null
+++ b/rules/input_rules/osi_sensorspecific.yml
@@ -0,0 +1,14 @@
+RadarSpecificObjectData:
+ rcs:
+LidarSpecificObjectData:
+ maximum_measurement_distance_sensor:
+ - is_greater_than_or_equal_to: 0
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ trilateration_status:
+ trend:
+ signalway:
+ Signalway:
+ sender_id:
+ receiver_id:
diff --git a/rules/input_rules/osi_sensorview.yml b/rules/input_rules/osi_sensorview.yml
new file mode 100644
index 0000000..13239be
--- /dev/null
+++ b/rules/input_rules/osi_sensorview.yml
@@ -0,0 +1,45 @@
+SensorView:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ host_vehicle_data:
+ global_ground_truth:
+ host_vehicle_id:
+ - refers_to: 'MovingObject'
+ - is_set:
+ generic_sensor_view:
+ radar_sensor_view:
+ lidar_sensor_view:
+ camera_sensor_view:
+ ultrasonic_sensor_view:
+GenericSensorView:
+ view_configuration:
+RadarSensorView:
+ view_configuration:
+ reflection:
+ Reflection:
+ signal_strength:
+ time_of_flight:
+ doppler_shift:
+ source_horizontal_angle:
+ source_vertical_angle:
+LidarSensorView:
+ view_configuration:
+ reflection:
+ Reflection:
+ signal_strength:
+ time_of_flight:
+ doppler_shift:
+ normal_to_surface:
+ object_id:
+CameraSensorView:
+ view_configuration:
+ image_data:
+UltrasonicSensorView:
+ view_configuration:
diff --git a/rules/input_rules/osi_sensorviewconfiguration.yml b/rules/input_rules/osi_sensorviewconfiguration.yml
new file mode 100644
index 0000000..8b3e4d0
--- /dev/null
+++ b/rules/input_rules/osi_sensorviewconfiguration.yml
@@ -0,0 +1,88 @@
+SensorViewConfiguration:
+ version:
+ - is_set:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ range:
+ - is_greater_than_or_equal_to: 0
+ update_cycle_time:
+ update_cycle_offset:
+ simulation_start_time:
+ omit_static_information:
+ generic_sensor_view_configuration:
+ radar_sensor_view_configuration:
+ lidar_sensor_view_configuration:
+ camera_sensor_view_configuration:
+ ultrasonic_sensor_view_configuration:
+GenericSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+RadarSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_rays_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_rays_vertical:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ emitter_frequency:
+ - is_greater_than_or_equal_to: 0
+ tx_antenna_diagram:
+ rx_antenna_diagram:
+ AntennaDiagramEntry:
+ horizontal_angle:
+ vertical_angle:
+ response:
+LidarSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_rays_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_rays_vertical:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ emitter_frequency:
+ - is_greater_than_or_equal_to: 0
+ num_of_pixels:
+ - is_greater_than_or_equal_to: 1
+ directions:
+ timings:
+CameraSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_pixels_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_pixels_vertical:
+ - is_greater_than_or_equal_to: 1
+ channel_format:
+ - is_greater_than_or_equal_to: 1
+ samples_per_pixel:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ wavelength_data:
+ pixel_order:
+UltrasonicSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
diff --git a/rules/input_rules/osi_streamingupdate.yml b/rules/input_rules/osi_streamingupdate.yml
new file mode 100644
index 0000000..90d67f3
--- /dev/null
+++ b/rules/input_rules/osi_streamingupdate.yml
@@ -0,0 +1,12 @@
+StreamingUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ stationary_object_update:
+ moving_object_update:
+ traffic_sign_update:
+ traffic_light_update:
+ environmental_conditions_update:
+ host_vehicle_data_update:
+ obsolete_id:
diff --git a/rules/input_rules/osi_trafficcommand.yml b/rules/input_rules/osi_trafficcommand.yml
new file mode 100644
index 0000000..a858464
--- /dev/null
+++ b/rules/input_rules/osi_trafficcommand.yml
@@ -0,0 +1,78 @@
+TrafficCommand:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ traffic_participant_id:
+ - is_set:
+ action:
+TrafficAction:
+ follow_trajectory_action:
+ follow_path_action:
+ acquire_global_position_action:
+ custom_action:
+ longitudinal_distance_action:
+ lane_offset_action:
+ lateral_distance_action:
+ teleport_action:
+ ActionHeader:
+ action_id:
+ - is_set:
+ DynamicConstraints:
+ max_acceleration:
+ max_deceleration:
+ max_speed:
+ FollowTrajectoryAction:
+ action_header:
+ trajectory_point:
+ constrain_orientation:
+ following_mode:
+ FollowPathAction:
+ action_header:
+ path_point:
+ constrain_orientation:
+ following_mode:
+ AcquireGlobalPositionAction:
+ action_header:
+ position:
+ orientation:
+ LaneChangeAction:
+ action_header:
+ relative_target_lane:
+ dynamics_shape:
+ distance:
+ SpeedAction:
+ action_header:
+ absolute_target_speed:
+ dynamics_shape:
+ distance:
+ AbortActionsAction:
+ action_header:
+ EndActionsAction:
+ action_header:
+ CustomAction:
+ action_header:
+ command:
+ command_type:
+ LongitudinalDistanceAction:
+ action_header:
+ target_traffic_participant_id:
+ distance:
+ freespace:
+ follow:
+ dynamic_constraints:
+ LateralDistanceAction:
+ action_header:
+ target_traffic_participant_id:
+ distance:
+ freespace:
+ follow:
+ dynamic_constraints:
+ LaneOffsetAction:
+ action_header:
+ target_lane_offset:
+ dynamics_shape:
+ TeleportAction:
+ action_header:
+ position:
+ orientation:
diff --git a/rules/input_rules/osi_trafficcommandupdate.yml b/rules/input_rules/osi_trafficcommandupdate.yml
new file mode 100644
index 0000000..5e1f327
--- /dev/null
+++ b/rules/input_rules/osi_trafficcommandupdate.yml
@@ -0,0 +1,11 @@
+TrafficCommandUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ traffic_participant_id:
+ - is_set:
+ dismissed_action:
+ DismissedAction:
+ dismissed_action_id:
+ failure_reason:
diff --git a/rules/input_rules/osi_trafficlight.yml b/rules/input_rules/osi_trafficlight.yml
new file mode 100644
index 0000000..9e66f9d
--- /dev/null
+++ b/rules/input_rules/osi_trafficlight.yml
@@ -0,0 +1,19 @@
+TrafficLight:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ classification:
+ model_reference:
+ source_reference:
+ color_description:
+ Classification:
+ color:
+ icon:
+ mode:
+ counter:
+ - is_greater_than_or_equal_to: 0
+ assigned_lane_id:
+ - refers_to: Lane
+ is_out_of_service:
+ logical_lane_assignment:
diff --git a/rules/input_rules/osi_trafficsign.yml b/rules/input_rules/osi_trafficsign.yml
new file mode 100644
index 0000000..845d2c5
--- /dev/null
+++ b/rules/input_rules/osi_trafficsign.yml
@@ -0,0 +1,51 @@
+TrafficSignValue:
+ value:
+ value_unit:
+ text:
+TrafficSign:
+ id:
+ - is_globally_unique:
+ - is_set:
+ main_sign:
+ supplementary_sign:
+ source_reference:
+ MainSign:
+ base:
+ classification:
+ model_reference:
+ Classification:
+ variability:
+ type:
+ value:
+ direction_scope:
+ assigned_lane_id:
+ - refers_to: Lane
+ vertically_mirrored:
+ is_out_of_service:
+ country:
+ country_revision:
+ code:
+ sub_code:
+ logical_lane_assignment:
+ SupplementarySign:
+ base:
+ classification:
+ model_reference:
+ Classification:
+ variability:
+ type:
+ value:
+ assigned_lane_id:
+ - refers_to: Lane
+ actor:
+ arrow:
+ is_out_of_service:
+ country:
+ country_revision:
+ code:
+ sub_code:
+ logical_lane_assignment:
+ Arrow:
+ lane_id:
+ - refers_to: Lane
+ direction:
diff --git a/rules/input_rules/osi_trafficupdate.yml b/rules/input_rules/osi_trafficupdate.yml
new file mode 100644
index 0000000..8bde406
--- /dev/null
+++ b/rules/input_rules/osi_trafficupdate.yml
@@ -0,0 +1,7 @@
+TrafficUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ update:
+ internal_state:
diff --git a/rules/input_rules/osi_version.yml b/rules/input_rules/osi_version.yml
new file mode 100644
index 0000000..7a2ef64
--- /dev/null
+++ b/rules/input_rules/osi_version.yml
@@ -0,0 +1,5 @@
+InterfaceVersion:
+ version_major:
+ version_minor:
+ version_patch:
+ current_interface_version:
diff --git a/rules/input_rules/schema/osi_common_schema.yml b/rules/input_rules/schema/osi_common_schema.yml
new file mode 100644
index 0000000..6d1ebd2
--- /dev/null
+++ b/rules/input_rules/schema/osi_common_schema.yml
@@ -0,0 +1,135 @@
+Vector3d:
+ x: any(list(include('rules', required=False)), null(), required=False)
+ y: any(list(include('rules', required=False)), null(), required=False)
+ z: any(list(include('rules', required=False)), null(), required=False)
+Vector2d:
+ x: any(list(include('rules', required=False)), null(), required=False)
+ y: any(list(include('rules', required=False)), null(), required=False)
+Timestamp:
+ seconds: any(list(include('rules', required=False)), null(), required=False)
+ nanos: any(list(include('rules', required=False)), null(), required=False)
+Dimension3d:
+ length: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+Orientation3d:
+ roll: any(list(include('rules', required=False)), null(), required=False)
+ pitch: any(list(include('rules', required=False)), null(), required=False)
+ yaw: any(list(include('rules', required=False)), null(), required=False)
+Identifier:
+ value: any(list(include('rules', required=False)), null(), required=False)
+ExternalReference:
+ reference: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ identifier: any(list(include('rules', required=False)), null(), required=False)
+MountingPosition:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+Spherical3d:
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ azimuth: any(list(include('rules', required=False)), null(), required=False)
+ elevation: any(list(include('rules', required=False)), null(), required=False)
+LogicalLaneAssignment:
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_position: any(list(include('rules', required=False)), null(), required=False)
+ angle_to_lane: any(list(include('rules', required=False)), null(), required=False)
+BoundingBox:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ contained_object_type: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+BaseStationary:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ base_polygon: any(list(include('rules', required=False)), null(), required=False)
+ bounding_box_section: any(list(include('rules', required=False)), null(), required=False)
+BaseMoving:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+ orientation_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ base_polygon: any(list(include('rules', required=False)), null(), required=False)
+ bounding_box_section: any(list(include('rules', required=False)), null(), required=False)
+StatePoint:
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+WavelengthData:
+ start: any(list(include('rules', required=False)), null(), required=False)
+ end: any(list(include('rules', required=False)), null(), required=False)
+ samples_number: any(list(include('rules', required=False)), null(), required=False)
+SpatialSignalStrength:
+ horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ColorDescription:
+ grey: any(list(include('rules', required=False)), null(), required=False)
+ rgb: any(list(include('rules', required=False)), null(), required=False)
+ rgbir: any(list(include('rules', required=False)), null(), required=False)
+ hsv: any(list(include('rules', required=False)), null(), required=False)
+ luv: any(list(include('rules', required=False)), null(), required=False)
+ cmyk: any(list(include('rules', required=False)), null(), required=False)
+ColorGrey:
+ grey: any(list(include('rules', required=False)), null(), required=False)
+ColorRGB:
+ red: any(list(include('rules', required=False)), null(), required=False)
+ green: any(list(include('rules', required=False)), null(), required=False)
+ blue: any(list(include('rules', required=False)), null(), required=False)
+ColorRGBIR:
+ red: any(list(include('rules', required=False)), null(), required=False)
+ green: any(list(include('rules', required=False)), null(), required=False)
+ blue: any(list(include('rules', required=False)), null(), required=False)
+ infrared: any(list(include('rules', required=False)), null(), required=False)
+ColorHSV:
+ hue: any(list(include('rules', required=False)), null(), required=False)
+ saturation: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ColorLUV:
+ luminance: any(list(include('rules', required=False)), null(), required=False)
+ u: any(list(include('rules', required=False)), null(), required=False)
+ v: any(list(include('rules', required=False)), null(), required=False)
+ColorCMYK:
+ cyan: any(list(include('rules', required=False)), null(), required=False)
+ magenta: any(list(include('rules', required=False)), null(), required=False)
+ yellow: any(list(include('rules', required=False)), null(), required=False)
+ key: any(list(include('rules', required=False)), null(), required=False)
+Pedalry:
+ pedal_position_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_brake: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_clutch: any(list(include('rules', required=False)), null(), required=False)
+VehicleSteeringWheel:
+ angle: any(list(include('rules', required=False)), null(), required=False)
+ angular_speed: any(list(include('rules', required=False)), null(), required=False)
+ torque: any(list(include('rules', required=False)), null(), required=False)
+GeodeticPosition:
+ longitude: any(list(include('rules', required=False)), null(), required=False)
+ latitude: any(list(include('rules', required=False)), null(), required=False)
+ altitude: any(list(include('rules', required=False)), null(), required=False)
+KeyValuePair:
+ key: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+Polygon3d:
+ vertex: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_datarecording_schema.yml b/rules/input_rules/schema/osi_datarecording_schema.yml
new file mode 100644
index 0000000..72f32e7
--- /dev/null
+++ b/rules/input_rules/schema/osi_datarecording_schema.yml
@@ -0,0 +1,21 @@
+SensorDataSeries:
+ sensor_data: any(list(include('rules', required=False)), null(), required=False)
+SensorDataSeriesList:
+ sensor: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedlane_schema.yml b/rules/input_rules/schema/osi_detectedlane_schema.yml
new file mode 100644
index 0000000..ca56145
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedlane_schema.yml
@@ -0,0 +1,33 @@
+DetectedLane:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ CandidateLane:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+DetectedLaneBoundary:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line_rmse: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line_confidences: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateLaneBoundary:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedobject_schema.yml b/rules/input_rules/schema/osi_detectedobject_schema.yml
new file mode 100644
index 0000000..f32536d
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedobject_schema.yml
@@ -0,0 +1,57 @@
+DetectedItemHeader:
+ tracking_id: any(list(include('rules', required=False)), null(), required=False)
+ ground_truth_id: any(list(include('rules', required=False)), null(), required=False)
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ age: any(list(include('rules', required=False)), null(), required=False)
+ measurement_state: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+DetectedStationaryObject:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ radar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ lidar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ camera_specifics: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_specifics: any(list(include('rules', required=False)), null(), required=False)
+ CandidateStationaryObject:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+DetectedMovingObject:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ reference_point: any(list(include('rules', required=False)), null(), required=False)
+ movement_state: any(list(include('rules', required=False)), null(), required=False)
+ percentage_side_lane_left: any(list(include('rules', required=False)), null(), required=False)
+ percentage_side_lane_right: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ radar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ lidar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ camera_specifics: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_specifics: any(list(include('rules', required=False)), null(), required=False)
+ CandidateMovingObject:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_classification: any(list(include('rules', required=False)), null(), required=False)
+ head_pose: any(list(include('rules', required=False)), null(), required=False)
+ upper_body_pose: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedoccupant_schema.yml b/rules/input_rules/schema/osi_detectedoccupant_schema.yml
new file mode 100644
index 0000000..31c7816
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedoccupant_schema.yml
@@ -0,0 +1,23 @@
+DetectedOccupant:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ CandidateOccupant:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedroadmarking_schema.yml b/rules/input_rules/schema/osi_detectedroadmarking_schema.yml
new file mode 100644
index 0000000..6df5e8f
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedroadmarking_schema.yml
@@ -0,0 +1,26 @@
+DetectedRoadMarking:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateRoadMarking:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedtrafficlight_schema.yml b/rules/input_rules/schema/osi_detectedtrafficlight_schema.yml
new file mode 100644
index 0000000..d855af9
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedtrafficlight_schema.yml
@@ -0,0 +1,26 @@
+DetectedTrafficLight:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateTrafficLight:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_detectedtrafficsign_schema.yml b/rules/input_rules/schema/osi_detectedtrafficsign_schema.yml
new file mode 100644
index 0000000..d4ee871
--- /dev/null
+++ b/rules/input_rules/schema/osi_detectedtrafficsign_schema.yml
@@ -0,0 +1,36 @@
+DetectedTrafficSign:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ main_sign: any(list(include('rules', required=False)), null(), required=False)
+ supplementary_sign: any(list(include('rules', required=False)), null(), required=False)
+ DetectedMainSign:
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ geometry: any(list(include('rules', required=False)), null(), required=False)
+ CandidateMainSign:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ DetectedSupplementarySign:
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ CandidateSupplementarySign:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_environment_schema.yml b/rules/input_rules/schema/osi_environment_schema.yml
new file mode 100644
index 0000000..92a0a92
--- /dev/null
+++ b/rules/input_rules/schema/osi_environment_schema.yml
@@ -0,0 +1,41 @@
+EnvironmentalConditions:
+ ambient_illumination: any(list(include('rules', required=False)), null(), required=False)
+ time_of_day: any(list(include('rules', required=False)), null(), required=False)
+ unix_timestamp: any(list(include('rules', required=False)), null(), required=False)
+ atmospheric_pressure: any(list(include('rules', required=False)), null(), required=False)
+ temperature: any(list(include('rules', required=False)), null(), required=False)
+ relative_humidity: any(list(include('rules', required=False)), null(), required=False)
+ precipitation: any(list(include('rules', required=False)), null(), required=False)
+ fog: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ clouds: any(list(include('rules', required=False)), null(), required=False)
+ wind: any(list(include('rules', required=False)), null(), required=False)
+ sun: any(list(include('rules', required=False)), null(), required=False)
+ TimeOfDay:
+ seconds_since_midnight: any(list(include('rules', required=False)), null(), required=False)
+ CloudLayer:
+ fractional_cloud_cover: any(list(include('rules', required=False)), null(), required=False)
+ Wind:
+ origin_direction: any(list(include('rules', required=False)), null(), required=False)
+ speed: any(list(include('rules', required=False)), null(), required=False)
+ Sun:
+ azimuth: any(list(include('rules', required=False)), null(), required=False)
+ elevation: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_featuredata_schema.yml b/rules/input_rules/schema/osi_featuredata_schema.yml
new file mode 100644
index 0000000..f68009c
--- /dev/null
+++ b/rules/input_rules/schema/osi_featuredata_schema.yml
@@ -0,0 +1,128 @@
+FeatureData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor: any(list(include('rules', required=False)), null(), required=False)
+SensorDetectionHeader:
+ measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ cycle_counter: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_detections: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ extended_qualifier: any(list(include('rules', required=False)), null(), required=False)
+RadarDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+RadarDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity_rmse: any(list(include('rules', required=False)), null(), required=False)
+ rcs: any(list(include('rules', required=False)), null(), required=False)
+ snr: any(list(include('rules', required=False)), null(), required=False)
+ point_target_probability: any(list(include('rules', required=False)), null(), required=False)
+ ambiguity_id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+LidarDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+LidarDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+ height_rmse: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+ free_space_probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ reflectivity: any(list(include('rules', required=False)), null(), required=False)
+ echo_pulse_width: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity: any(list(include('rules', required=False)), null(), required=False)
+ beam_id: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetectionSpecificHeader:
+ max_range: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_indirect_detections: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ specific_header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+ indirect_detection: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicIndirectDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ ellipsoid_radial: any(list(include('rules', required=False)), null(), required=False)
+ ellipsoid_axial: any(list(include('rules', required=False)), null(), required=False)
+ receiver_id: any(list(include('rules', required=False)), null(), required=False)
+ receiver_origin: any(list(include('rules', required=False)), null(), required=False)
+CameraDetectionSpecificHeader:
+ number_of_valid_points: any(list(include('rules', required=False)), null(), required=False)
+CameraDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ specific_header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+ point: any(list(include('rules', required=False)), null(), required=False)
+CameraDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ time_difference: any(list(include('rules', required=False)), null(), required=False)
+ image_shape_type: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_background: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_foreground: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_flat: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_upright: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_ground: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_sky: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_vegetation: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_road: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_non_driving_lane: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_non_road: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_moving_object: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_landmark: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_road_marking: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_vehicle: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_animal: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_front: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_side: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_rear: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_probability: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ color_probability: any(list(include('rules', required=False)), null(), required=False)
+ ambiguity_id: any(list(include('rules', required=False)), null(), required=False)
+ first_point_index: any(list(include('rules', required=False)), null(), required=False)
+ number_of_points: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+CameraPoint:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ point: any(list(include('rules', required=False)), null(), required=False)
+ point_rmse: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_groundtruth_schema.yml b/rules/input_rules/schema/osi_groundtruth_schema.yml
new file mode 100644
index 0000000..0453a28
--- /dev/null
+++ b/rules/input_rules/schema/osi_groundtruth_schema.yml
@@ -0,0 +1,41 @@
+GroundTruth:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ moving_object: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ road_marking: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ lane: any(list(include('rules', required=False)), null(), required=False)
+ occupant: any(list(include('rules', required=False)), null(), required=False)
+ environmental_conditions: any(list(include('rules', required=False)), null(), required=False)
+ country_code: any(list(include('rules', required=False)), null(), required=False)
+ proj_string: any(list(include('rules', required=False)), null(), required=False)
+ map_reference: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ reference_line: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane: any(list(include('rules', required=False)), null(), required=False)
+ proj_frame_offset: any(list(include('rules', required=False)), null(), required=False)
+ ProjFrameOffset:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ yaw: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_hostvehicledata_schema.yml b/rules/input_rules/schema/osi_hostvehicledata_schema.yml
new file mode 100644
index 0000000..d4302b6
--- /dev/null
+++ b/rules/input_rules/schema/osi_hostvehicledata_schema.yml
@@ -0,0 +1,76 @@
+HostVehicleData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ location: any(list(include('rules', required=False)), null(), required=False)
+ location_rmse: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_basics: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_powertrain: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_brake_system: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_steering: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_wheels: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_localization: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_automated_driving_function: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_motion: any(list(include('rules', required=False)), null(), required=False)
+ route: any(list(include('rules', required=False)), null(), required=False)
+ VehicleBasics:
+ curb_weight: any(list(include('rules', required=False)), null(), required=False)
+ operating_state: any(list(include('rules', required=False)), null(), required=False)
+ VehiclePowertrain:
+ pedal_position_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_clutch: any(list(include('rules', required=False)), null(), required=False)
+ gear_transmission: any(list(include('rules', required=False)), null(), required=False)
+ motor: any(list(include('rules', required=False)), null(), required=False)
+ Motor:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ rpm: any(list(include('rules', required=False)), null(), required=False)
+ torque: any(list(include('rules', required=False)), null(), required=False)
+ VehicleBrakeSystem:
+ pedal_position_brake: any(list(include('rules', required=False)), null(), required=False)
+ VehicleSteering:
+ vehicle_steering_wheel: any(list(include('rules', required=False)), null(), required=False)
+ VehicleWheels:
+ wheel_data: any(list(include('rules', required=False)), null(), required=False)
+ WheelData:
+ axle: any(list(include('rules', required=False)), null(), required=False)
+ index: any(list(include('rules', required=False)), null(), required=False)
+ rotation_rate: any(list(include('rules', required=False)), null(), required=False)
+ slip: any(list(include('rules', required=False)), null(), required=False)
+ VehicleLocalization:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ geodetic_position: any(list(include('rules', required=False)), null(), required=False)
+ VehicleMotion:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ current_curvature: any(list(include('rules', required=False)), null(), required=False)
+ VehicleAutomatedDrivingFunction:
+ name: any(list(include('rules', required=False)), null(), required=False)
+ custom_name: any(list(include('rules', required=False)), null(), required=False)
+ state: any(list(include('rules', required=False)), null(), required=False)
+ custom_state: any(list(include('rules', required=False)), null(), required=False)
+ driver_override: any(list(include('rules', required=False)), null(), required=False)
+ custom_detail: any(list(include('rules', required=False)), null(), required=False)
+ DriverOverride:
+ active: any(list(include('rules', required=False)), null(), required=False)
+ override_reason: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_lane_schema.yml b/rules/input_rules/schema/osi_lane_schema.yml
new file mode 100644
index 0000000..2606224
--- /dev/null
+++ b/rules/input_rules/schema/osi_lane_schema.yml
@@ -0,0 +1,59 @@
+Lane:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ is_host_vehicle_lane: any(list(include('rules', required=False)), null(), required=False)
+ centerline: any(list(include('rules', required=False)), null(), required=False)
+ centerline_is_driving_direction: any(list(include('rules', required=False)), null(), required=False)
+ left_adjacent_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ right_adjacent_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ lane_pairing: any(list(include('rules', required=False)), null(), required=False)
+ right_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ left_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ free_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ road_condition: any(list(include('rules', required=False)), null(), required=False)
+ subtype: any(list(include('rules', required=False)), null(), required=False)
+ RoadCondition:
+ surface_temperature: any(list(include('rules', required=False)), null(), required=False)
+ surface_water_film: any(list(include('rules', required=False)), null(), required=False)
+ surface_freezing_point: any(list(include('rules', required=False)), null(), required=False)
+ surface_ice: any(list(include('rules', required=False)), null(), required=False)
+ surface_roughness: any(list(include('rules', required=False)), null(), required=False)
+ surface_texture: any(list(include('rules', required=False)), null(), required=False)
+ LanePairing:
+ antecessor_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ successor_lane_id: any(list(include('rules', required=False)), null(), required=False)
+LaneBoundary:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ BoundaryPoint:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+ dash: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ limiting_structure_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_logicaldetectiondata_schema.yml b/rules/input_rules/schema/osi_logicaldetectiondata_schema.yml
new file mode 100644
index 0000000..17588d0
--- /dev/null
+++ b/rules/input_rules/schema/osi_logicaldetectiondata_schema.yml
@@ -0,0 +1,39 @@
+LogicalDetectionData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ header: any(list(include('rules', required=False)), null(), required=False)
+ logical_detection: any(list(include('rules', required=False)), null(), required=False)
+LogicalDetectionDataHeader:
+ logical_detection_time: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_logical_detections: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+LogicalDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ velocity_rmse: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+ snr: any(list(include('rules', required=False)), null(), required=False)
+ point_target_probability: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ echo_pulse_width: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_logicallane_schema.yml b/rules/input_rules/schema/osi_logicallane_schema.yml
new file mode 100644
index 0000000..a312fa3
--- /dev/null
+++ b/rules/input_rules/schema/osi_logicallane_schema.yml
@@ -0,0 +1,73 @@
+LogicalLaneBoundary:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ reference_line_id: any(list(include('rules', required=False)), null(), required=False)
+ physical_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ passing_rule: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ LogicalBoundaryPoint:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_position: any(list(include('rules', required=False)), null(), required=False)
+LogicalLane:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ physical_lane_reference: any(list(include('rules', required=False)), null(), required=False)
+ reference_line_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ move_direction: any(list(include('rules', required=False)), null(), required=False)
+ right_adjacent_lane: any(list(include('rules', required=False)), null(), required=False)
+ left_adjacent_lane: any(list(include('rules', required=False)), null(), required=False)
+ overlapping_lane: any(list(include('rules', required=False)), null(), required=False)
+ right_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ left_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ predecessor_lane: any(list(include('rules', required=False)), null(), required=False)
+ successor_lane: any(list(include('rules', required=False)), null(), required=False)
+ street_name: any(list(include('rules', required=False)), null(), required=False)
+ traffic_rule: any(list(include('rules', required=False)), null(), required=False)
+ PhysicalLaneReference:
+ physical_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ LaneConnection:
+ other_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ at_begin_of_other_lane: any(list(include('rules', required=False)), null(), required=False)
+ LaneRelation:
+ other_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ start_s_other: any(list(include('rules', required=False)), null(), required=False)
+ end_s_other: any(list(include('rules', required=False)), null(), required=False)
+ TrafficRule:
+ traffic_rule_type: any(list(include('rules', required=False)), null(), required=False)
+ traffic_rule_validity: any(list(include('rules', required=False)), null(), required=False)
+ speed_limit: any(list(include('rules', required=False)), null(), required=False)
+ TrafficRuleValidity:
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ valid_for_type: any(list(include('rules', required=False)), null(), required=False)
+ TypeValidity:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_role: any(list(include('rules', required=False)), null(), required=False)
+ SpeedLimit:
+ speed_limit_value: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_motionrequest_schema.yml b/rules/input_rules/schema/osi_motionrequest_schema.yml
new file mode 100644
index 0000000..b470d4e
--- /dev/null
+++ b/rules/input_rules/schema/osi_motionrequest_schema.yml
@@ -0,0 +1,31 @@
+MotionRequest:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ motion_request_type: any(list(include('rules', required=False)), null(), required=False)
+ desired_state: any(list(include('rules', required=False)), null(), required=False)
+ desired_trajectory: any(list(include('rules', required=False)), null(), required=False)
+ DesiredState:
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ DesiredTrajectory:
+ trajectory_point: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_object_schema.yml b/rules/input_rules/schema/osi_object_schema.yml
new file mode 100644
index 0000000..0c3f1fa
--- /dev/null
+++ b/rules/input_rules/schema/osi_object_schema.yml
@@ -0,0 +1,101 @@
+StationaryObject:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ material: any(list(include('rules', required=False)), null(), required=False)
+ density: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ emitting_structure_attribute: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_percentage: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ EmittingStructureAttribute:
+ wavelength_data: any(list(include('rules', required=False)), null(), required=False)
+ emitted_spatial_signal_strength: any(list(include('rules', required=False)), null(), required=False)
+MovingObject:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_attributes: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ future_trajectory: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ pedestrian_attributes: any(list(include('rules', required=False)), null(), required=False)
+ VehicleAttributes:
+ driver_id: any(list(include('rules', required=False)), null(), required=False)
+ radius_wheel: any(list(include('rules', required=False)), null(), required=False)
+ number_wheels: any(list(include('rules', required=False)), null(), required=False)
+ bbcenter_to_rear: any(list(include('rules', required=False)), null(), required=False)
+ bbcenter_to_front: any(list(include('rules', required=False)), null(), required=False)
+ ground_clearance: any(list(include('rules', required=False)), null(), required=False)
+ wheel_data: any(list(include('rules', required=False)), null(), required=False)
+ steering_wheel_angle: any(list(include('rules', required=False)), null(), required=False)
+ WheelData:
+ axle: any(list(include('rules', required=False)), null(), required=False)
+ index: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ wheel_radius: any(list(include('rules', required=False)), null(), required=False)
+ rim_radius: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ rotation_rate: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ friction_coefficient: any(list(include('rules', required=False)), null(), required=False)
+ MovingObjectClassification:
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_percentage: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ VehicleClassification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ light_state: any(list(include('rules', required=False)), null(), required=False)
+ has_trailer: any(list(include('rules', required=False)), null(), required=False)
+ trailer_id: any(list(include('rules', required=False)), null(), required=False)
+ role: any(list(include('rules', required=False)), null(), required=False)
+ LightState:
+ indicator_state: any(list(include('rules', required=False)), null(), required=False)
+ front_fog_light: any(list(include('rules', required=False)), null(), required=False)
+ rear_fog_light: any(list(include('rules', required=False)), null(), required=False)
+ head_light: any(list(include('rules', required=False)), null(), required=False)
+ high_beam: any(list(include('rules', required=False)), null(), required=False)
+ reversing_light: any(list(include('rules', required=False)), null(), required=False)
+ brake_light_state: any(list(include('rules', required=False)), null(), required=False)
+ license_plate_illumination_rear: any(list(include('rules', required=False)), null(), required=False)
+ emergency_vehicle_illumination: any(list(include('rules', required=False)), null(), required=False)
+ service_vehicle_illumination: any(list(include('rules', required=False)), null(), required=False)
+ PedestrianAttributes:
+ bbcenter_to_root: any(list(include('rules', required=False)), null(), required=False)
+ skeleton_bone: any(list(include('rules', required=False)), null(), required=False)
+ Bone:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ length: any(list(include('rules', required=False)), null(), required=False)
+ missing: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_occupant_schema.yml b/rules/input_rules/schema/osi_occupant_schema.yml
new file mode 100644
index 0000000..0b2907c
--- /dev/null
+++ b/rules/input_rules/schema/osi_occupant_schema.yml
@@ -0,0 +1,25 @@
+Occupant:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ is_driver: any(list(include('rules', required=False)), null(), required=False)
+ seat: any(list(include('rules', required=False)), null(), required=False)
+ steering_control: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_referenceline_schema.yml b/rules/input_rules/schema/osi_referenceline_schema.yml
new file mode 100644
index 0000000..8e284d3
--- /dev/null
+++ b/rules/input_rules/schema/osi_referenceline_schema.yml
@@ -0,0 +1,25 @@
+ReferenceLine:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ poly_line: any(list(include('rules', required=False)), null(), required=False)
+ ReferenceLinePoint:
+ world_position: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_axis_yaw: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_roadmarking_schema.yml b/rules/input_rules/schema/osi_roadmarking_schema.yml
new file mode 100644
index 0000000..1ec67a7
--- /dev/null
+++ b/rules/input_rules/schema/osi_roadmarking_schema.yml
@@ -0,0 +1,36 @@
+RoadMarking:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ traffic_main_sign_type: any(list(include('rules', required=False)), null(), required=False)
+ monochrome_color: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ value_text: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_route_schema.yml b/rules/input_rules/schema/osi_route_schema.yml
new file mode 100644
index 0000000..af073f9
--- /dev/null
+++ b/rules/input_rules/schema/osi_route_schema.yml
@@ -0,0 +1,26 @@
+Route:
+ route_id: any(list(include('rules', required=False)), null(), required=False)
+ route_segment: any(list(include('rules', required=False)), null(), required=False)
+ LogicalLaneSegment:
+ logical_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ RouteSegment:
+ lane_segment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_sensordata_schema.yml b/rules/input_rules/schema/osi_sensordata_schema.yml
new file mode 100644
index 0000000..3fa49b0
--- /dev/null
+++ b/rules/input_rules/schema/osi_sensordata_schema.yml
@@ -0,0 +1,53 @@
+DetectedEntityHeader:
+ measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ cycle_counter: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+SensorData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_location: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_location_rmse: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ last_measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object_header: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_header: any(list(include('rules', required=False)), null(), required=False)
+ moving_object: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign_header: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light_header: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ road_marking_header: any(list(include('rules', required=False)), null(), required=False)
+ road_marking: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary_header: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ lane_header: any(list(include('rules', required=False)), null(), required=False)
+ lane: any(list(include('rules', required=False)), null(), required=False)
+ occupant_header: any(list(include('rules', required=False)), null(), required=False)
+ occupant: any(list(include('rules', required=False)), null(), required=False)
+ feature_data: any(list(include('rules', required=False)), null(), required=False)
+ logical_detection_data: any(list(include('rules', required=False)), null(), required=False)
+ VirtualDetectionArea:
+ polygon: any(list(include('rules', required=False)), null(), required=False)
+ virtual_detection_area: any(list(include('rules', required=False)), null(), required=False)
+ system_time: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_sensorspecific_schema.yml b/rules/input_rules/schema/osi_sensorspecific_schema.yml
new file mode 100644
index 0000000..4a1bd90
--- /dev/null
+++ b/rules/input_rules/schema/osi_sensorspecific_schema.yml
@@ -0,0 +1,28 @@
+RadarSpecificObjectData:
+ rcs: any(list(include('rules', required=False)), null(), required=False)
+LidarSpecificObjectData:
+ maximum_measurement_distance_sensor: any(list(include('rules', required=False)), null(), required=False)
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ trilateration_status: any(list(include('rules', required=False)), null(), required=False)
+ trend: any(list(include('rules', required=False)), null(), required=False)
+ signalway: any(list(include('rules', required=False)), null(), required=False)
+ Signalway:
+ sender_id: any(list(include('rules', required=False)), null(), required=False)
+ receiver_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_sensorview_schema.yml b/rules/input_rules/schema/osi_sensorview_schema.yml
new file mode 100644
index 0000000..349b066
--- /dev/null
+++ b/rules/input_rules/schema/osi_sensorview_schema.yml
@@ -0,0 +1,56 @@
+SensorView:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_data: any(list(include('rules', required=False)), null(), required=False)
+ global_ground_truth: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ generic_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+GenericSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+RadarSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ reflection: any(list(include('rules', required=False)), null(), required=False)
+ Reflection:
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ time_of_flight: any(list(include('rules', required=False)), null(), required=False)
+ doppler_shift: any(list(include('rules', required=False)), null(), required=False)
+ source_horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ source_vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+LidarSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ reflection: any(list(include('rules', required=False)), null(), required=False)
+ Reflection:
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ time_of_flight: any(list(include('rules', required=False)), null(), required=False)
+ doppler_shift: any(list(include('rules', required=False)), null(), required=False)
+ normal_to_surface: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+CameraSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ image_data: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_sensorviewconfiguration_schema.yml b/rules/input_rules/schema/osi_sensorviewconfiguration_schema.yml
new file mode 100644
index 0000000..0a2b73d
--- /dev/null
+++ b/rules/input_rules/schema/osi_sensorviewconfiguration_schema.yml
@@ -0,0 +1,88 @@
+SensorViewConfiguration:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ range: any(list(include('rules', required=False)), null(), required=False)
+ update_cycle_time: any(list(include('rules', required=False)), null(), required=False)
+ update_cycle_offset: any(list(include('rules', required=False)), null(), required=False)
+ simulation_start_time: any(list(include('rules', required=False)), null(), required=False)
+ omit_static_information: any(list(include('rules', required=False)), null(), required=False)
+ generic_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+GenericSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+RadarSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_vertical: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ emitter_frequency: any(list(include('rules', required=False)), null(), required=False)
+ tx_antenna_diagram: any(list(include('rules', required=False)), null(), required=False)
+ rx_antenna_diagram: any(list(include('rules', required=False)), null(), required=False)
+ AntennaDiagramEntry:
+ horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+ response: any(list(include('rules', required=False)), null(), required=False)
+LidarSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_vertical: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ emitter_frequency: any(list(include('rules', required=False)), null(), required=False)
+ num_of_pixels: any(list(include('rules', required=False)), null(), required=False)
+ directions: any(list(include('rules', required=False)), null(), required=False)
+ timings: any(list(include('rules', required=False)), null(), required=False)
+CameraSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_pixels_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_pixels_vertical: any(list(include('rules', required=False)), null(), required=False)
+ channel_format: any(list(include('rules', required=False)), null(), required=False)
+ samples_per_pixel: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ wavelength_data: any(list(include('rules', required=False)), null(), required=False)
+ pixel_order: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_streamingupdate_schema.yml b/rules/input_rules/schema/osi_streamingupdate_schema.yml
new file mode 100644
index 0000000..d1e7e28
--- /dev/null
+++ b/rules/input_rules/schema/osi_streamingupdate_schema.yml
@@ -0,0 +1,27 @@
+StreamingUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object_update: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_update: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign_update: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light_update: any(list(include('rules', required=False)), null(), required=False)
+ environmental_conditions_update: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_data_update: any(list(include('rules', required=False)), null(), required=False)
+ obsolete_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_trafficcommand_schema.yml b/rules/input_rules/schema/osi_trafficcommand_schema.yml
new file mode 100644
index 0000000..6c8bef2
--- /dev/null
+++ b/rules/input_rules/schema/osi_trafficcommand_schema.yml
@@ -0,0 +1,91 @@
+TrafficCommand:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ action: any(list(include('rules', required=False)), null(), required=False)
+TrafficAction:
+ follow_trajectory_action: any(list(include('rules', required=False)), null(), required=False)
+ follow_path_action: any(list(include('rules', required=False)), null(), required=False)
+ acquire_global_position_action: any(list(include('rules', required=False)), null(), required=False)
+ custom_action: any(list(include('rules', required=False)), null(), required=False)
+ longitudinal_distance_action: any(list(include('rules', required=False)), null(), required=False)
+ lane_offset_action: any(list(include('rules', required=False)), null(), required=False)
+ lateral_distance_action: any(list(include('rules', required=False)), null(), required=False)
+ teleport_action: any(list(include('rules', required=False)), null(), required=False)
+ ActionHeader:
+ action_id: any(list(include('rules', required=False)), null(), required=False)
+ DynamicConstraints:
+ max_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ max_deceleration: any(list(include('rules', required=False)), null(), required=False)
+ max_speed: any(list(include('rules', required=False)), null(), required=False)
+ FollowTrajectoryAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ trajectory_point: any(list(include('rules', required=False)), null(), required=False)
+ constrain_orientation: any(list(include('rules', required=False)), null(), required=False)
+ following_mode: any(list(include('rules', required=False)), null(), required=False)
+ FollowPathAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ path_point: any(list(include('rules', required=False)), null(), required=False)
+ constrain_orientation: any(list(include('rules', required=False)), null(), required=False)
+ following_mode: any(list(include('rules', required=False)), null(), required=False)
+ AcquireGlobalPositionAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ LaneChangeAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ relative_target_lane: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ SpeedAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ absolute_target_speed: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ AbortActionsAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ EndActionsAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ CustomAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ command: any(list(include('rules', required=False)), null(), required=False)
+ command_type: any(list(include('rules', required=False)), null(), required=False)
+ LongitudinalDistanceAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ freespace: any(list(include('rules', required=False)), null(), required=False)
+ follow: any(list(include('rules', required=False)), null(), required=False)
+ dynamic_constraints: any(list(include('rules', required=False)), null(), required=False)
+ LateralDistanceAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ freespace: any(list(include('rules', required=False)), null(), required=False)
+ follow: any(list(include('rules', required=False)), null(), required=False)
+ dynamic_constraints: any(list(include('rules', required=False)), null(), required=False)
+ LaneOffsetAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_lane_offset: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ TeleportAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_trafficcommandupdate_schema.yml b/rules/input_rules/schema/osi_trafficcommandupdate_schema.yml
new file mode 100644
index 0000000..f2928c3
--- /dev/null
+++ b/rules/input_rules/schema/osi_trafficcommandupdate_schema.yml
@@ -0,0 +1,25 @@
+TrafficCommandUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ dismissed_action: any(list(include('rules', required=False)), null(), required=False)
+ DismissedAction:
+ dismissed_action_id: any(list(include('rules', required=False)), null(), required=False)
+ failure_reason: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_trafficlight_schema.yml b/rules/input_rules/schema/osi_trafficlight_schema.yml
new file mode 100644
index 0000000..20db3ed
--- /dev/null
+++ b/rules/input_rules/schema/osi_trafficlight_schema.yml
@@ -0,0 +1,32 @@
+TrafficLight:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ color: any(list(include('rules', required=False)), null(), required=False)
+ icon: any(list(include('rules', required=False)), null(), required=False)
+ mode: any(list(include('rules', required=False)), null(), required=False)
+ counter: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_trafficsign_schema.yml b/rules/input_rules/schema/osi_trafficsign_schema.yml
new file mode 100644
index 0000000..22830bd
--- /dev/null
+++ b/rules/input_rules/schema/osi_trafficsign_schema.yml
@@ -0,0 +1,63 @@
+TrafficSignValue:
+ value: any(list(include('rules', required=False)), null(), required=False)
+ value_unit: any(list(include('rules', required=False)), null(), required=False)
+ text: any(list(include('rules', required=False)), null(), required=False)
+TrafficSign:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ main_sign: any(list(include('rules', required=False)), null(), required=False)
+ supplementary_sign: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ MainSign:
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ variability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ direction_scope: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ vertically_mirrored: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ SupplementarySign:
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ variability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ actor: any(list(include('rules', required=False)), null(), required=False)
+ arrow: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ Arrow:
+ lane_id: any(list(include('rules', required=False)), null(), required=False)
+ direction: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_trafficupdate_schema.yml b/rules/input_rules/schema/osi_trafficupdate_schema.yml
new file mode 100644
index 0000000..54c5f3d
--- /dev/null
+++ b/rules/input_rules/schema/osi_trafficupdate_schema.yml
@@ -0,0 +1,22 @@
+TrafficUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ update: any(list(include('rules', required=False)), null(), required=False)
+ internal_state: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/input_rules/schema/osi_version_schema.yml b/rules/input_rules/schema/osi_version_schema.yml
new file mode 100644
index 0000000..8c59006
--- /dev/null
+++ b/rules/input_rules/schema/osi_version_schema.yml
@@ -0,0 +1,22 @@
+InterfaceVersion:
+ version_major: any(list(include('rules', required=False)), null(), required=False)
+ version_minor: any(list(include('rules', required=False)), null(), required=False)
+ version_patch: any(list(include('rules', required=False)), null(), required=False)
+ current_interface_version: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/osi_common.yml b/rules/output_rules/osi_common.yml
new file mode 100644
index 0000000..439bd19
--- /dev/null
+++ b/rules/output_rules/osi_common.yml
@@ -0,0 +1,130 @@
+Vector3d:
+ x:
+ y:
+ z:
+Vector2d:
+ x:
+ y:
+Timestamp:
+ seconds:
+ - is_greater_than_or_equal_to: 0
+ nanos:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 999999999
+Dimension3d:
+ length:
+ - is_greater_than_or_equal_to: 0
+ width:
+ - is_greater_than_or_equal_to: 0
+ height:
+ - is_greater_than_or_equal_to: 0
+Orientation3d:
+ roll:
+ pitch:
+ yaw:
+Identifier:
+ value:
+ - is_greater_than_or_equal_to: 0
+ExternalReference:
+ reference:
+ type:
+ - is_set:
+ identifier:
+MountingPosition:
+ position:
+ orientation:
+Spherical3d:
+ distance:
+ - is_greater_than_or_equal_to: 0
+ azimuth:
+ elevation:
+LogicalLaneAssignment:
+ assigned_lane_id:
+ - refers_to: LogicalLane
+ s_position:
+ t_position:
+ angle_to_lane:
+BoundingBox:
+ dimension:
+ position:
+ orientation:
+ contained_object_type:
+ model_reference:
+BaseStationary:
+ dimension:
+ position:
+ orientation:
+ base_polygon:
+ bounding_box_section:
+BaseMoving:
+ dimension:
+ - is_set:
+ position:
+ - is_set:
+ orientation:
+ velocity:
+ acceleration:
+ orientation_rate:
+ orientation_acceleration:
+ base_polygon:
+ bounding_box_section:
+StatePoint:
+ timestamp:
+ position:
+ orientation:
+WavelengthData:
+ start:
+ end:
+ samples_number:
+SpatialSignalStrength:
+ horizontal_angle:
+ vertical_angle:
+ signal_strength:
+ColorDescription:
+ grey:
+ rgb:
+ rgbir:
+ hsv:
+ luv:
+ cmyk:
+ColorGrey:
+ grey:
+ColorRGB:
+ red:
+ green:
+ blue:
+ColorRGBIR:
+ red:
+ green:
+ blue:
+ infrared:
+ColorHSV:
+ hue:
+ saturation:
+ value:
+ColorLUV:
+ luminance:
+ u:
+ v:
+ColorCMYK:
+ cyan:
+ magenta:
+ yellow:
+ key:
+Pedalry:
+ pedal_position_acceleration:
+ pedal_position_brake:
+ pedal_position_clutch:
+VehicleSteeringWheel:
+ angle:
+ angular_speed:
+ torque:
+GeodeticPosition:
+ longitude:
+ latitude:
+ altitude:
+KeyValuePair:
+ key:
+ value:
+Polygon3d:
+ vertex:
diff --git a/rules/output_rules/osi_datarecording.yml b/rules/output_rules/osi_datarecording.yml
new file mode 100644
index 0000000..65ca3b5
--- /dev/null
+++ b/rules/output_rules/osi_datarecording.yml
@@ -0,0 +1,4 @@
+SensorDataSeries:
+ sensor_data:
+SensorDataSeriesList:
+ sensor:
diff --git a/rules/output_rules/osi_detectedlane.yml b/rules/output_rules/osi_detectedlane.yml
new file mode 100644
index 0000000..17e2899
--- /dev/null
+++ b/rules/output_rules/osi_detectedlane.yml
@@ -0,0 +1,22 @@
+DetectedLane:
+ header:
+ candidate:
+ CandidateLane:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
+DetectedLaneBoundary:
+ header:
+ candidate:
+ boundary_line:
+ boundary_line_rmse:
+ boundary_line_confidences:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ color_description:
+ CandidateLaneBoundary:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
diff --git a/rules/output_rules/osi_detectedobject.yml b/rules/output_rules/osi_detectedobject.yml
new file mode 100644
index 0000000..170493f
--- /dev/null
+++ b/rules/output_rules/osi_detectedobject.yml
@@ -0,0 +1,69 @@
+DetectedItemHeader:
+ tracking_id:
+ - is_set:
+ ground_truth_id:
+ - is_set:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ age:
+ measurement_state:
+ - is_set:
+ sensor_id:
+ - is_set:
+DetectedStationaryObject:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ radar_specifics:
+ lidar_specifics:
+ camera_specifics:
+ ultrasonic_specifics:
+ CandidateStationaryObject:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
+DetectedMovingObject:
+ header:
+ base:
+ base_rmse:
+ reference_point:
+ movement_state:
+ percentage_side_lane_left:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ percentage_side_lane_right:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ candidate:
+ color_description:
+ radar_specifics:
+ lidar_specifics:
+ camera_specifics:
+ ultrasonic_specifics:
+ CandidateMovingObject:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ type:
+ vehicle_classification:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ head_pose:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
+ upper_body_pose:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
diff --git a/rules/output_rules/osi_detectedoccupant.yml b/rules/output_rules/osi_detectedoccupant.yml
new file mode 100644
index 0000000..b41e5a9
--- /dev/null
+++ b/rules/output_rules/osi_detectedoccupant.yml
@@ -0,0 +1,8 @@
+DetectedOccupant:
+ header:
+ candidate:
+ CandidateOccupant:
+ probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
diff --git a/rules/output_rules/osi_detectedroadmarking.yml b/rules/output_rules/osi_detectedroadmarking.yml
new file mode 100644
index 0000000..a934bd2
--- /dev/null
+++ b/rules/output_rules/osi_detectedroadmarking.yml
@@ -0,0 +1,11 @@
+DetectedRoadMarking:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ CandidateRoadMarking:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/output_rules/osi_detectedtrafficlight.yml b/rules/output_rules/osi_detectedtrafficlight.yml
new file mode 100644
index 0000000..e4e48cc
--- /dev/null
+++ b/rules/output_rules/osi_detectedtrafficlight.yml
@@ -0,0 +1,11 @@
+DetectedTrafficLight:
+ header:
+ base:
+ base_rmse:
+ candidate:
+ color_description:
+ CandidateTrafficLight:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/output_rules/osi_detectedtrafficsign.yml b/rules/output_rules/osi_detectedtrafficsign.yml
new file mode 100644
index 0000000..c5640cb
--- /dev/null
+++ b/rules/output_rules/osi_detectedtrafficsign.yml
@@ -0,0 +1,23 @@
+DetectedTrafficSign:
+ header:
+ main_sign:
+ supplementary_sign:
+ DetectedMainSign:
+ candidate:
+ base:
+ base_rmse:
+ geometry:
+ CandidateMainSign:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
+ DetectedSupplementarySign:
+ candidate:
+ base:
+ base_rmse:
+ CandidateSupplementarySign:
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ classification:
diff --git a/rules/output_rules/osi_environment.yml b/rules/output_rules/osi_environment.yml
new file mode 100644
index 0000000..57f3998
--- /dev/null
+++ b/rules/output_rules/osi_environment.yml
@@ -0,0 +1,34 @@
+EnvironmentalConditions:
+ ambient_illumination:
+ time_of_day:
+ unix_timestamp:
+ atmospheric_pressure:
+ - is_greater_than_or_equal_to: 80000
+ - is_less_than_or_equal_to: 120000
+ temperature:
+ - is_greater_than_or_equal_to: 170
+ - is_less_than_or_equal_to: 340
+ relative_humidity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ precipitation:
+ fog:
+ source_reference:
+ clouds:
+ wind:
+ sun:
+ TimeOfDay:
+ seconds_since_midnight:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than: 86400
+ CloudLayer:
+ fractional_cloud_cover:
+ Wind:
+ origin_direction:
+ speed:
+ - is_greater_than_or_equal_to: 0
+ Sun:
+ azimuth:
+ elevation:
+ intensity:
+ - is_greater_than_or_equal_to: 0
diff --git a/rules/output_rules/osi_featuredata.yml b/rules/output_rules/osi_featuredata.yml
new file mode 100644
index 0000000..97c2b14
--- /dev/null
+++ b/rules/output_rules/osi_featuredata.yml
@@ -0,0 +1,149 @@
+FeatureData:
+ version:
+ radar_sensor:
+ lidar_sensor:
+ ultrasonic_sensor:
+ camera_sensor:
+SensorDetectionHeader:
+ measurement_time:
+ cycle_counter:
+ - is_greater_than_or_equal_to: 0
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ data_qualifier:
+ number_of_valid_detections:
+ - is_greater_than_or_equal_to: 0
+ sensor_id:
+ - is_set:
+ extended_qualifier:
+RadarDetectionData:
+ header:
+ detection:
+RadarDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ radial_velocity:
+ radial_velocity_rmse:
+ - is_greater_than_or_equal_to: 0
+ rcs:
+ snr:
+ point_target_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ ambiguity_id:
+ classification:
+LidarDetectionData:
+ header:
+ detection:
+LidarDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ height:
+ - is_greater_than_or_equal_to: 0
+ height_rmse:
+ - is_greater_than_or_equal_to: 0
+ intensity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ free_space_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ classification:
+ reflectivity:
+ echo_pulse_width:
+ - is_greater_than_or_equal_to: 0
+ radial_velocity:
+ beam_id:
+UltrasonicDetectionSpecificHeader:
+ max_range:
+ number_of_valid_indirect_detections:
+UltrasonicDetectionData:
+ header:
+ specific_header:
+ detection:
+ indirect_detection:
+UltrasonicDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ distance:
+ - is_greater_than_or_equal_to: 0
+UltrasonicIndirectDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ ellipsoid_radial:
+ ellipsoid_axial:
+ receiver_id:
+ receiver_origin:
+CameraDetectionSpecificHeader:
+ number_of_valid_points:
+ - is_greater_than_or_equal_to: 0
+CameraDetectionData:
+ header:
+ specific_header:
+ detection:
+ point:
+CameraDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ time_difference:
+ image_shape_type:
+ shape_classification_background:
+ shape_classification_foreground:
+ shape_classification_flat:
+ shape_classification_upright:
+ shape_classification_ground:
+ shape_classification_sky:
+ shape_classification_vegetation:
+ shape_classification_road:
+ shape_classification_non_driving_lane:
+ shape_classification_non_road:
+ shape_classification_stationary_object:
+ shape_classification_moving_object:
+ shape_classification_landmark:
+ shape_classification_traffic_sign:
+ shape_classification_traffic_light:
+ shape_classification_road_marking:
+ shape_classification_vehicle:
+ shape_classification_pedestrian:
+ shape_classification_animal:
+ shape_classification_pedestrian_front:
+ shape_classification_pedestrian_side:
+ shape_classification_pedestrian_rear:
+ shape_classification_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ color:
+ color_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ ambiguity_id:
+ first_point_index:
+ number_of_points:
+ - is_greater_than_or_equal_to: 0
+ color_description:
+CameraPoint:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ point:
+ point_rmse:
diff --git a/rules/output_rules/osi_groundtruth.yml b/rules/output_rules/osi_groundtruth.yml
new file mode 100644
index 0000000..1ce07b7
--- /dev/null
+++ b/rules/output_rules/osi_groundtruth.yml
@@ -0,0 +1,29 @@
+GroundTruth:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ host_vehicle_id:
+ - refers_to: MovingObject
+ - is_set:
+ stationary_object:
+ moving_object:
+ traffic_sign:
+ traffic_light:
+ road_marking:
+ lane_boundary:
+ lane:
+ occupant:
+ environmental_conditions:
+ country_code:
+ - is_iso_country_code:
+ proj_string:
+ map_reference:
+ model_reference:
+ reference_line:
+ logical_lane_boundary:
+ logical_lane:
+ proj_frame_offset:
+ ProjFrameOffset:
+ position:
+ yaw:
diff --git a/rules/output_rules/osi_hostvehicledata.yml b/rules/output_rules/osi_hostvehicledata.yml
new file mode 100644
index 0000000..14fb887
--- /dev/null
+++ b/rules/output_rules/osi_hostvehicledata.yml
@@ -0,0 +1,59 @@
+HostVehicleData:
+ version:
+ timestamp:
+ host_vehicle_id:
+ location:
+ location_rmse:
+ vehicle_basics:
+ vehicle_powertrain:
+ vehicle_brake_system:
+ vehicle_steering:
+ vehicle_wheels:
+ vehicle_localization:
+ vehicle_automated_driving_function:
+ vehicle_motion:
+ route:
+ VehicleBasics:
+ curb_weight:
+ operating_state:
+ VehiclePowertrain:
+ pedal_position_acceleration:
+ pedal_position_clutch:
+ gear_transmission:
+ motor:
+ Motor:
+ type:
+ rpm:
+ torque:
+ VehicleBrakeSystem:
+ pedal_position_brake:
+ VehicleSteering:
+ vehicle_steering_wheel:
+ VehicleWheels:
+ wheel_data:
+ WheelData:
+ axle:
+ index:
+ rotation_rate:
+ slip:
+ VehicleLocalization:
+ position:
+ orientation:
+ geodetic_position:
+ VehicleMotion:
+ position:
+ orientation:
+ velocity:
+ orientation_rate:
+ acceleration:
+ current_curvature:
+ VehicleAutomatedDrivingFunction:
+ name:
+ custom_name:
+ state:
+ custom_state:
+ driver_override:
+ custom_detail:
+ DriverOverride:
+ active:
+ override_reason:
diff --git a/rules/output_rules/osi_lane.yml b/rules/output_rules/osi_lane.yml
new file mode 100644
index 0000000..64f31c0
--- /dev/null
+++ b/rules/output_rules/osi_lane.yml
@@ -0,0 +1,90 @@
+Lane:
+ id:
+ - is_globally_unique:
+ - is_set:
+ classification:
+ source_reference:
+ Classification:
+ type:
+ is_host_vehicle_lane:
+ centerline:
+ centerline_is_driving_direction:
+ left_adjacent_lane_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ right_adjacent_lane_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ lane_pairing:
+ right_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ left_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ free_lane_boundary_id:
+ - check_if:
+ - is_different_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ road_condition:
+ subtype:
+ RoadCondition:
+ surface_temperature:
+ - is_greater_than_or_equal_to: 0
+ surface_water_film:
+ - is_greater_than_or_equal_to: 0
+ surface_freezing_point:
+ - is_greater_than_or_equal_to: 0
+ surface_ice:
+ - is_greater_than_or_equal_to: 0
+ surface_roughness:
+ - is_greater_than_or_equal_to: 0
+ surface_texture:
+ LanePairing:
+ antecessor_lane_id:
+ - refers_to: Lane
+ successor_lane_id:
+ - refers_to: Lane
+LaneBoundary:
+ id:
+ - is_globally_unique:
+ boundary_line:
+ - first_element:
+ width:
+ - is_equal_to: 0.13
+ - first_element:
+ height:
+ - is_equal_to: 0.14
+ - last_element:
+ width:
+ - is_equal_to: 0.13
+ - last_element:
+ height:
+ - is_equal_to: 0.13
+ classification:
+ source_reference:
+ color_description:
+ BoundaryPoint:
+ position:
+ width:
+ height:
+ dash:
+ Classification:
+ type:
+ color:
+ limiting_structure_id:
+ - refers_to: StationaryObject
diff --git a/rules/output_rules/osi_logicaldetectiondata.yml b/rules/output_rules/osi_logicaldetectiondata.yml
new file mode 100644
index 0000000..9935c0d
--- /dev/null
+++ b/rules/output_rules/osi_logicaldetectiondata.yml
@@ -0,0 +1,33 @@
+LogicalDetectionData:
+ version:
+ - is_set:
+ header:
+ logical_detection:
+LogicalDetectionDataHeader:
+ logical_detection_time:
+ data_qualifier:
+ number_of_valid_logical_detections:
+ - is_greater_than_or_equal_to: 0
+ sensor_id:
+LogicalDetection:
+ existence_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ object_id:
+ - refers_to: DetectedObject
+ position:
+ position_rmse:
+ velocity:
+ velocity_rmse:
+ - is_greater_than_or_equal_to: 0
+ intensity:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 100
+ snr:
+ point_target_probability:
+ - is_greater_than_or_equal_to: 0
+ - is_less_than_or_equal_to: 1
+ sensor_id:
+ classification:
+ echo_pulse_width:
+ - is_greater_than_or_equal_to: 0
diff --git a/rules/output_rules/osi_logicallane.yml b/rules/output_rules/osi_logicallane.yml
new file mode 100644
index 0000000..5f2c3ee
--- /dev/null
+++ b/rules/output_rules/osi_logicallane.yml
@@ -0,0 +1,68 @@
+LogicalLaneBoundary:
+ id:
+ - is_globally_unique:
+ - is_set:
+ boundary_line:
+ reference_line_id:
+ - refers_to: ReferenceLine
+ physical_boundary_id:
+ - refers_to: LaneBoundary
+ passing_rule:
+ source_reference:
+ LogicalBoundaryPoint:
+ position:
+ s_position:
+ t_position:
+LogicalLane:
+ id:
+ - is_globally_unique:
+ type:
+ source_reference:
+ physical_lane_reference:
+ - refers_to: Lane
+ reference_line_id:
+ - refers_to: ReferenceLine
+ start_s:
+ end_s:
+ move_direction:
+ right_adjacent_lane:
+ left_adjacent_lane:
+ overlapping_lane:
+ right_boundary_id:
+ - refers_to: LogicalLaneBoundary
+ left_boundary_id:
+ - refers_to: LogicalLaneBoundary
+ predecessor_lane:
+ successor_lane:
+ street_name:
+ traffic_rule:
+ PhysicalLaneReference:
+ physical_lane_id:
+ - refers_to: Lane
+ start_s:
+ end_s:
+ LaneConnection:
+ other_lane_id:
+ - refers_to: LogicalLane
+ at_begin_of_other_lane:
+ LaneRelation:
+ other_lane_id:
+ - refers_to: LogicalLane
+ start_s:
+ end_s:
+ start_s_other:
+ end_s_other:
+ TrafficRule:
+ traffic_rule_type:
+ traffic_rule_validity:
+ speed_limit:
+ TrafficRuleValidity:
+ start_s:
+ end_s:
+ valid_for_type:
+ TypeValidity:
+ type:
+ vehicle_type:
+ vehicle_role:
+ SpeedLimit:
+ speed_limit_value:
diff --git a/rules/output_rules/osi_motionrequest.yml b/rules/output_rules/osi_motionrequest.yml
new file mode 100644
index 0000000..22aa7eb
--- /dev/null
+++ b/rules/output_rules/osi_motionrequest.yml
@@ -0,0 +1,16 @@
+MotionRequest:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ motion_request_type:
+ desired_state:
+ desired_trajectory:
+ DesiredState:
+ timestamp:
+ position:
+ orientation:
+ velocity:
+ acceleration:
+ DesiredTrajectory:
+ trajectory_point:
diff --git a/rules/output_rules/osi_object.yml b/rules/output_rules/osi_object.yml
new file mode 100644
index 0000000..5ebfd10
--- /dev/null
+++ b/rules/output_rules/osi_object.yml
@@ -0,0 +1,110 @@
+StationaryObject:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ classification:
+ model_reference:
+ source_reference:
+ color_description:
+ Classification:
+ type:
+ material:
+ density:
+ color:
+ emitting_structure_attribute:
+ assigned_lane_id:
+ assigned_lane_percentage:
+ logical_lane_assignment:
+ EmittingStructureAttribute:
+ wavelength_data:
+ emitted_spatial_signal_strength:
+MovingObject:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ type:
+ assigned_lane_id:
+ vehicle_attributes:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ vehicle_classification:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ model_reference:
+ future_trajectory:
+ moving_object_classification:
+ source_reference:
+ color_description:
+ pedestrian_attributes:
+ - check_if:
+ - is_equal_to: 3
+ target: this.type
+ do_check:
+ - is_set:
+ VehicleAttributes:
+ driver_id:
+ radius_wheel:
+ - is_greater_than_or_equal_to: 0
+ number_wheels:
+ - is_greater_than_or_equal_to: 1
+ bbcenter_to_rear:
+ bbcenter_to_front:
+ ground_clearance:
+ wheel_data:
+ steering_wheel_angle:
+ WheelData:
+ axle:
+ index:
+ position:
+ wheel_radius:
+ rim_radius:
+ width:
+ orientation:
+ rotation_rate:
+ model_reference:
+ friction_coefficient:
+ MovingObjectClassification:
+ assigned_lane_id:
+ assigned_lane_percentage:
+ logical_lane_assignment:
+ VehicleClassification:
+ type:
+ light_state:
+ has_trailer:
+ trailer_id:
+ - check_if:
+ - is_equal_to: true
+ target: this.has_trailer
+ do_check:
+ - is_set:
+ role:
+ LightState:
+ indicator_state:
+ front_fog_light:
+ rear_fog_light:
+ head_light:
+ high_beam:
+ reversing_light:
+ brake_light_state:
+ license_plate_illumination_rear:
+ emergency_vehicle_illumination:
+ service_vehicle_illumination:
+ PedestrianAttributes:
+ bbcenter_to_root:
+ skeleton_bone:
+ Bone:
+ type:
+ position:
+ orientation:
+ length:
+ missing:
+ velocity:
+ orientation_rate:
diff --git a/rules/output_rules/osi_occupant.yml b/rules/output_rules/osi_occupant.yml
new file mode 100644
index 0000000..062e01a
--- /dev/null
+++ b/rules/output_rules/osi_occupant.yml
@@ -0,0 +1,9 @@
+Occupant:
+ id:
+ - is_globally_unique:
+ classification:
+ source_reference:
+ Classification:
+ is_driver:
+ seat:
+ steering_control:
diff --git a/rules/output_rules/osi_referenceline.yml b/rules/output_rules/osi_referenceline.yml
new file mode 100644
index 0000000..535bdc6
--- /dev/null
+++ b/rules/output_rules/osi_referenceline.yml
@@ -0,0 +1,10 @@
+ReferenceLine:
+ id:
+ - is_globally_unique:
+ - is_set:
+ type:
+ poly_line:
+ ReferenceLinePoint:
+ world_position:
+ s_position:
+ t_axis_yaw:
diff --git a/rules/output_rules/osi_roadmarking.yml b/rules/output_rules/osi_roadmarking.yml
new file mode 100644
index 0000000..37b14e7
--- /dev/null
+++ b/rules/output_rules/osi_roadmarking.yml
@@ -0,0 +1,81 @@
+RoadMarking:
+ id:
+ - is_set:
+ base:
+ classification:
+ source_reference:
+ color_description:
+ Classification:
+ type:
+ traffic_main_sign_type:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ monochrome_color:
+ - check_if:
+ - is_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_equal_to: 1
+ target: this.monochrome_color
+ do_check:
+ - is_set:
+ value:
+ value_text:
+ assigned_lane_id:
+ - refers_to: Lane
+ is_out_of_service:
+ country:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ country_revision:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ code:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ sub_code:
+ - check_if:
+ - is_greater_than_or_equal_to: 2
+ target: this.type
+ do_check:
+ - is_set:
+ - check_if:
+ - is_less_than_or_equal_to: 4
+ target: this.type
+ do_check:
+ - is_set:
+ logical_lane_assignment:
diff --git a/rules/output_rules/osi_route.yml b/rules/output_rules/osi_route.yml
new file mode 100644
index 0000000..9621c28
--- /dev/null
+++ b/rules/output_rules/osi_route.yml
@@ -0,0 +1,11 @@
+Route:
+ route_id:
+ - is_set:
+ route_segment:
+ LogicalLaneSegment:
+ logical_lane_id:
+ - refers_to: LogicalLane
+ start_s:
+ end_s:
+ RouteSegment:
+ lane_segment:
diff --git a/rules/output_rules/osi_sensordata.yml b/rules/output_rules/osi_sensordata.yml
new file mode 100644
index 0000000..be3bda5
--- /dev/null
+++ b/rules/output_rules/osi_sensordata.yml
@@ -0,0 +1,40 @@
+DetectedEntityHeader:
+ measurement_time:
+ cycle_counter:
+ data_qualifier:
+SensorData:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ host_vehicle_location:
+ host_vehicle_location_rmse:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ sensor_view:
+ last_measurement_time:
+ stationary_object_header:
+ stationary_object:
+ moving_object_header:
+ moving_object:
+ traffic_sign_header:
+ traffic_sign:
+ traffic_light_header:
+ traffic_light:
+ road_marking_header:
+ road_marking:
+ lane_boundary_header:
+ lane_boundary:
+ lane_header:
+ lane:
+ occupant_header:
+ occupant:
+ feature_data:
+ logical_detection_data:
+ VirtualDetectionArea:
+ polygon:
+ virtual_detection_area:
+ system_time:
diff --git a/rules/output_rules/osi_sensorspecific.yml b/rules/output_rules/osi_sensorspecific.yml
new file mode 100644
index 0000000..078b330
--- /dev/null
+++ b/rules/output_rules/osi_sensorspecific.yml
@@ -0,0 +1,14 @@
+RadarSpecificObjectData:
+ rcs:
+LidarSpecificObjectData:
+ maximum_measurement_distance_sensor:
+ - is_greater_than_or_equal_to: 0
+ probability:
+ - is_less_than_or_equal_to: 1
+ - is_greater_than_or_equal_to: 0
+ trilateration_status:
+ trend:
+ signalway:
+ Signalway:
+ sender_id:
+ receiver_id:
diff --git a/rules/output_rules/osi_sensorview.yml b/rules/output_rules/osi_sensorview.yml
new file mode 100644
index 0000000..13239be
--- /dev/null
+++ b/rules/output_rules/osi_sensorview.yml
@@ -0,0 +1,45 @@
+SensorView:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ host_vehicle_data:
+ global_ground_truth:
+ host_vehicle_id:
+ - refers_to: 'MovingObject'
+ - is_set:
+ generic_sensor_view:
+ radar_sensor_view:
+ lidar_sensor_view:
+ camera_sensor_view:
+ ultrasonic_sensor_view:
+GenericSensorView:
+ view_configuration:
+RadarSensorView:
+ view_configuration:
+ reflection:
+ Reflection:
+ signal_strength:
+ time_of_flight:
+ doppler_shift:
+ source_horizontal_angle:
+ source_vertical_angle:
+LidarSensorView:
+ view_configuration:
+ reflection:
+ Reflection:
+ signal_strength:
+ time_of_flight:
+ doppler_shift:
+ normal_to_surface:
+ object_id:
+CameraSensorView:
+ view_configuration:
+ image_data:
+UltrasonicSensorView:
+ view_configuration:
diff --git a/rules/output_rules/osi_sensorviewconfiguration.yml b/rules/output_rules/osi_sensorviewconfiguration.yml
new file mode 100644
index 0000000..8b3e4d0
--- /dev/null
+++ b/rules/output_rules/osi_sensorviewconfiguration.yml
@@ -0,0 +1,88 @@
+SensorViewConfiguration:
+ version:
+ - is_set:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ range:
+ - is_greater_than_or_equal_to: 0
+ update_cycle_time:
+ update_cycle_offset:
+ simulation_start_time:
+ omit_static_information:
+ generic_sensor_view_configuration:
+ radar_sensor_view_configuration:
+ lidar_sensor_view_configuration:
+ camera_sensor_view_configuration:
+ ultrasonic_sensor_view_configuration:
+GenericSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+RadarSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_rays_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_rays_vertical:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ emitter_frequency:
+ - is_greater_than_or_equal_to: 0
+ tx_antenna_diagram:
+ rx_antenna_diagram:
+ AntennaDiagramEntry:
+ horizontal_angle:
+ vertical_angle:
+ response:
+LidarSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_rays_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_rays_vertical:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ emitter_frequency:
+ - is_greater_than_or_equal_to: 0
+ num_of_pixels:
+ - is_greater_than_or_equal_to: 1
+ directions:
+ timings:
+CameraSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
+ number_of_pixels_horizontal:
+ - is_greater_than_or_equal_to: 1
+ number_of_pixels_vertical:
+ - is_greater_than_or_equal_to: 1
+ channel_format:
+ - is_greater_than_or_equal_to: 1
+ samples_per_pixel:
+ - is_greater_than_or_equal_to: 1
+ max_number_of_interactions:
+ - is_greater_than_or_equal_to: 1
+ wavelength_data:
+ pixel_order:
+UltrasonicSensorViewConfiguration:
+ sensor_id:
+ mounting_position:
+ mounting_position_rmse:
+ field_of_view_horizontal:
+ field_of_view_vertical:
diff --git a/rules/output_rules/osi_streamingupdate.yml b/rules/output_rules/osi_streamingupdate.yml
new file mode 100644
index 0000000..90d67f3
--- /dev/null
+++ b/rules/output_rules/osi_streamingupdate.yml
@@ -0,0 +1,12 @@
+StreamingUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ stationary_object_update:
+ moving_object_update:
+ traffic_sign_update:
+ traffic_light_update:
+ environmental_conditions_update:
+ host_vehicle_data_update:
+ obsolete_id:
diff --git a/rules/output_rules/osi_trafficcommand.yml b/rules/output_rules/osi_trafficcommand.yml
new file mode 100644
index 0000000..a858464
--- /dev/null
+++ b/rules/output_rules/osi_trafficcommand.yml
@@ -0,0 +1,78 @@
+TrafficCommand:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ traffic_participant_id:
+ - is_set:
+ action:
+TrafficAction:
+ follow_trajectory_action:
+ follow_path_action:
+ acquire_global_position_action:
+ custom_action:
+ longitudinal_distance_action:
+ lane_offset_action:
+ lateral_distance_action:
+ teleport_action:
+ ActionHeader:
+ action_id:
+ - is_set:
+ DynamicConstraints:
+ max_acceleration:
+ max_deceleration:
+ max_speed:
+ FollowTrajectoryAction:
+ action_header:
+ trajectory_point:
+ constrain_orientation:
+ following_mode:
+ FollowPathAction:
+ action_header:
+ path_point:
+ constrain_orientation:
+ following_mode:
+ AcquireGlobalPositionAction:
+ action_header:
+ position:
+ orientation:
+ LaneChangeAction:
+ action_header:
+ relative_target_lane:
+ dynamics_shape:
+ distance:
+ SpeedAction:
+ action_header:
+ absolute_target_speed:
+ dynamics_shape:
+ distance:
+ AbortActionsAction:
+ action_header:
+ EndActionsAction:
+ action_header:
+ CustomAction:
+ action_header:
+ command:
+ command_type:
+ LongitudinalDistanceAction:
+ action_header:
+ target_traffic_participant_id:
+ distance:
+ freespace:
+ follow:
+ dynamic_constraints:
+ LateralDistanceAction:
+ action_header:
+ target_traffic_participant_id:
+ distance:
+ freespace:
+ follow:
+ dynamic_constraints:
+ LaneOffsetAction:
+ action_header:
+ target_lane_offset:
+ dynamics_shape:
+ TeleportAction:
+ action_header:
+ position:
+ orientation:
diff --git a/rules/output_rules/osi_trafficcommandupdate.yml b/rules/output_rules/osi_trafficcommandupdate.yml
new file mode 100644
index 0000000..5e1f327
--- /dev/null
+++ b/rules/output_rules/osi_trafficcommandupdate.yml
@@ -0,0 +1,11 @@
+TrafficCommandUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ traffic_participant_id:
+ - is_set:
+ dismissed_action:
+ DismissedAction:
+ dismissed_action_id:
+ failure_reason:
diff --git a/rules/output_rules/osi_trafficlight.yml b/rules/output_rules/osi_trafficlight.yml
new file mode 100644
index 0000000..9e66f9d
--- /dev/null
+++ b/rules/output_rules/osi_trafficlight.yml
@@ -0,0 +1,19 @@
+TrafficLight:
+ id:
+ - is_globally_unique:
+ - is_set:
+ base:
+ classification:
+ model_reference:
+ source_reference:
+ color_description:
+ Classification:
+ color:
+ icon:
+ mode:
+ counter:
+ - is_greater_than_or_equal_to: 0
+ assigned_lane_id:
+ - refers_to: Lane
+ is_out_of_service:
+ logical_lane_assignment:
diff --git a/rules/output_rules/osi_trafficsign.yml b/rules/output_rules/osi_trafficsign.yml
new file mode 100644
index 0000000..845d2c5
--- /dev/null
+++ b/rules/output_rules/osi_trafficsign.yml
@@ -0,0 +1,51 @@
+TrafficSignValue:
+ value:
+ value_unit:
+ text:
+TrafficSign:
+ id:
+ - is_globally_unique:
+ - is_set:
+ main_sign:
+ supplementary_sign:
+ source_reference:
+ MainSign:
+ base:
+ classification:
+ model_reference:
+ Classification:
+ variability:
+ type:
+ value:
+ direction_scope:
+ assigned_lane_id:
+ - refers_to: Lane
+ vertically_mirrored:
+ is_out_of_service:
+ country:
+ country_revision:
+ code:
+ sub_code:
+ logical_lane_assignment:
+ SupplementarySign:
+ base:
+ classification:
+ model_reference:
+ Classification:
+ variability:
+ type:
+ value:
+ assigned_lane_id:
+ - refers_to: Lane
+ actor:
+ arrow:
+ is_out_of_service:
+ country:
+ country_revision:
+ code:
+ sub_code:
+ logical_lane_assignment:
+ Arrow:
+ lane_id:
+ - refers_to: Lane
+ direction:
diff --git a/rules/output_rules/osi_trafficupdate.yml b/rules/output_rules/osi_trafficupdate.yml
new file mode 100644
index 0000000..8bde406
--- /dev/null
+++ b/rules/output_rules/osi_trafficupdate.yml
@@ -0,0 +1,7 @@
+TrafficUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ update:
+ internal_state:
diff --git a/rules/output_rules/osi_version.yml b/rules/output_rules/osi_version.yml
new file mode 100644
index 0000000..7a2ef64
--- /dev/null
+++ b/rules/output_rules/osi_version.yml
@@ -0,0 +1,5 @@
+InterfaceVersion:
+ version_major:
+ version_minor:
+ version_patch:
+ current_interface_version:
diff --git a/rules/output_rules/schema/osi_common_schema.yml b/rules/output_rules/schema/osi_common_schema.yml
new file mode 100644
index 0000000..6d1ebd2
--- /dev/null
+++ b/rules/output_rules/schema/osi_common_schema.yml
@@ -0,0 +1,135 @@
+Vector3d:
+ x: any(list(include('rules', required=False)), null(), required=False)
+ y: any(list(include('rules', required=False)), null(), required=False)
+ z: any(list(include('rules', required=False)), null(), required=False)
+Vector2d:
+ x: any(list(include('rules', required=False)), null(), required=False)
+ y: any(list(include('rules', required=False)), null(), required=False)
+Timestamp:
+ seconds: any(list(include('rules', required=False)), null(), required=False)
+ nanos: any(list(include('rules', required=False)), null(), required=False)
+Dimension3d:
+ length: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+Orientation3d:
+ roll: any(list(include('rules', required=False)), null(), required=False)
+ pitch: any(list(include('rules', required=False)), null(), required=False)
+ yaw: any(list(include('rules', required=False)), null(), required=False)
+Identifier:
+ value: any(list(include('rules', required=False)), null(), required=False)
+ExternalReference:
+ reference: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ identifier: any(list(include('rules', required=False)), null(), required=False)
+MountingPosition:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+Spherical3d:
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ azimuth: any(list(include('rules', required=False)), null(), required=False)
+ elevation: any(list(include('rules', required=False)), null(), required=False)
+LogicalLaneAssignment:
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_position: any(list(include('rules', required=False)), null(), required=False)
+ angle_to_lane: any(list(include('rules', required=False)), null(), required=False)
+BoundingBox:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ contained_object_type: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+BaseStationary:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ base_polygon: any(list(include('rules', required=False)), null(), required=False)
+ bounding_box_section: any(list(include('rules', required=False)), null(), required=False)
+BaseMoving:
+ dimension: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+ orientation_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ base_polygon: any(list(include('rules', required=False)), null(), required=False)
+ bounding_box_section: any(list(include('rules', required=False)), null(), required=False)
+StatePoint:
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+WavelengthData:
+ start: any(list(include('rules', required=False)), null(), required=False)
+ end: any(list(include('rules', required=False)), null(), required=False)
+ samples_number: any(list(include('rules', required=False)), null(), required=False)
+SpatialSignalStrength:
+ horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ColorDescription:
+ grey: any(list(include('rules', required=False)), null(), required=False)
+ rgb: any(list(include('rules', required=False)), null(), required=False)
+ rgbir: any(list(include('rules', required=False)), null(), required=False)
+ hsv: any(list(include('rules', required=False)), null(), required=False)
+ luv: any(list(include('rules', required=False)), null(), required=False)
+ cmyk: any(list(include('rules', required=False)), null(), required=False)
+ColorGrey:
+ grey: any(list(include('rules', required=False)), null(), required=False)
+ColorRGB:
+ red: any(list(include('rules', required=False)), null(), required=False)
+ green: any(list(include('rules', required=False)), null(), required=False)
+ blue: any(list(include('rules', required=False)), null(), required=False)
+ColorRGBIR:
+ red: any(list(include('rules', required=False)), null(), required=False)
+ green: any(list(include('rules', required=False)), null(), required=False)
+ blue: any(list(include('rules', required=False)), null(), required=False)
+ infrared: any(list(include('rules', required=False)), null(), required=False)
+ColorHSV:
+ hue: any(list(include('rules', required=False)), null(), required=False)
+ saturation: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ColorLUV:
+ luminance: any(list(include('rules', required=False)), null(), required=False)
+ u: any(list(include('rules', required=False)), null(), required=False)
+ v: any(list(include('rules', required=False)), null(), required=False)
+ColorCMYK:
+ cyan: any(list(include('rules', required=False)), null(), required=False)
+ magenta: any(list(include('rules', required=False)), null(), required=False)
+ yellow: any(list(include('rules', required=False)), null(), required=False)
+ key: any(list(include('rules', required=False)), null(), required=False)
+Pedalry:
+ pedal_position_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_brake: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_clutch: any(list(include('rules', required=False)), null(), required=False)
+VehicleSteeringWheel:
+ angle: any(list(include('rules', required=False)), null(), required=False)
+ angular_speed: any(list(include('rules', required=False)), null(), required=False)
+ torque: any(list(include('rules', required=False)), null(), required=False)
+GeodeticPosition:
+ longitude: any(list(include('rules', required=False)), null(), required=False)
+ latitude: any(list(include('rules', required=False)), null(), required=False)
+ altitude: any(list(include('rules', required=False)), null(), required=False)
+KeyValuePair:
+ key: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+Polygon3d:
+ vertex: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_datarecording_schema.yml b/rules/output_rules/schema/osi_datarecording_schema.yml
new file mode 100644
index 0000000..72f32e7
--- /dev/null
+++ b/rules/output_rules/schema/osi_datarecording_schema.yml
@@ -0,0 +1,21 @@
+SensorDataSeries:
+ sensor_data: any(list(include('rules', required=False)), null(), required=False)
+SensorDataSeriesList:
+ sensor: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedlane_schema.yml b/rules/output_rules/schema/osi_detectedlane_schema.yml
new file mode 100644
index 0000000..ca56145
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedlane_schema.yml
@@ -0,0 +1,33 @@
+DetectedLane:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ CandidateLane:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+DetectedLaneBoundary:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line_rmse: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line_confidences: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateLaneBoundary:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedobject_schema.yml b/rules/output_rules/schema/osi_detectedobject_schema.yml
new file mode 100644
index 0000000..f32536d
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedobject_schema.yml
@@ -0,0 +1,57 @@
+DetectedItemHeader:
+ tracking_id: any(list(include('rules', required=False)), null(), required=False)
+ ground_truth_id: any(list(include('rules', required=False)), null(), required=False)
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ age: any(list(include('rules', required=False)), null(), required=False)
+ measurement_state: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+DetectedStationaryObject:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ radar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ lidar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ camera_specifics: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_specifics: any(list(include('rules', required=False)), null(), required=False)
+ CandidateStationaryObject:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+DetectedMovingObject:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ reference_point: any(list(include('rules', required=False)), null(), required=False)
+ movement_state: any(list(include('rules', required=False)), null(), required=False)
+ percentage_side_lane_left: any(list(include('rules', required=False)), null(), required=False)
+ percentage_side_lane_right: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ radar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ lidar_specifics: any(list(include('rules', required=False)), null(), required=False)
+ camera_specifics: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_specifics: any(list(include('rules', required=False)), null(), required=False)
+ CandidateMovingObject:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_classification: any(list(include('rules', required=False)), null(), required=False)
+ head_pose: any(list(include('rules', required=False)), null(), required=False)
+ upper_body_pose: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedoccupant_schema.yml b/rules/output_rules/schema/osi_detectedoccupant_schema.yml
new file mode 100644
index 0000000..31c7816
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedoccupant_schema.yml
@@ -0,0 +1,23 @@
+DetectedOccupant:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ CandidateOccupant:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedroadmarking_schema.yml b/rules/output_rules/schema/osi_detectedroadmarking_schema.yml
new file mode 100644
index 0000000..6df5e8f
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedroadmarking_schema.yml
@@ -0,0 +1,26 @@
+DetectedRoadMarking:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateRoadMarking:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedtrafficlight_schema.yml b/rules/output_rules/schema/osi_detectedtrafficlight_schema.yml
new file mode 100644
index 0000000..d855af9
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedtrafficlight_schema.yml
@@ -0,0 +1,26 @@
+DetectedTrafficLight:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ CandidateTrafficLight:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_detectedtrafficsign_schema.yml b/rules/output_rules/schema/osi_detectedtrafficsign_schema.yml
new file mode 100644
index 0000000..d4ee871
--- /dev/null
+++ b/rules/output_rules/schema/osi_detectedtrafficsign_schema.yml
@@ -0,0 +1,36 @@
+DetectedTrafficSign:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ main_sign: any(list(include('rules', required=False)), null(), required=False)
+ supplementary_sign: any(list(include('rules', required=False)), null(), required=False)
+ DetectedMainSign:
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ geometry: any(list(include('rules', required=False)), null(), required=False)
+ CandidateMainSign:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ DetectedSupplementarySign:
+ candidate: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ base_rmse: any(list(include('rules', required=False)), null(), required=False)
+ CandidateSupplementarySign:
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_environment_schema.yml b/rules/output_rules/schema/osi_environment_schema.yml
new file mode 100644
index 0000000..92a0a92
--- /dev/null
+++ b/rules/output_rules/schema/osi_environment_schema.yml
@@ -0,0 +1,41 @@
+EnvironmentalConditions:
+ ambient_illumination: any(list(include('rules', required=False)), null(), required=False)
+ time_of_day: any(list(include('rules', required=False)), null(), required=False)
+ unix_timestamp: any(list(include('rules', required=False)), null(), required=False)
+ atmospheric_pressure: any(list(include('rules', required=False)), null(), required=False)
+ temperature: any(list(include('rules', required=False)), null(), required=False)
+ relative_humidity: any(list(include('rules', required=False)), null(), required=False)
+ precipitation: any(list(include('rules', required=False)), null(), required=False)
+ fog: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ clouds: any(list(include('rules', required=False)), null(), required=False)
+ wind: any(list(include('rules', required=False)), null(), required=False)
+ sun: any(list(include('rules', required=False)), null(), required=False)
+ TimeOfDay:
+ seconds_since_midnight: any(list(include('rules', required=False)), null(), required=False)
+ CloudLayer:
+ fractional_cloud_cover: any(list(include('rules', required=False)), null(), required=False)
+ Wind:
+ origin_direction: any(list(include('rules', required=False)), null(), required=False)
+ speed: any(list(include('rules', required=False)), null(), required=False)
+ Sun:
+ azimuth: any(list(include('rules', required=False)), null(), required=False)
+ elevation: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_featuredata_schema.yml b/rules/output_rules/schema/osi_featuredata_schema.yml
new file mode 100644
index 0000000..f68009c
--- /dev/null
+++ b/rules/output_rules/schema/osi_featuredata_schema.yml
@@ -0,0 +1,128 @@
+FeatureData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor: any(list(include('rules', required=False)), null(), required=False)
+SensorDetectionHeader:
+ measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ cycle_counter: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_detections: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ extended_qualifier: any(list(include('rules', required=False)), null(), required=False)
+RadarDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+RadarDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity_rmse: any(list(include('rules', required=False)), null(), required=False)
+ rcs: any(list(include('rules', required=False)), null(), required=False)
+ snr: any(list(include('rules', required=False)), null(), required=False)
+ point_target_probability: any(list(include('rules', required=False)), null(), required=False)
+ ambiguity_id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+LidarDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+LidarDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+ height_rmse: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+ free_space_probability: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ reflectivity: any(list(include('rules', required=False)), null(), required=False)
+ echo_pulse_width: any(list(include('rules', required=False)), null(), required=False)
+ radial_velocity: any(list(include('rules', required=False)), null(), required=False)
+ beam_id: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetectionSpecificHeader:
+ max_range: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_indirect_detections: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ specific_header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+ indirect_detection: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicIndirectDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ ellipsoid_radial: any(list(include('rules', required=False)), null(), required=False)
+ ellipsoid_axial: any(list(include('rules', required=False)), null(), required=False)
+ receiver_id: any(list(include('rules', required=False)), null(), required=False)
+ receiver_origin: any(list(include('rules', required=False)), null(), required=False)
+CameraDetectionSpecificHeader:
+ number_of_valid_points: any(list(include('rules', required=False)), null(), required=False)
+CameraDetectionData:
+ header: any(list(include('rules', required=False)), null(), required=False)
+ specific_header: any(list(include('rules', required=False)), null(), required=False)
+ detection: any(list(include('rules', required=False)), null(), required=False)
+ point: any(list(include('rules', required=False)), null(), required=False)
+CameraDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ time_difference: any(list(include('rules', required=False)), null(), required=False)
+ image_shape_type: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_background: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_foreground: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_flat: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_upright: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_ground: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_sky: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_vegetation: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_road: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_non_driving_lane: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_non_road: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_moving_object: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_landmark: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_road_marking: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_vehicle: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_animal: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_front: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_side: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_pedestrian_rear: any(list(include('rules', required=False)), null(), required=False)
+ shape_classification_probability: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ color_probability: any(list(include('rules', required=False)), null(), required=False)
+ ambiguity_id: any(list(include('rules', required=False)), null(), required=False)
+ first_point_index: any(list(include('rules', required=False)), null(), required=False)
+ number_of_points: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+CameraPoint:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ point: any(list(include('rules', required=False)), null(), required=False)
+ point_rmse: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_groundtruth_schema.yml b/rules/output_rules/schema/osi_groundtruth_schema.yml
new file mode 100644
index 0000000..0453a28
--- /dev/null
+++ b/rules/output_rules/schema/osi_groundtruth_schema.yml
@@ -0,0 +1,41 @@
+GroundTruth:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ moving_object: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ road_marking: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ lane: any(list(include('rules', required=False)), null(), required=False)
+ occupant: any(list(include('rules', required=False)), null(), required=False)
+ environmental_conditions: any(list(include('rules', required=False)), null(), required=False)
+ country_code: any(list(include('rules', required=False)), null(), required=False)
+ proj_string: any(list(include('rules', required=False)), null(), required=False)
+ map_reference: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ reference_line: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane: any(list(include('rules', required=False)), null(), required=False)
+ proj_frame_offset: any(list(include('rules', required=False)), null(), required=False)
+ ProjFrameOffset:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ yaw: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_hostvehicledata_schema.yml b/rules/output_rules/schema/osi_hostvehicledata_schema.yml
new file mode 100644
index 0000000..d4302b6
--- /dev/null
+++ b/rules/output_rules/schema/osi_hostvehicledata_schema.yml
@@ -0,0 +1,76 @@
+HostVehicleData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ location: any(list(include('rules', required=False)), null(), required=False)
+ location_rmse: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_basics: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_powertrain: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_brake_system: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_steering: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_wheels: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_localization: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_automated_driving_function: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_motion: any(list(include('rules', required=False)), null(), required=False)
+ route: any(list(include('rules', required=False)), null(), required=False)
+ VehicleBasics:
+ curb_weight: any(list(include('rules', required=False)), null(), required=False)
+ operating_state: any(list(include('rules', required=False)), null(), required=False)
+ VehiclePowertrain:
+ pedal_position_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ pedal_position_clutch: any(list(include('rules', required=False)), null(), required=False)
+ gear_transmission: any(list(include('rules', required=False)), null(), required=False)
+ motor: any(list(include('rules', required=False)), null(), required=False)
+ Motor:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ rpm: any(list(include('rules', required=False)), null(), required=False)
+ torque: any(list(include('rules', required=False)), null(), required=False)
+ VehicleBrakeSystem:
+ pedal_position_brake: any(list(include('rules', required=False)), null(), required=False)
+ VehicleSteering:
+ vehicle_steering_wheel: any(list(include('rules', required=False)), null(), required=False)
+ VehicleWheels:
+ wheel_data: any(list(include('rules', required=False)), null(), required=False)
+ WheelData:
+ axle: any(list(include('rules', required=False)), null(), required=False)
+ index: any(list(include('rules', required=False)), null(), required=False)
+ rotation_rate: any(list(include('rules', required=False)), null(), required=False)
+ slip: any(list(include('rules', required=False)), null(), required=False)
+ VehicleLocalization:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ geodetic_position: any(list(include('rules', required=False)), null(), required=False)
+ VehicleMotion:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ current_curvature: any(list(include('rules', required=False)), null(), required=False)
+ VehicleAutomatedDrivingFunction:
+ name: any(list(include('rules', required=False)), null(), required=False)
+ custom_name: any(list(include('rules', required=False)), null(), required=False)
+ state: any(list(include('rules', required=False)), null(), required=False)
+ custom_state: any(list(include('rules', required=False)), null(), required=False)
+ driver_override: any(list(include('rules', required=False)), null(), required=False)
+ custom_detail: any(list(include('rules', required=False)), null(), required=False)
+ DriverOverride:
+ active: any(list(include('rules', required=False)), null(), required=False)
+ override_reason: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_lane_schema.yml b/rules/output_rules/schema/osi_lane_schema.yml
new file mode 100644
index 0000000..2606224
--- /dev/null
+++ b/rules/output_rules/schema/osi_lane_schema.yml
@@ -0,0 +1,59 @@
+Lane:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ is_host_vehicle_lane: any(list(include('rules', required=False)), null(), required=False)
+ centerline: any(list(include('rules', required=False)), null(), required=False)
+ centerline_is_driving_direction: any(list(include('rules', required=False)), null(), required=False)
+ left_adjacent_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ right_adjacent_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ lane_pairing: any(list(include('rules', required=False)), null(), required=False)
+ right_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ left_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ free_lane_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ road_condition: any(list(include('rules', required=False)), null(), required=False)
+ subtype: any(list(include('rules', required=False)), null(), required=False)
+ RoadCondition:
+ surface_temperature: any(list(include('rules', required=False)), null(), required=False)
+ surface_water_film: any(list(include('rules', required=False)), null(), required=False)
+ surface_freezing_point: any(list(include('rules', required=False)), null(), required=False)
+ surface_ice: any(list(include('rules', required=False)), null(), required=False)
+ surface_roughness: any(list(include('rules', required=False)), null(), required=False)
+ surface_texture: any(list(include('rules', required=False)), null(), required=False)
+ LanePairing:
+ antecessor_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ successor_lane_id: any(list(include('rules', required=False)), null(), required=False)
+LaneBoundary:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ BoundaryPoint:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ height: any(list(include('rules', required=False)), null(), required=False)
+ dash: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ limiting_structure_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_logicaldetectiondata_schema.yml b/rules/output_rules/schema/osi_logicaldetectiondata_schema.yml
new file mode 100644
index 0000000..17588d0
--- /dev/null
+++ b/rules/output_rules/schema/osi_logicaldetectiondata_schema.yml
@@ -0,0 +1,39 @@
+LogicalDetectionData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ header: any(list(include('rules', required=False)), null(), required=False)
+ logical_detection: any(list(include('rules', required=False)), null(), required=False)
+LogicalDetectionDataHeader:
+ logical_detection_time: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+ number_of_valid_logical_detections: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+LogicalDetection:
+ existence_probability: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ velocity_rmse: any(list(include('rules', required=False)), null(), required=False)
+ intensity: any(list(include('rules', required=False)), null(), required=False)
+ snr: any(list(include('rules', required=False)), null(), required=False)
+ point_target_probability: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ echo_pulse_width: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_logicallane_schema.yml b/rules/output_rules/schema/osi_logicallane_schema.yml
new file mode 100644
index 0000000..a312fa3
--- /dev/null
+++ b/rules/output_rules/schema/osi_logicallane_schema.yml
@@ -0,0 +1,73 @@
+LogicalLaneBoundary:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ boundary_line: any(list(include('rules', required=False)), null(), required=False)
+ reference_line_id: any(list(include('rules', required=False)), null(), required=False)
+ physical_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ passing_rule: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ LogicalBoundaryPoint:
+ position: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_position: any(list(include('rules', required=False)), null(), required=False)
+LogicalLane:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ physical_lane_reference: any(list(include('rules', required=False)), null(), required=False)
+ reference_line_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ move_direction: any(list(include('rules', required=False)), null(), required=False)
+ right_adjacent_lane: any(list(include('rules', required=False)), null(), required=False)
+ left_adjacent_lane: any(list(include('rules', required=False)), null(), required=False)
+ overlapping_lane: any(list(include('rules', required=False)), null(), required=False)
+ right_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ left_boundary_id: any(list(include('rules', required=False)), null(), required=False)
+ predecessor_lane: any(list(include('rules', required=False)), null(), required=False)
+ successor_lane: any(list(include('rules', required=False)), null(), required=False)
+ street_name: any(list(include('rules', required=False)), null(), required=False)
+ traffic_rule: any(list(include('rules', required=False)), null(), required=False)
+ PhysicalLaneReference:
+ physical_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ LaneConnection:
+ other_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ at_begin_of_other_lane: any(list(include('rules', required=False)), null(), required=False)
+ LaneRelation:
+ other_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ start_s_other: any(list(include('rules', required=False)), null(), required=False)
+ end_s_other: any(list(include('rules', required=False)), null(), required=False)
+ TrafficRule:
+ traffic_rule_type: any(list(include('rules', required=False)), null(), required=False)
+ traffic_rule_validity: any(list(include('rules', required=False)), null(), required=False)
+ speed_limit: any(list(include('rules', required=False)), null(), required=False)
+ TrafficRuleValidity:
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ valid_for_type: any(list(include('rules', required=False)), null(), required=False)
+ TypeValidity:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_type: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_role: any(list(include('rules', required=False)), null(), required=False)
+ SpeedLimit:
+ speed_limit_value: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_motionrequest_schema.yml b/rules/output_rules/schema/osi_motionrequest_schema.yml
new file mode 100644
index 0000000..b470d4e
--- /dev/null
+++ b/rules/output_rules/schema/osi_motionrequest_schema.yml
@@ -0,0 +1,31 @@
+MotionRequest:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ motion_request_type: any(list(include('rules', required=False)), null(), required=False)
+ desired_state: any(list(include('rules', required=False)), null(), required=False)
+ desired_trajectory: any(list(include('rules', required=False)), null(), required=False)
+ DesiredState:
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ acceleration: any(list(include('rules', required=False)), null(), required=False)
+ DesiredTrajectory:
+ trajectory_point: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_object_schema.yml b/rules/output_rules/schema/osi_object_schema.yml
new file mode 100644
index 0000000..0c3f1fa
--- /dev/null
+++ b/rules/output_rules/schema/osi_object_schema.yml
@@ -0,0 +1,101 @@
+StationaryObject:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ material: any(list(include('rules', required=False)), null(), required=False)
+ density: any(list(include('rules', required=False)), null(), required=False)
+ color: any(list(include('rules', required=False)), null(), required=False)
+ emitting_structure_attribute: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_percentage: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ EmittingStructureAttribute:
+ wavelength_data: any(list(include('rules', required=False)), null(), required=False)
+ emitted_spatial_signal_strength: any(list(include('rules', required=False)), null(), required=False)
+MovingObject:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_attributes: any(list(include('rules', required=False)), null(), required=False)
+ vehicle_classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ future_trajectory: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ pedestrian_attributes: any(list(include('rules', required=False)), null(), required=False)
+ VehicleAttributes:
+ driver_id: any(list(include('rules', required=False)), null(), required=False)
+ radius_wheel: any(list(include('rules', required=False)), null(), required=False)
+ number_wheels: any(list(include('rules', required=False)), null(), required=False)
+ bbcenter_to_rear: any(list(include('rules', required=False)), null(), required=False)
+ bbcenter_to_front: any(list(include('rules', required=False)), null(), required=False)
+ ground_clearance: any(list(include('rules', required=False)), null(), required=False)
+ wheel_data: any(list(include('rules', required=False)), null(), required=False)
+ steering_wheel_angle: any(list(include('rules', required=False)), null(), required=False)
+ WheelData:
+ axle: any(list(include('rules', required=False)), null(), required=False)
+ index: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ wheel_radius: any(list(include('rules', required=False)), null(), required=False)
+ rim_radius: any(list(include('rules', required=False)), null(), required=False)
+ width: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ rotation_rate: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ friction_coefficient: any(list(include('rules', required=False)), null(), required=False)
+ MovingObjectClassification:
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_percentage: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ VehicleClassification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ light_state: any(list(include('rules', required=False)), null(), required=False)
+ has_trailer: any(list(include('rules', required=False)), null(), required=False)
+ trailer_id: any(list(include('rules', required=False)), null(), required=False)
+ role: any(list(include('rules', required=False)), null(), required=False)
+ LightState:
+ indicator_state: any(list(include('rules', required=False)), null(), required=False)
+ front_fog_light: any(list(include('rules', required=False)), null(), required=False)
+ rear_fog_light: any(list(include('rules', required=False)), null(), required=False)
+ head_light: any(list(include('rules', required=False)), null(), required=False)
+ high_beam: any(list(include('rules', required=False)), null(), required=False)
+ reversing_light: any(list(include('rules', required=False)), null(), required=False)
+ brake_light_state: any(list(include('rules', required=False)), null(), required=False)
+ license_plate_illumination_rear: any(list(include('rules', required=False)), null(), required=False)
+ emergency_vehicle_illumination: any(list(include('rules', required=False)), null(), required=False)
+ service_vehicle_illumination: any(list(include('rules', required=False)), null(), required=False)
+ PedestrianAttributes:
+ bbcenter_to_root: any(list(include('rules', required=False)), null(), required=False)
+ skeleton_bone: any(list(include('rules', required=False)), null(), required=False)
+ Bone:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ length: any(list(include('rules', required=False)), null(), required=False)
+ missing: any(list(include('rules', required=False)), null(), required=False)
+ velocity: any(list(include('rules', required=False)), null(), required=False)
+ orientation_rate: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_occupant_schema.yml b/rules/output_rules/schema/osi_occupant_schema.yml
new file mode 100644
index 0000000..0b2907c
--- /dev/null
+++ b/rules/output_rules/schema/osi_occupant_schema.yml
@@ -0,0 +1,25 @@
+Occupant:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ is_driver: any(list(include('rules', required=False)), null(), required=False)
+ seat: any(list(include('rules', required=False)), null(), required=False)
+ steering_control: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_referenceline_schema.yml b/rules/output_rules/schema/osi_referenceline_schema.yml
new file mode 100644
index 0000000..8e284d3
--- /dev/null
+++ b/rules/output_rules/schema/osi_referenceline_schema.yml
@@ -0,0 +1,25 @@
+ReferenceLine:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ poly_line: any(list(include('rules', required=False)), null(), required=False)
+ ReferenceLinePoint:
+ world_position: any(list(include('rules', required=False)), null(), required=False)
+ s_position: any(list(include('rules', required=False)), null(), required=False)
+ t_axis_yaw: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_roadmarking_schema.yml b/rules/output_rules/schema/osi_roadmarking_schema.yml
new file mode 100644
index 0000000..1ec67a7
--- /dev/null
+++ b/rules/output_rules/schema/osi_roadmarking_schema.yml
@@ -0,0 +1,36 @@
+RoadMarking:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ type: any(list(include('rules', required=False)), null(), required=False)
+ traffic_main_sign_type: any(list(include('rules', required=False)), null(), required=False)
+ monochrome_color: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ value_text: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_route_schema.yml b/rules/output_rules/schema/osi_route_schema.yml
new file mode 100644
index 0000000..af073f9
--- /dev/null
+++ b/rules/output_rules/schema/osi_route_schema.yml
@@ -0,0 +1,26 @@
+Route:
+ route_id: any(list(include('rules', required=False)), null(), required=False)
+ route_segment: any(list(include('rules', required=False)), null(), required=False)
+ LogicalLaneSegment:
+ logical_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ start_s: any(list(include('rules', required=False)), null(), required=False)
+ end_s: any(list(include('rules', required=False)), null(), required=False)
+ RouteSegment:
+ lane_segment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_sensordata_schema.yml b/rules/output_rules/schema/osi_sensordata_schema.yml
new file mode 100644
index 0000000..3fa49b0
--- /dev/null
+++ b/rules/output_rules/schema/osi_sensordata_schema.yml
@@ -0,0 +1,53 @@
+DetectedEntityHeader:
+ measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ cycle_counter: any(list(include('rules', required=False)), null(), required=False)
+ data_qualifier: any(list(include('rules', required=False)), null(), required=False)
+SensorData:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_location: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_location_rmse: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ last_measurement_time: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object_header: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_header: any(list(include('rules', required=False)), null(), required=False)
+ moving_object: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign_header: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light_header: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light: any(list(include('rules', required=False)), null(), required=False)
+ road_marking_header: any(list(include('rules', required=False)), null(), required=False)
+ road_marking: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary_header: any(list(include('rules', required=False)), null(), required=False)
+ lane_boundary: any(list(include('rules', required=False)), null(), required=False)
+ lane_header: any(list(include('rules', required=False)), null(), required=False)
+ lane: any(list(include('rules', required=False)), null(), required=False)
+ occupant_header: any(list(include('rules', required=False)), null(), required=False)
+ occupant: any(list(include('rules', required=False)), null(), required=False)
+ feature_data: any(list(include('rules', required=False)), null(), required=False)
+ logical_detection_data: any(list(include('rules', required=False)), null(), required=False)
+ VirtualDetectionArea:
+ polygon: any(list(include('rules', required=False)), null(), required=False)
+ virtual_detection_area: any(list(include('rules', required=False)), null(), required=False)
+ system_time: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_sensorspecific_schema.yml b/rules/output_rules/schema/osi_sensorspecific_schema.yml
new file mode 100644
index 0000000..4a1bd90
--- /dev/null
+++ b/rules/output_rules/schema/osi_sensorspecific_schema.yml
@@ -0,0 +1,28 @@
+RadarSpecificObjectData:
+ rcs: any(list(include('rules', required=False)), null(), required=False)
+LidarSpecificObjectData:
+ maximum_measurement_distance_sensor: any(list(include('rules', required=False)), null(), required=False)
+ probability: any(list(include('rules', required=False)), null(), required=False)
+ trilateration_status: any(list(include('rules', required=False)), null(), required=False)
+ trend: any(list(include('rules', required=False)), null(), required=False)
+ signalway: any(list(include('rules', required=False)), null(), required=False)
+ Signalway:
+ sender_id: any(list(include('rules', required=False)), null(), required=False)
+ receiver_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_sensorview_schema.yml b/rules/output_rules/schema/osi_sensorview_schema.yml
new file mode 100644
index 0000000..349b066
--- /dev/null
+++ b/rules/output_rules/schema/osi_sensorview_schema.yml
@@ -0,0 +1,56 @@
+SensorView:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_data: any(list(include('rules', required=False)), null(), required=False)
+ global_ground_truth: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_id: any(list(include('rules', required=False)), null(), required=False)
+ generic_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor_view: any(list(include('rules', required=False)), null(), required=False)
+GenericSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+RadarSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ reflection: any(list(include('rules', required=False)), null(), required=False)
+ Reflection:
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ time_of_flight: any(list(include('rules', required=False)), null(), required=False)
+ doppler_shift: any(list(include('rules', required=False)), null(), required=False)
+ source_horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ source_vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+LidarSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ reflection: any(list(include('rules', required=False)), null(), required=False)
+ Reflection:
+ signal_strength: any(list(include('rules', required=False)), null(), required=False)
+ time_of_flight: any(list(include('rules', required=False)), null(), required=False)
+ doppler_shift: any(list(include('rules', required=False)), null(), required=False)
+ normal_to_surface: any(list(include('rules', required=False)), null(), required=False)
+ object_id: any(list(include('rules', required=False)), null(), required=False)
+CameraSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ image_data: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicSensorView:
+ view_configuration: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_sensorviewconfiguration_schema.yml b/rules/output_rules/schema/osi_sensorviewconfiguration_schema.yml
new file mode 100644
index 0000000..0a2b73d
--- /dev/null
+++ b/rules/output_rules/schema/osi_sensorviewconfiguration_schema.yml
@@ -0,0 +1,88 @@
+SensorViewConfiguration:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ range: any(list(include('rules', required=False)), null(), required=False)
+ update_cycle_time: any(list(include('rules', required=False)), null(), required=False)
+ update_cycle_offset: any(list(include('rules', required=False)), null(), required=False)
+ simulation_start_time: any(list(include('rules', required=False)), null(), required=False)
+ omit_static_information: any(list(include('rules', required=False)), null(), required=False)
+ generic_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ radar_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ lidar_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ camera_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+ ultrasonic_sensor_view_configuration: any(list(include('rules', required=False)), null(), required=False)
+GenericSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+RadarSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_vertical: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ emitter_frequency: any(list(include('rules', required=False)), null(), required=False)
+ tx_antenna_diagram: any(list(include('rules', required=False)), null(), required=False)
+ rx_antenna_diagram: any(list(include('rules', required=False)), null(), required=False)
+ AntennaDiagramEntry:
+ horizontal_angle: any(list(include('rules', required=False)), null(), required=False)
+ vertical_angle: any(list(include('rules', required=False)), null(), required=False)
+ response: any(list(include('rules', required=False)), null(), required=False)
+LidarSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_rays_vertical: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ emitter_frequency: any(list(include('rules', required=False)), null(), required=False)
+ num_of_pixels: any(list(include('rules', required=False)), null(), required=False)
+ directions: any(list(include('rules', required=False)), null(), required=False)
+ timings: any(list(include('rules', required=False)), null(), required=False)
+CameraSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+ number_of_pixels_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ number_of_pixels_vertical: any(list(include('rules', required=False)), null(), required=False)
+ channel_format: any(list(include('rules', required=False)), null(), required=False)
+ samples_per_pixel: any(list(include('rules', required=False)), null(), required=False)
+ max_number_of_interactions: any(list(include('rules', required=False)), null(), required=False)
+ wavelength_data: any(list(include('rules', required=False)), null(), required=False)
+ pixel_order: any(list(include('rules', required=False)), null(), required=False)
+UltrasonicSensorViewConfiguration:
+ sensor_id: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position: any(list(include('rules', required=False)), null(), required=False)
+ mounting_position_rmse: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_horizontal: any(list(include('rules', required=False)), null(), required=False)
+ field_of_view_vertical: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_streamingupdate_schema.yml b/rules/output_rules/schema/osi_streamingupdate_schema.yml
new file mode 100644
index 0000000..d1e7e28
--- /dev/null
+++ b/rules/output_rules/schema/osi_streamingupdate_schema.yml
@@ -0,0 +1,27 @@
+StreamingUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ stationary_object_update: any(list(include('rules', required=False)), null(), required=False)
+ moving_object_update: any(list(include('rules', required=False)), null(), required=False)
+ traffic_sign_update: any(list(include('rules', required=False)), null(), required=False)
+ traffic_light_update: any(list(include('rules', required=False)), null(), required=False)
+ environmental_conditions_update: any(list(include('rules', required=False)), null(), required=False)
+ host_vehicle_data_update: any(list(include('rules', required=False)), null(), required=False)
+ obsolete_id: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_trafficcommand_schema.yml b/rules/output_rules/schema/osi_trafficcommand_schema.yml
new file mode 100644
index 0000000..6c8bef2
--- /dev/null
+++ b/rules/output_rules/schema/osi_trafficcommand_schema.yml
@@ -0,0 +1,91 @@
+TrafficCommand:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ action: any(list(include('rules', required=False)), null(), required=False)
+TrafficAction:
+ follow_trajectory_action: any(list(include('rules', required=False)), null(), required=False)
+ follow_path_action: any(list(include('rules', required=False)), null(), required=False)
+ acquire_global_position_action: any(list(include('rules', required=False)), null(), required=False)
+ custom_action: any(list(include('rules', required=False)), null(), required=False)
+ longitudinal_distance_action: any(list(include('rules', required=False)), null(), required=False)
+ lane_offset_action: any(list(include('rules', required=False)), null(), required=False)
+ lateral_distance_action: any(list(include('rules', required=False)), null(), required=False)
+ teleport_action: any(list(include('rules', required=False)), null(), required=False)
+ ActionHeader:
+ action_id: any(list(include('rules', required=False)), null(), required=False)
+ DynamicConstraints:
+ max_acceleration: any(list(include('rules', required=False)), null(), required=False)
+ max_deceleration: any(list(include('rules', required=False)), null(), required=False)
+ max_speed: any(list(include('rules', required=False)), null(), required=False)
+ FollowTrajectoryAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ trajectory_point: any(list(include('rules', required=False)), null(), required=False)
+ constrain_orientation: any(list(include('rules', required=False)), null(), required=False)
+ following_mode: any(list(include('rules', required=False)), null(), required=False)
+ FollowPathAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ path_point: any(list(include('rules', required=False)), null(), required=False)
+ constrain_orientation: any(list(include('rules', required=False)), null(), required=False)
+ following_mode: any(list(include('rules', required=False)), null(), required=False)
+ AcquireGlobalPositionAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+ LaneChangeAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ relative_target_lane: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ SpeedAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ absolute_target_speed: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ AbortActionsAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ EndActionsAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ CustomAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ command: any(list(include('rules', required=False)), null(), required=False)
+ command_type: any(list(include('rules', required=False)), null(), required=False)
+ LongitudinalDistanceAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ freespace: any(list(include('rules', required=False)), null(), required=False)
+ follow: any(list(include('rules', required=False)), null(), required=False)
+ dynamic_constraints: any(list(include('rules', required=False)), null(), required=False)
+ LateralDistanceAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ distance: any(list(include('rules', required=False)), null(), required=False)
+ freespace: any(list(include('rules', required=False)), null(), required=False)
+ follow: any(list(include('rules', required=False)), null(), required=False)
+ dynamic_constraints: any(list(include('rules', required=False)), null(), required=False)
+ LaneOffsetAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ target_lane_offset: any(list(include('rules', required=False)), null(), required=False)
+ dynamics_shape: any(list(include('rules', required=False)), null(), required=False)
+ TeleportAction:
+ action_header: any(list(include('rules', required=False)), null(), required=False)
+ position: any(list(include('rules', required=False)), null(), required=False)
+ orientation: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_trafficcommandupdate_schema.yml b/rules/output_rules/schema/osi_trafficcommandupdate_schema.yml
new file mode 100644
index 0000000..f2928c3
--- /dev/null
+++ b/rules/output_rules/schema/osi_trafficcommandupdate_schema.yml
@@ -0,0 +1,25 @@
+TrafficCommandUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ traffic_participant_id: any(list(include('rules', required=False)), null(), required=False)
+ dismissed_action: any(list(include('rules', required=False)), null(), required=False)
+ DismissedAction:
+ dismissed_action_id: any(list(include('rules', required=False)), null(), required=False)
+ failure_reason: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_trafficlight_schema.yml b/rules/output_rules/schema/osi_trafficlight_schema.yml
new file mode 100644
index 0000000..20db3ed
--- /dev/null
+++ b/rules/output_rules/schema/osi_trafficlight_schema.yml
@@ -0,0 +1,32 @@
+TrafficLight:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ color_description: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ color: any(list(include('rules', required=False)), null(), required=False)
+ icon: any(list(include('rules', required=False)), null(), required=False)
+ mode: any(list(include('rules', required=False)), null(), required=False)
+ counter: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_trafficsign_schema.yml b/rules/output_rules/schema/osi_trafficsign_schema.yml
new file mode 100644
index 0000000..22830bd
--- /dev/null
+++ b/rules/output_rules/schema/osi_trafficsign_schema.yml
@@ -0,0 +1,63 @@
+TrafficSignValue:
+ value: any(list(include('rules', required=False)), null(), required=False)
+ value_unit: any(list(include('rules', required=False)), null(), required=False)
+ text: any(list(include('rules', required=False)), null(), required=False)
+TrafficSign:
+ id: any(list(include('rules', required=False)), null(), required=False)
+ main_sign: any(list(include('rules', required=False)), null(), required=False)
+ supplementary_sign: any(list(include('rules', required=False)), null(), required=False)
+ source_reference: any(list(include('rules', required=False)), null(), required=False)
+ MainSign:
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ variability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ direction_scope: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ vertically_mirrored: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ SupplementarySign:
+ base: any(list(include('rules', required=False)), null(), required=False)
+ classification: any(list(include('rules', required=False)), null(), required=False)
+ model_reference: any(list(include('rules', required=False)), null(), required=False)
+ Classification:
+ variability: any(list(include('rules', required=False)), null(), required=False)
+ type: any(list(include('rules', required=False)), null(), required=False)
+ value: any(list(include('rules', required=False)), null(), required=False)
+ assigned_lane_id: any(list(include('rules', required=False)), null(), required=False)
+ actor: any(list(include('rules', required=False)), null(), required=False)
+ arrow: any(list(include('rules', required=False)), null(), required=False)
+ is_out_of_service: any(list(include('rules', required=False)), null(), required=False)
+ country: any(list(include('rules', required=False)), null(), required=False)
+ country_revision: any(list(include('rules', required=False)), null(), required=False)
+ code: any(list(include('rules', required=False)), null(), required=False)
+ sub_code: any(list(include('rules', required=False)), null(), required=False)
+ logical_lane_assignment: any(list(include('rules', required=False)), null(), required=False)
+ Arrow:
+ lane_id: any(list(include('rules', required=False)), null(), required=False)
+ direction: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_trafficupdate_schema.yml b/rules/output_rules/schema/osi_trafficupdate_schema.yml
new file mode 100644
index 0000000..54c5f3d
--- /dev/null
+++ b/rules/output_rules/schema/osi_trafficupdate_schema.yml
@@ -0,0 +1,22 @@
+TrafficUpdate:
+ version: any(list(include('rules', required=False)), null(), required=False)
+ timestamp: any(list(include('rules', required=False)), null(), required=False)
+ update: any(list(include('rules', required=False)), null(), required=False)
+ internal_state: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/rules/output_rules/schema/osi_version_schema.yml b/rules/output_rules/schema/osi_version_schema.yml
new file mode 100644
index 0000000..8c59006
--- /dev/null
+++ b/rules/output_rules/schema/osi_version_schema.yml
@@ -0,0 +1,22 @@
+InterfaceVersion:
+ version_major: any(list(include('rules', required=False)), null(), required=False)
+ version_minor: any(list(include('rules', required=False)), null(), required=False)
+ version_patch: any(list(include('rules', required=False)), null(), required=False)
+ current_interface_version: any(list(include('rules', required=False)), null(), required=False)
+---
+rules:
+ is_greater_than: num(required=False)
+ is_greater_than_or_equal_to: num(required=False)
+ is_less_than_or_equal_to: num(required=False)
+ is_less_than: num(required=False)
+ is_equal_to: any(num(), bool(), required=False)
+ is_different_to: num(required=False)
+ is_globally_unique: str(required=False)
+ refers_to: str(required=False)
+ is_iso_country_code: str(required=False)
+ is_set: str(required=False)
+ check_if: list(include('rules', required=False),required=False)
+ do_check: any(required=False)
+ target: any(required=False)
+ first_element: any(required=False)
+ last_element: any(required=False)
\ No newline at end of file
diff --git a/test/integration/001_smoke_test/20230221T153730Z_sv_340_300_0000_protoBin.osi b/test/integration/001_smoke_test/20230221T153730Z_sv_340_300_0000_protoBin.osi
deleted file mode 100644
index 81da351..0000000
Binary files a/test/integration/001_smoke_test/20230221T153730Z_sv_340_300_0000_protoBin.osi and /dev/null differ
diff --git a/test/integration/001_smoke_test_tracefile/20240617T163554Z_sv_370_244_20_one_object.osi b/test/integration/001_smoke_test_tracefile/20240617T163554Z_sv_370_244_20_one_object.osi
new file mode 100644
index 0000000..fae9bee
Binary files /dev/null and b/test/integration/001_smoke_test_tracefile/20240617T163554Z_sv_370_244_20_one_object.osi differ
diff --git a/test/integration/001_smoke_test_tracefile/README.md b/test/integration/001_smoke_test_tracefile/README.md
new file mode 100644
index 0000000..8317e01
--- /dev/null
+++ b/test/integration/001_smoke_test_tracefile/README.md
@@ -0,0 +1,28 @@
+# 001 Smoke Test Trace File
+
+This test checks if the model runs without any runtime errors when connected to a trace file player FMU.
+
+## System Structure Definition
+
+The system consists of an OSMP binary trace file player and the model itself.
+The trace file player will read the given SensorView trace file as an input for the sensor model.
+The output of the sensor model is disregarded.
+
+
+
+## Scenario
+
+The scenario contained in the given trace file consists of a vehicle placed on the x-axis (y = 0) in front of the ego vehicle in the sensor's field of view.
+The x-coordinates of the objects in this scenario are:
+
+- ego: 10 m
+- ego bbcenter2rear: -1.146 m
+- object: 25 m
+
+## Metric
+
+No runtime error.
+
+## Pass/Fail Criterion
+
+The test fails, if a runtime error occurs.
diff --git a/test/integration/001_smoke_test/SystemStructure.ssd b/test/integration/001_smoke_test_tracefile/SystemStructure.ssd
similarity index 99%
rename from test/integration/001_smoke_test/SystemStructure.ssd
rename to test/integration/001_smoke_test_tracefile/SystemStructure.ssd
index 020ccb5..35cbfd4 100644
--- a/test/integration/001_smoke_test/SystemStructure.ssd
+++ b/test/integration/001_smoke_test_tracefile/SystemStructure.ssd
@@ -33,7 +33,7 @@
-
+
diff --git a/test/integration/001_smoke_test_tracefile/system_structure.png b/test/integration/001_smoke_test_tracefile/system_structure.png
new file mode 100644
index 0000000..b1e7e09
Binary files /dev/null and b/test/integration/001_smoke_test_tracefile/system_structure.png differ
diff --git a/test/integration/002_output_osi_fields/20230221T153730Z_sv_340_300_0000_protoBin.osi b/test/integration/002_output_osi_fields/20230221T153730Z_sv_340_300_0000_protoBin.osi
deleted file mode 100644
index 81da351..0000000
Binary files a/test/integration/002_output_osi_fields/20230221T153730Z_sv_340_300_0000_protoBin.osi and /dev/null differ
diff --git a/test/integration/002_output_osi_fields/osi_check.txt b/test/integration/002_output_osi_fields/osi_check.txt
deleted file mode 100644
index fa3abf3..0000000
--- a/test/integration/002_output_osi_fields/osi_check.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-moving_object
-moving_object.base
-moving_object.base.position
-moving_object.base.dimension
diff --git a/test/integration/002_smoke_test_scenario/Catalogs/Vehicles/VehicleCatalog.xosc b/test/integration/002_smoke_test_scenario/Catalogs/Vehicles/VehicleCatalog.xosc
new file mode 100644
index 0000000..b96a039
--- /dev/null
+++ b/test/integration/002_smoke_test_scenario/Catalogs/Vehicles/VehicleCatalog.xosc
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/002_smoke_test_scenario/README.md b/test/integration/002_smoke_test_scenario/README.md
new file mode 100644
index 0000000..9068638
--- /dev/null
+++ b/test/integration/002_smoke_test_scenario/README.md
@@ -0,0 +1,24 @@
+# 002 Smoke Test Trace Scenario
+
+This test checks if the model runs without any runtime errors when connected to a scenario player FMU.
+
+## System Structure Definition
+
+The system consists of the [esmini scenario player FMU](https://github.com/esmini/esmini/tree/master/OSMP_FMU) and the model itself.
+esmini will play the given OpenSCenario file as an input for the sensor model.
+The output of the sensor model is disregarded.
+
+
+
+## Scenario
+
+The scenario contained in the given OpenScenario file consists of the ego vehicle driving on a straight road.
+Another vehicle is overtaking from behind and cutting in front of the ego into the ego lane.
+
+## Metric
+
+No runtime error.
+
+## Pass/Fail Criterion
+
+The test fails, if a runtime error occurs.
diff --git a/test/integration/002_smoke_test_scenario/SystemStructure.ssd b/test/integration/002_smoke_test_scenario/SystemStructure.ssd
new file mode 100644
index 0000000..370de79
--- /dev/null
+++ b/test/integration/002_smoke_test_scenario/SystemStructure.ssd
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/002_smoke_test_scenario/cut-in_simple.xosc b/test/integration/002_smoke_test_scenario/cut-in_simple.xosc
new file mode 100644
index 0000000..1bc1217
--- /dev/null
+++ b/test/integration/002_smoke_test_scenario/cut-in_simple.xosc
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/002_smoke_test_scenario/straight_500m.xodr b/test/integration/002_smoke_test_scenario/straight_500m.xodr
new file mode 100644
index 0000000..ce7c576
--- /dev/null
+++ b/test/integration/002_smoke_test_scenario/straight_500m.xodr
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/002_smoke_test_scenario/system_structure.png b/test/integration/002_smoke_test_scenario/system_structure.png
new file mode 100644
index 0000000..9844f4f
Binary files /dev/null and b/test/integration/002_smoke_test_scenario/system_structure.png differ
diff --git a/test/integration/003_output_osi_fields/20240617T163554Z_sv_370_244_20_one_object.osi b/test/integration/003_output_osi_fields/20240617T163554Z_sv_370_244_20_one_object.osi
new file mode 100644
index 0000000..fae9bee
Binary files /dev/null and b/test/integration/003_output_osi_fields/20240617T163554Z_sv_370_244_20_one_object.osi differ
diff --git a/test/integration/003_output_osi_fields/README.md b/test/integration/003_output_osi_fields/README.md
new file mode 100644
index 0000000..a56da7f
--- /dev/null
+++ b/test/integration/003_output_osi_fields/README.md
@@ -0,0 +1,28 @@
+# 003 Output OSI Fields
+
+This test checks if all required OSI fields are filled by the model in the output SensorData.
+
+## System Structure Definition
+
+The system consists of an OSMP binary trace file player, the model itself and a trace file writer.
+The trace file player will read the given SensorView trace file as an input for the sensor model.
+The output of the sensor model is written to a binary OSI trace file. This trace file is checked by osi-validation in the pipeline.
+
+
+
+## Scenario
+
+The scenario contained in the given trace file consists of a vehicle placed on the x-axis (y = 0) in front of the ego vehicle in the sensor's field of view.
+The x-coordinates of the objects in this scenario are:
+
+- ego: 10 m
+- ego bbcenter2rear: -1.146 m
+- object: 25 m
+
+## Metric
+
+osi-validation shall not fail.
+
+## Pass/Fail Criterion
+
+The test fails, if a required field is not filled in the model output SensorData.
diff --git a/test/integration/002_output_osi_fields/SystemStructure.ssd b/test/integration/003_output_osi_fields/SystemStructure.ssd
similarity index 82%
rename from test/integration/002_output_osi_fields/SystemStructure.ssd
rename to test/integration/003_output_osi_fields/SystemStructure.ssd
index 73c0213..f5d48b0 100644
--- a/test/integration/002_output_osi_fields/SystemStructure.ssd
+++ b/test/integration/003_output_osi_fields/SystemStructure.ssd
@@ -33,7 +33,7 @@
-
+
@@ -79,41 +79,38 @@
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -126,9 +123,9 @@
-
-
-
+
+
+
diff --git a/test/integration/003_output_osi_fields/system_structure.png b/test/integration/003_output_osi_fields/system_structure.png
new file mode 100644
index 0000000..491346c
Binary files /dev/null and b/test/integration/003_output_osi_fields/system_structure.png differ