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. + +System Structure + +## 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 @@ + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + +