From 282c6aa55bb34742011a0bcde316c56881e68c5d Mon Sep 17 00:00:00 2001 From: Max SCHMELLER Date: Wed, 26 Jun 2024 19:58:14 +0900 Subject: [PATCH] feat(aeva): add launch and config files, fix cspell --- .cspell.json | 2 + .../config/lidar/aeva/Aeries2.param.yaml | 24 ++ nebula_ros/launch/aeva_launch_all_hw.xml | 10 + nebula_ros/schema/Aeries2.schema.json | 209 ++++++++++++++++++ nebula_ros/schema/sub/lidar_aeva.json | 13 ++ 5 files changed, 258 insertions(+) create mode 100644 nebula_ros/config/lidar/aeva/Aeries2.param.yaml create mode 100644 nebula_ros/launch/aeva_launch_all_hw.xml create mode 100644 nebula_ros/schema/Aeries2.schema.json create mode 100644 nebula_ros/schema/sub/lidar_aeva.json diff --git a/.cspell.json b/.cspell.json index 8c180631a..220faafcf 100644 --- a/.cspell.json +++ b/.cspell.json @@ -5,6 +5,7 @@ "words": [ "adctp", "Adctp", + "aeva", "applicate", "AT", "autosar", @@ -19,6 +20,7 @@ "gptp", "Helios", "Hesai", + "hfov", "horiz", "Idat", "ipaddr", diff --git a/nebula_ros/config/lidar/aeva/Aeries2.param.yaml b/nebula_ros/config/lidar/aeva/Aeries2.param.yaml new file mode 100644 index 000000000..33bcdd04f --- /dev/null +++ b/nebula_ros/config/lidar/aeva/Aeries2.param.yaml @@ -0,0 +1,24 @@ +/**: + ros__parameters: + sensor_ip: 192.168.2.201 + launch_hw: true + frame_id: aeva + sensor_model: Aeries2 + setup_sensor: true + diag_span: 1000 + dithering_enable_ego_speed: 40.0 + dithering_pattern_option: dithering_pattern_1 + ele_offset_rad: 0.0 + elevation_auto_adjustment: false + enable_frame_dithering: false + enable_frame_sync: true + flip_pattern_vertically: false + frame_sync_offset_in_ms: 999 + frame_sync_type: nearest_second + frame_synchronization_on_rising_edge: true + hfov_adjustment_deg: 0.0 + hfov_rotation_deg: 0.0 + highlight_ROI: false + horizontal_fov_degrees: 110Degrees + roi_az_offset_rad: 0.0 + vertical_pattern: 40-14.4-ROI diff --git a/nebula_ros/launch/aeva_launch_all_hw.xml b/nebula_ros/launch/aeva_launch_all_hw.xml new file mode 100644 index 000000000..20fcbbb7f --- /dev/null +++ b/nebula_ros/launch/aeva_launch_all_hw.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/nebula_ros/schema/Aeries2.schema.json b/nebula_ros/schema/Aeries2.schema.json new file mode 100644 index 000000000..f1b0b3d1a --- /dev/null +++ b/nebula_ros/schema/Aeries2.schema.json @@ -0,0 +1,209 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "LiDAR Aeva Aeries II parameters.", + "type": "object", + "definitions": { + "Aeries2": { + "type": "object", + "properties": { + "sensor_ip": { + "$ref": "sub/communication.json#/definitions/sensor_ip" + }, + "launch_hw": { + "$ref": "sub/hardware.json#/definitions/launch_hw" + }, + "frame_id": { + "$ref": "sub/topic.json#/definitions/frame_id" + }, + "sensor_model": { + "$ref": "sub/lidar_aeva.json#/definitions/sensor_model" + }, + "setup_sensor": { + "$ref": "sub/hardware.json#/definitions/setup_sensor" + }, + "diag_span": { + "$ref": "sub/topic.json#/definitions/diag_span" + }, + "dithering_enable_ego_speed": { + "type": "number", + "readOnly": false, + "description": "The ego speed in m/s from which pointcloud dithering (different patterns per frame) is enabled.", + "max": 200.0, + "min": 0.0, + "default": 40.0 + }, + "dithering_pattern_option": { + "type": "string", + "readOnly": false, + "description": "The dithering pattern to use if enabled.", + "enum": [ + "dithering_pattern_1", + "dithering_pattern_2" + ], + "default": "dithering_pattern_1" + }, + "ele_offset_rad": { + "type": "number", + "readOnly": false, + "description": "Elevation offset used to align ROI to ground level at a certain distance.", + "max": 0.35, + "min": -0.35, + "default": 0.0 + }, + "elevation_auto_adjustment": { + "type": "boolean", + "readOnly": false, + "description": "Adjusts elevation to a long-range setting when the car is going sufficiently fast.", + "default": false + }, + "enable_frame_dithering": { + "type": "boolean", + "readOnly": false, + "description": "Whether dithering is enabled.", + "default": false + }, + "enable_frame_sync": { + "type": "boolean", + "readOnly": false, + "description": "Whether to sync pointcloud frame output to a given sub-second offset.", + "default": true + }, + "flip_pattern_vertically": { + "type": "boolean", + "readOnly": false, + "description": "Whether to flip the scan pattern vertically.", + "default": false + }, + "frame_sync_offset_in_ms": { + "type": "integer", + "readOnly": false, + "description": "The sub-second offset to sync pointcloud frame starts to. 0 for top-of-second alignment. In practice, 999 achieves results closer to top-of-second", + "min": 0, + "max": 999, + "default": 999 + }, + "frame_sync_type": { + "type": "string", + "readOnly": false, + "description": "Whether to start sync at an absolute timestamp in the future, or from the nearest second.", + "enum": [ + "absolute_time", + "nearest_second" + ], + "default": "nearest_second" + }, + "frame_synchronization_on_rising_edge": { + "type": "boolean", + "readOnly": false, + "description": "Contact vendor for info.", + "default": true + }, + "hfov_adjustment_deg": { + "type": "number", + "readOnly": false, + "description": "The number of degrees to expend or shrink the horizontal field of view by.", + "max": 100.0, + "min": -100.0, + "default": 0.0 + }, + "hfov_rotation_deg": { + "type": "number", + "readOnly": false, + "description": "Number of degrees to shift the horizontal field of view to the left (-) or right (+).", + "max": 100.0, + "min": -100.0, + "default": 0.0 + }, + "highlight_ROI": { + "type": "boolean", + "readOnly": false, + "description": "A debug option to visually highlight points in the configured region of interest.", + "default": false + }, + "horizontal_fov_degrees": { + "type": "string", + "readOnly": false, + "description": "The horizontal field of view of the sensor. Larger FoVs use more power.", + "enum": [ + "110Degrees", + "120Degrees" + ], + "default": "110Degrees" + }, + "roi_az_offset_rad": { + "type": "number", + "readOnly": false, + "description": "Shift the ROI (if configured) to the left (-) or right (+).", + "max": 0.2094, + "min": -0.2094, + "default": 0.0 + }, + "vertical_pattern": { + "type": "string", + "readOnly": false, + "description": "The scan pattern to use. Refer to the user manual for details.", + "enum": [ + "40-12-ROI-1m", + "40-14.4-ROI", + "40-14.4-ROI-1m", + "40-14.4-ROI-EGL", + "40-28.8-ROI", + "64-14.4-ROI-1m", + "64-16-ROI", + "64-16-ROI-1m", + "64-19.2-ROI-1m", + "64-19.2-ROI-2-EGL", + "64-28.8-ROI", + "80-19.2-Uniform", + "80-24-ROI-2", + "cal_192_384-19.2-Uniform-5f" + ], + "default": "40-14.4-ROI" + } + }, + "required": [ + "sensor_ip", + "launch_hw", + "frame_id", + "sensor_model", + "setup_sensor", + "diag_span", + "dithering_enable_ego_speed", + "dithering_pattern_option", + "ele_offset_rad", + "elevation_auto_adjustment", + "enable_frame_dithering", + "enable_frame_sync", + "flip_pattern_vertically", + "frame_sync_offset_in_ms", + "frame_sync_type", + "frame_synchronization_on_rising_edge", + "hfov_adjustment_deg", + "hfov_rotation_deg", + "highlight_ROI", + "horizontal_fov_degrees", + "roi_az_offset_rad", + "vertical_pattern" + ], + "additionalProperties": false + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/Aeries2" + } + }, + "required": [ + "ros__parameters" + ], + "additionalProperties": false + } + }, + "required": [ + "/**" + ], + "additionalProperties": false +} diff --git a/nebula_ros/schema/sub/lidar_aeva.json b/nebula_ros/schema/sub/lidar_aeva.json new file mode 100644 index 000000000..96458e843 --- /dev/null +++ b/nebula_ros/schema/sub/lidar_aeva.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Lidar Aeva parameters.", + "type": "object", + "definitions": { + "sensor_model": { + "$ref": "hardware.json#/definitions/sensor_model", + "enum": [ + "Aeries2" + ] + } + } +}