diff --git a/.github/workflows/build_osi-validation.yml b/.github/workflows/build_osi-validation.yml
new file mode 100644
index 0000000..0314799
--- /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@v3
+ 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/cl2.yml b/.github/workflows/cl2.yml
index ba003c5..64ba487 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
@@ -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_openmcx, build_esmini, generate_integration_test_paths]
name: Integration Test
runs-on: ubuntu-latest
strategy:
@@ -91,12 +91,12 @@ jobs:
path: /tmp/esmini_fmu
key: ${{ runner.os }}-esmini-fmu
- - name: Cache OSI Field Checker
- id: cache-osi-field-checker
+ - name: Cache osi-validation
+ id: cache-osi-validation
uses: actions/cache@v3
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
@@ -121,6 +121,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 output 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
@@ -129,8 +158,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`
@@ -138,22 +167,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
+ - name: Archive Output Trace Files
+ if: steps.check-for-output-trace-files.outputs.found_trace == 1
uses: actions/upload-artifact@v3
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 }}
@@ -186,7 +238,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/README.md b/README.md
index 5072bc6..d643381 100644
--- a/README.md
+++ b/README.md
@@ -37,29 +37,33 @@ Each parameter should have a short description as shown in the following example
## Interface
What interfaces are used as model input and model output?
-All required field of the interface shall be named in a list as shown in the following example.
+All required and optional messages of the interface shall be named in a list as shown in the following example.
### Input: Required Fields in osi3::SensorView and/or osi3::TrafficCommand
-* `sensor_view.global_ground_truth.timestamp`
-* `sensor_view.global_ground_truth.host_vehicle_id`
-* `sensor_view.global_ground_truth.moving_object.id`
-* `sensor_view.global_ground_truth.moving_object.base.position`
-* `sensor_view.global_ground_truth.moving_object.base.orientation`
-* `sensor_view.global_ground_truth.moving_object.base.velocity`
-* `traffic_command.traffic_participant_id`
-* `traffic_command.action`
+| OSI Message | Required / Optional |
+|------------------------------------------------------------------|---------------------|
+| `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.velocity` | required |
+| `traffic_command.traffic_participant_id` | required |
+| `traffic_command.action` | optional |
### Output: Fields in osi3::TrafficUpdate and/or osi3::TrafficCommandUpdate filled by the Model
-* `traffic_update.version`
-* `traffic_update.timestamp`
-* `traffic_update.update.base.position`
-* `traffic_update.update.base.orientation`
-* `traffic_update.update.base.velocity`
-* `traffic_command_update.version`
-* `traffic_command_update.timestamp`
-* `traffic_command_update.dismissed_action`
+| OSI Message | Required / Optional |
+|-------------------------------------------|---------------------|
+| `traffic_update.version` | required |
+| `traffic_update.timestamp` | required |
+| `traffic_update.update.base.position` | required |
+| `traffic_update.update.base.orientation` | required |
+| `traffic_update.update.base.velocity` | required |
+| `traffic_command_update.version` | required |
+| `traffic_command_update.timestamp` | required |
+| `traffic_command_update.dismissed_action` | optional |
## Build Instructions
diff --git a/lib/open-simulation-interface b/lib/open-simulation-interface
index 2ed930e..4a5f43f 160000
--- a/lib/open-simulation-interface
+++ b/lib/open-simulation-interface
@@ -1 +1 @@
-Subproject commit 2ed930ed7113c787b3acb1bc8a90cf05474e2d7d
+Subproject commit 4a5f43ff6b5ae09ea33851b2928fbb0bb69a21fa
diff --git a/rules/input_rules/osi_common.yml b/rules/input_rules/osi_common.yml
new file mode 100644
index 0000000..327856d
--- /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:
+ position:
+ - is_set:
+ orientation:
+ - is_set:
+ velocity:
+ - is_set:
+ 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..16da0f5
--- /dev/null
+++ b/rules/input_rules/osi_groundtruth.yml
@@ -0,0 +1,30 @@
+GroundTruth:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ host_vehicle_id:
+ - refers_to: MovingObject
+ - is_set:
+ stationary_object:
+ moving_object:
+ - is_set:
+ 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..9d9ebcd
--- /dev/null
+++ b/rules/input_rules/osi_sensorview.yml
@@ -0,0 +1,46 @@
+SensorView:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ sensor_id:
+ - is_set:
+ mounting_position:
+ - is_set:
+ mounting_position_rmse:
+ host_vehicle_data:
+ global_ground_truth:
+ - is_set:
+ 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..327856d
--- /dev/null
+++ b/rules/output_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:
+ position:
+ - is_set:
+ orientation:
+ - is_set:
+ velocity:
+ - is_set:
+ 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..79be0fa
--- /dev/null
+++ b/rules/output_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/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..1b42898
--- /dev/null
+++ b/rules/output_rules/osi_trafficupdate.yml
@@ -0,0 +1,8 @@
+TrafficUpdate:
+ version:
+ - is_set:
+ timestamp:
+ - is_set:
+ update:
+ - is_set:
+ 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..f2bb027
--- /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)
diff --git a/src/MyTrafficParticipantModel.cpp b/src/MyTrafficParticipantModel.cpp
index ec654e0..4f8060e 100644
--- a/src/MyTrafficParticipantModel.cpp
+++ b/src/MyTrafficParticipantModel.cpp
@@ -131,6 +131,7 @@ void MyTrafficParticipantModel::Step(const osi3::SensorView& sensor_view_in,
}
update->mutable_base()->mutable_velocity()->set_x(velocity);
update->mutable_base()->mutable_position()->set_x(CalcNewPosition(obj.base().position().x(), velocity, delta_time));
+ update->mutable_base()->mutable_orientation()->set_yaw(0.0);
}
}
diff --git a/test/integration/001_smoke_test_tracefile/20230221T153730Z_sv_340_300_0000_protoBin.osi b/test/integration/001_smoke_test_tracefile/20230221T153730Z_sv_340_300_0000_protoBin.osi
deleted file mode 100644
index 81da351..0000000
Binary files a/test/integration/001_smoke_test_tracefile/20230221T153730Z_sv_340_300_0000_protoBin.osi and /dev/null differ
diff --git a/test/integration/001_smoke_test_tracefile/20240604T073139Z_sv_370_244_20_generic_valid_sensor_view.osi b/test/integration/001_smoke_test_tracefile/20240604T073139Z_sv_370_244_20_generic_valid_sensor_view.osi
new file mode 100644
index 0000000..c5314d3
Binary files /dev/null and b/test/integration/001_smoke_test_tracefile/20240604T073139Z_sv_370_244_20_generic_valid_sensor_view.osi differ
diff --git a/test/integration/001_smoke_test_tracefile/README.md b/test/integration/001_smoke_test_tracefile/README.md
index 1cfec38..6ca4db2 100644
--- a/test/integration/001_smoke_test_tracefile/README.md
+++ b/test/integration/001_smoke_test_tracefile/README.md
@@ -11,6 +11,7 @@ The traffic participant model is connected with the input to the trace file play
## Scenario
The ego vehicle is placed on a straight road.
+In front of the ego, there is another vehicle, that is not used by the traffic participant model.
Since there is no FMU connected to the output, the model output is neglected.
## Pass/Fail Criterion
diff --git a/test/integration/004_integration_output_validation/Catalogs/Vehicles/VehicleCatalog.xosc b/test/integration/004_integration_output_validation/Catalogs/Vehicles/VehicleCatalog.xosc
new file mode 100644
index 0000000..b96a039
--- /dev/null
+++ b/test/integration/004_integration_output_validation/Catalogs/Vehicles/VehicleCatalog.xosc
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/004_integration_output_validation/README.md b/test/integration/004_integration_output_validation/README.md
new file mode 100644
index 0000000..337a181
--- /dev/null
+++ b/test/integration/004_integration_output_validation/README.md
@@ -0,0 +1,24 @@
+# 004 Integration Test Output Validation
+
+This test uses the same scenario and similar setup as 003.
+Additionally, the TrafficUpdate and TrafficCommandUpdate outputs of the model are written to trace files.
+
+## System Structure Definition
+
+The traffic participant model is connected to the esmini FMU, as shown in the following image.
+It has an osi3::SensorView message as well as the optional osi3::TrafficCommand as input.
+The traffic participant outputs both the osi3::TrafficUpdate and the optional osi3::TrafficCommandUpdate back to the esmini scenario player.
+The traffic participant outputs are additionally connected to trace file writer FMUs.
+
+
+
+## Scenario
+
+The ego vehicle is placed on a straight road.
+The movement of the ego vehicle is defined by a speed action after 10 s in the scenario file.
+However, the behavior of the ego vehicle is fully controlled by the traffic participant model.
+
+## Pass/Fail Criterion
+
+The test fails, if the model crashes during runtime.
+Additionally, all trace files are checked with osi-validation after the simulation.
diff --git a/test/integration/004_integration_output_validation/SystemStructure.ssd b/test/integration/004_integration_output_validation/SystemStructure.ssd
new file mode 100644
index 0000000..6fc87d1
--- /dev/null
+++ b/test/integration/004_integration_output_validation/SystemStructure.ssd
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/004_integration_output_validation/control_scenario.xosc b/test/integration/004_integration_output_validation/control_scenario.xosc
new file mode 100644
index 0000000..ee67cba
--- /dev/null
+++ b/test/integration/004_integration_output_validation/control_scenario.xosc
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/004_integration_output_validation/straight_500m.xodr b/test/integration/004_integration_output_validation/straight_500m.xodr
new file mode 100644
index 0000000..ce7c576
--- /dev/null
+++ b/test/integration/004_integration_output_validation/straight_500m.xodr
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/integration/004_integration_output_validation/system_structure.png b/test/integration/004_integration_output_validation/system_structure.png
new file mode 100644
index 0000000..72d97e4
Binary files /dev/null and b/test/integration/004_integration_output_validation/system_structure.png differ