From 4eb33785b04f832c78b096ba0ff461c224b836d6 Mon Sep 17 00:00:00 2001 From: Yoshi Ri Date: Mon, 13 May 2024 21:18:56 +0900 Subject: [PATCH 01/17] feat(update): update lidar pointcloud interface and concatenate pointcloud filter (#215) * feat: update common nebula container Signed-off-by: yoshiri * feat: fix xx1 pointcloud preprocessor launch Signed-off-by: yoshiri * feat: update x1 launcher to use new interface Signed-off-by: yoshiri * feat: update x2 launcher Signed-off-by: yoshiri * Update aip_x2_launch/launch/pandar_node_container.launch.py Co-authored-by: badai nguyen <94814556+badai-nguyen@users.noreply.github.com> * fix: fix x2 topics disconnection Signed-off-by: yoshiri --------- Signed-off-by: yoshiri Co-authored-by: badai nguyen <94814556+badai-nguyen@users.noreply.github.com> --- .../launch/new_livox_horizon.launch.py | 4 ++-- .../launch/pointcloud_preprocessor.launch.py | 9 +++++---- .../launch/velodyne_node_container.launch.py | 11 ++++++++++- .../launch/pandar_node_container.launch.py | 13 +++++++++++-- .../launch/pointcloud_preprocessor.launch.py | 17 +++++++++-------- .../launch/pointcloud_preprocessor.launch.py | 9 +++++---- .../launch/nebula_node_container.launch.py | 11 ++++++++++- 7 files changed, 52 insertions(+), 22 deletions(-) diff --git a/aip_x1_launch/launch/new_livox_horizon.launch.py b/aip_x1_launch/launch/new_livox_horizon.launch.py index de3f8b9a..922d23ba 100644 --- a/aip_x1_launch/launch/new_livox_horizon.launch.py +++ b/aip_x1_launch/launch/new_livox_horizon.launch.py @@ -52,12 +52,12 @@ def get_crop_box_min_range_component(context, livox_frame_id): name="crop_box_filter_min_range", remappings=[ ("input", "livox/tag_filtered/lidar" if use_tag_filter else "livox/lidar"), - ("output", "min_range_cropped/pointcloud"), + ("output", "min_range_cropped/pointcloud_before_sync"), ], parameters=[ { "input_frame": livox_frame_id, - "output_frame": LaunchConfiguration("base_frame"), + "output_frame": LaunchConfiguration("frame_id"), "min_x": 0.0, "max_x": LaunchConfiguration("min_range"), "min_y": -2.0, diff --git a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py index ff012c8a..8d799261 100644 --- a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py @@ -36,14 +36,15 @@ def launch_setup(context, *args, **kwargs): parameters=[ { "input_topics": [ - "/sensing/lidar/top/pointcloud", - "/sensing/lidar/front_left/min_range_cropped/pointcloud", - "/sensing/lidar/front_right/min_range_cropped/pointcloud", - "/sensing/lidar/front_center/min_range_cropped/pointcloud", + "/sensing/lidar/top/pointcloud_before_sync", + "/sensing/lidar/front_left/min_range_cropped/pointcloud_before_sync", + "/sensing/lidar/front_right/min_range_cropped/pointcloud_before_sync", + "/sensing/lidar/front_center/min_range_cropped/pointcloud_before_sync", ], "output_frame": LaunchConfiguration("base_frame"), "timeout_sec": 1.0, "input_twist_topic_type": "twist", + "publish_synchronized_pointcloud": True, } ], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], diff --git a/aip_x1_launch/launch/velodyne_node_container.launch.py b/aip_x1_launch/launch/velodyne_node_container.launch.py index 56b35116..2ce274b1 100644 --- a/aip_x1_launch/launch/velodyne_node_container.launch.py +++ b/aip_x1_launch/launch/velodyne_node_container.launch.py @@ -121,6 +121,13 @@ def create_parameter_dict(*args): ) ) + # Ring Outlier Filter is the last component in the pipeline, so control the output frame here + if LaunchConfiguration("output_as_sensor_frame").perform(context): + ring_outlier_filter_parameters = {"output_frame": LaunchConfiguration("frame_id")} + else: + ring_outlier_filter_parameters = { + "output_frame": "" + } # keep the output frame as the input frame nodes.append( ComposableNode( package="pointcloud_preprocessor", @@ -128,8 +135,9 @@ def create_parameter_dict(*args): name="ring_outlier_filter", remappings=[ ("input", "rectified/pointcloud_ex"), - ("output", "pointcloud"), + ("output", "pointcloud_before_sync"), ], + parameters=[ring_outlier_filter_parameters], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) ) @@ -218,6 +226,7 @@ def add_launch_arg(name: str, default_value=None, description=None): ) add_launch_arg("use_multithread", "False", "use multithread") add_launch_arg("use_intra_process", "False", "use ROS2 component container communication") + add_launch_arg("output_as_sensor_frame", "True", "output final pointcloud in sensor frame") set_container_executable = SetLaunchConfiguration( "container_executable", diff --git a/aip_x2_launch/launch/pandar_node_container.launch.py b/aip_x2_launch/launch/pandar_node_container.launch.py index ee0291d5..b950761e 100644 --- a/aip_x2_launch/launch/pandar_node_container.launch.py +++ b/aip_x2_launch/launch/pandar_node_container.launch.py @@ -206,14 +206,22 @@ def create_parameter_dict(*args): extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) + # Ring Outlier Filter is the last component in the pipeline, so control the output frame here + if LaunchConfiguration("output_as_sensor_frame").perform(context): + ring_outlier_filter_parameters = {"output_frame": LaunchConfiguration("frame_id")} + else: + ring_outlier_filter_parameters = { + "output_frame": "" + } # keep the output frame as the input frame ring_outlier_filter_component = ComposableNode( package="pointcloud_preprocessor", plugin="pointcloud_preprocessor::RingOutlierFilterComponent", name="ring_outlier_filter", remappings=[ ("input", "rectified/pointcloud_ex"), - ("output", "pointcloud"), + ("output", "pointcloud_before_sync"), ], + parameters=[ring_outlier_filter_parameters], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) @@ -223,7 +231,7 @@ def create_parameter_dict(*args): name="dual_return_filter", remappings=[ ("input", "rectified/pointcloud_ex"), - ("output", "pointcloud"), + ("output", "pointcloud_before_sync"), ], parameters=[ { @@ -344,6 +352,7 @@ def add_launch_arg(name: str, default_value=None): add_launch_arg("min_azimuth_deg", "135.0") add_launch_arg("max_azimuth_deg", "225.0") add_launch_arg("enable_blockage_diag", "true") + add_launch_arg("output_as_sensor_frame", "True") set_container_executable = SetLaunchConfiguration( "container_executable", "component_container", diff --git a/aip_x2_launch/launch/pointcloud_preprocessor.launch.py b/aip_x2_launch/launch/pointcloud_preprocessor.launch.py index 6d435dee..3c0a09d8 100644 --- a/aip_x2_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x2_launch/launch/pointcloud_preprocessor.launch.py @@ -37,19 +37,20 @@ def launch_setup(context, *args, **kwargs): parameters=[ { "input_topics": [ - "/sensing/lidar/front_upper/pointcloud", - "/sensing/lidar/front_lower/pointcloud", - "/sensing/lidar/left_upper/pointcloud", - "/sensing/lidar/left_lower/pointcloud", - "/sensing/lidar/right_upper/pointcloud", - "/sensing/lidar/right_lower/pointcloud", - "/sensing/lidar/rear_upper/pointcloud", - "/sensing/lidar/rear_lower/pointcloud", + "/sensing/lidar/front_upper/pointcloud_before_sync", + "/sensing/lidar/front_lower/pointcloud_before_sync", + "/sensing/lidar/left_upper/pointcloud_before_sync", + "/sensing/lidar/left_lower/pointcloud_before_sync", + "/sensing/lidar/right_upper/pointcloud_before_sync", + "/sensing/lidar/right_lower/pointcloud_before_sync", + "/sensing/lidar/rear_upper/pointcloud_before_sync", + "/sensing/lidar/rear_lower/pointcloud_before_sync", ], "input_offset": [0.025, 0.025, 0.01, 0.0, 0.05, 0.05, 0.05, 0.05], "timeout_sec": 0.075, "output_frame": LaunchConfiguration("base_frame"), "input_twist_topic_type": "twist", + "publish_synchronized_pointcloud": True, } ], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], diff --git a/aip_xx1_launch/launch/pointcloud_preprocessor.launch.py b/aip_xx1_launch/launch/pointcloud_preprocessor.launch.py index 10542a54..726171f9 100644 --- a/aip_xx1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_xx1_launch/launch/pointcloud_preprocessor.launch.py @@ -37,10 +37,10 @@ def launch_setup(context, *args, **kwargs): parameters=[ { "input_topics": [ - "/sensing/lidar/top/pointcloud", - "/sensing/lidar/left/pointcloud", - "/sensing/lidar/right/pointcloud", - "/sensing/lidar/rear/pointcloud", + "/sensing/lidar/top/pointcloud_before_sync", + "/sensing/lidar/left/pointcloud_before_sync", + "/sensing/lidar/right/pointcloud_before_sync", + "/sensing/lidar/rear/pointcloud_before_sync", ], "output_frame": LaunchConfiguration("base_frame"), "input_offset": [ @@ -51,6 +51,7 @@ def launch_setup(context, *args, **kwargs): ], # each sensor will wait 60, 70, 70, 70ms "timeout_sec": 0.095, # set shorter than 100ms "input_twist_topic_type": "twist", + "publish_synchronized_pointcloud": True, } ], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], diff --git a/common_sensor_launch/launch/nebula_node_container.launch.py b/common_sensor_launch/launch/nebula_node_container.launch.py index eb59ab5d..c3339e0c 100644 --- a/common_sensor_launch/launch/nebula_node_container.launch.py +++ b/common_sensor_launch/launch/nebula_node_container.launch.py @@ -186,6 +186,13 @@ def create_parameter_dict(*args): ) ) + # Ring Outlier Filter is the last component in the pipeline, so control the output frame here + if LaunchConfiguration("output_as_sensor_frame").perform(context): + ring_outlier_filter_parameters = {"output_frame": LaunchConfiguration("frame_id")} + else: + ring_outlier_filter_parameters = { + "output_frame": "" + } # keep the output frame as the input frame nodes.append( ComposableNode( package="pointcloud_preprocessor", @@ -193,8 +200,9 @@ def create_parameter_dict(*args): name="ring_outlier_filter", remappings=[ ("input", "rectified/pointcloud_ex"), - ("output", "pointcloud"), + ("output", "pointcloud_before_sync"), ], + parameters=[ring_outlier_filter_parameters], extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) ) @@ -311,6 +319,7 @@ def add_launch_arg(name: str, default_value=None, description=None): add_launch_arg("use_multithread", "False", "use multithread") add_launch_arg("use_intra_process", "False", "use ROS 2 component container communication") add_launch_arg("container_name", "nebula_node_container") + add_launch_arg("output_as_sensor_frame", "True", "output final pointcloud in sensor frame") add_launch_arg("enable_blockage_diag", "true") add_launch_arg("horizontal_ring_id", "64") From d1d423d1869acb5d81532fc89969d337c2eac499 Mon Sep 17 00:00:00 2001 From: Yukihiro Saito Date: Thu, 20 Jun 2024 16:10:09 +0900 Subject: [PATCH 02/17] feat(aip_xx1_description): update for xx1 gen2 (#210) * update for xx1 gen2 Signed-off-by: Yukihiro Saito * set network configs Signed-off-by: Yuki Takagi * use angle param add OT128 launch Signed-off-by: Yuki Takagi * set lidar horizontal FOV angle Signed-off-by: Yuki Takagi * update settings Signed-off-by: Yuki Takagi * update Signed-off-by: Yuki Takagi * add OT128 launch Signed-off-by: Yuki Takagi * add ptp param Signed-off-by: yuki.takagi@car_8 * complete to write lidar settings Signed-off-by: yuki.takagi@car_8 * ci(pre-commit): autofix * chore: generalized radar names Signed-off-by: Kenzo Lobos-Tsunekawa * feat(aip_xx1_description): update side lidar name Signed-off-by: yuki.takagi@car_8 * feat(aip_xx1_launch): enable imu in adm ecus Signed-off-by: yuki.takagi@car_8 * change concate lidars * update for xx1 gen2 * rotate top lidar 180 * change imu_corrector param aip_x2 -> aip_xx1 * enable gnss * fix wrong urdf model for OT128 * fix bug Signed-off-by: Yukihiro Saito * change max_range * feat: added the radars to the aip launcher and description Signed-off-by: j4tfwm6z * add nebula argments * fix: fixed naming and enabled the radars Signed-off-by: Kenzo Lobos-Tsunekawa * fix pointcloud preprocess for multi_lidar_ogm * feat: enable radar launch and concatenation for all lidars Signed-off-by: j4tfwm6z * fix(hesai_xt32): update ptp_transport_type from l2 to udp for xt32 Signed-off-by: j4tfwm6z * feat: added an option to select the frame of the radar objects Signed-off-by: Kenzo Lobos-Tsunekawa * feat: add ptp_switch_type to support latest nebula at 2024/03/15 (#222) Signed-off-by: j4tfwm6z Co-authored-by: j4tfwm6z * feat: add radar feature Signed-off-by: yoshiri * fix: revert commenting out of radar.launch.xml Signed-off-by: kminoda * add new folders Signed-off-by: Yuxuan Liu * ci(pre-commit): autofix * add folders for description Signed-off-by: Yuxuan Liu * ci(pre-commit): autofix * fix Spell-check Signed-off-by: Yuxuan Liu * fix package name Signed-off-by: Yuxuan Liu * fix: recover radar.xacro to make gen1 operational Signed-off-by: N-Eiki * ci(pre-commit): autofix * update aip_xx1 for gen2 Signed-off-by: N-Eiki * fix: packages name is aip_xx1_gen2_* but in these files written as aip_xx1_* Signed-off-by: N-Eiki --------- Signed-off-by: Yukihiro Saito Signed-off-by: Yuki Takagi Signed-off-by: yuki.takagi@car_8 Signed-off-by: Kenzo Lobos-Tsunekawa Signed-off-by: j4tfwm6z Signed-off-by: yoshiri Signed-off-by: kminoda Signed-off-by: Yuxuan Liu Signed-off-by: N-Eiki Co-authored-by: Yuki Takagi Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Kenzo Lobos-Tsunekawa Co-authored-by: j4tfwm6z Co-authored-by: kminoda <44218668+kminoda@users.noreply.github.com> Co-authored-by: yoshiri Co-authored-by: kminoda Co-authored-by: Yuxuan Liu Co-authored-by: Yuxuan Liu <619684051@qq.com> Co-authored-by: N-Eiki --- aip_xx1_gen2_description/CMakeLists.txt | 11 + .../config/sensor_kit_calibration.yaml | 113 ++++++++ .../config/sensors_calibration.yaml | 71 +++++ aip_xx1_gen2_description/package.xml | 17 ++ .../urdf/sensor_kit.xacro | 253 ++++++++++++++++++ aip_xx1_gen2_description/urdf/sensors.xacro | 121 +++++++++ aip_xx1_gen2_launch/CMakeLists.txt | 16 ++ .../sensor_kit.param.yaml | 118 ++++++++ .../sensor_kit.param.yaml | 30 +++ .../config/gyro_bias_estimator.param.yaml | 6 + aip_xx1_gen2_launch/config/lidar_gen2.yaml | 69 +++++ aip_xx1_gen2_launch/config/lidar_launch.yaml | 70 +++++ .../radar_simple_object_merger.param.yaml | 6 + .../data/traffic_light_camera.yaml | 20 ++ aip_xx1_gen2_launch/launch/camera.launch.xml | 19 ++ aip_xx1_gen2_launch/launch/gnss.launch.xml | 41 +++ aip_xx1_gen2_launch/launch/imu.launch.xml | 56 ++++ aip_xx1_gen2_launch/launch/lidar.launch.py | 188 +++++++++++++ aip_xx1_gen2_launch/launch/lidar.launch.xml | 125 +++++++++ .../launch/pointcloud_preprocessor.launch.py | 100 +++++++ aip_xx1_gen2_launch/launch/radar.launch.xml | 236 ++++++++++++++++ aip_xx1_gen2_launch/launch/sensing.launch.xml | 47 ++++ aip_xx1_gen2_launch/package.xml | 32 +++ .../launch/hesai_OT128.launch.xml | 41 +++ .../launch/hesai_XT32.launch.xml | 10 +- .../launch/nebula_node_container.launch.py | 45 ++++ 26 files changed, 1859 insertions(+), 2 deletions(-) create mode 100644 aip_xx1_gen2_description/CMakeLists.txt create mode 100644 aip_xx1_gen2_description/config/sensor_kit_calibration.yaml create mode 100644 aip_xx1_gen2_description/config/sensors_calibration.yaml create mode 100644 aip_xx1_gen2_description/package.xml create mode 100644 aip_xx1_gen2_description/urdf/sensor_kit.xacro create mode 100644 aip_xx1_gen2_description/urdf/sensors.xacro create mode 100644 aip_xx1_gen2_launch/CMakeLists.txt create mode 100644 aip_xx1_gen2_launch/config/diagnostic_aggregator/sensor_kit.param.yaml create mode 100644 aip_xx1_gen2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml create mode 100644 aip_xx1_gen2_launch/config/gyro_bias_estimator.param.yaml create mode 100644 aip_xx1_gen2_launch/config/lidar_gen2.yaml create mode 100644 aip_xx1_gen2_launch/config/lidar_launch.yaml create mode 100644 aip_xx1_gen2_launch/config/radar_simple_object_merger.param.yaml create mode 100644 aip_xx1_gen2_launch/data/traffic_light_camera.yaml create mode 100644 aip_xx1_gen2_launch/launch/camera.launch.xml create mode 100644 aip_xx1_gen2_launch/launch/gnss.launch.xml create mode 100644 aip_xx1_gen2_launch/launch/imu.launch.xml create mode 100644 aip_xx1_gen2_launch/launch/lidar.launch.py create mode 100644 aip_xx1_gen2_launch/launch/lidar.launch.xml create mode 100644 aip_xx1_gen2_launch/launch/pointcloud_preprocessor.launch.py create mode 100644 aip_xx1_gen2_launch/launch/radar.launch.xml create mode 100644 aip_xx1_gen2_launch/launch/sensing.launch.xml create mode 100644 aip_xx1_gen2_launch/package.xml create mode 100644 common_sensor_launch/launch/hesai_OT128.launch.xml diff --git a/aip_xx1_gen2_description/CMakeLists.txt b/aip_xx1_gen2_description/CMakeLists.txt new file mode 100644 index 00000000..549de0f8 --- /dev/null +++ b/aip_xx1_gen2_description/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.5) +project(aip_xx1_gen2_description) + +find_package(ament_cmake_auto REQUIRED) + +ament_auto_find_build_dependencies() + +ament_auto_package(INSTALL_TO_SHARE + urdf + config +) diff --git a/aip_xx1_gen2_description/config/sensor_kit_calibration.yaml b/aip_xx1_gen2_description/config/sensor_kit_calibration.yaml new file mode 100644 index 00000000..88288533 --- /dev/null +++ b/aip_xx1_gen2_description/config/sensor_kit_calibration.yaml @@ -0,0 +1,113 @@ +sensor_kit_base_link: + camera0/camera_link: + x: 0.372 # Design Value + y: 0.0 # Design Value + z: -0.207 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + camera1/camera_link: + x: 0.372 # Design Value + y: 0.045 # Design Value + z: -0.207 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + camera2/camera_link: + x: 0.372 # Design Value + y: -0.045 # Design Value + z: -0.207 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + camera3/camera_link: + x: 0.133 # Design Value + y: 0.498 # Design Value + z: -0.246 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.872665 # Design Value + camera4/camera_link: + x: 0.133 # Design Value + y: -0.498 # Design Value + z: -0.246 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -0.872665 # Design Value + camera5/camera_link: + x: 0.095 # Design Value + y: 0.524 # Design Value + z: -0.246 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 1.0472 # Design Value + camera6/camera_link: + x: 0.095 # Design Value + y: -0.524 # Design Value + z: -0.246 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -1.0472 # Design Value + camera7/camera_link: + x: -0.345 # Design Value + y: 0.244 # Design Value + z: -0.174 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 2.70526 # Design Value + camera8/camera_link: + x: -0.345 # Design Value + y: -0.244 # Design Value + z: -0.174 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -2.70526 # Design Value + camera9/camera_link: + x: -0.362 # Design Value + y: 0.202 # Design Value + z: -0.174 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 2.79253 # Design Value + camera10/camera_link: + x: -0.362 # Design Value + y: -0.202 # Design Value + z: -0.174 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -2.79253 # Design Value + hesai_top_base_link: + x: 0.0 # Design Value + y: 0.0 # Design Value + z: 0.0 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 4.36332298038 # Design Value + hesai_left_base_link: + x: 0.0 # Design Value + y: 0.564 # Design Value + z: -0.300 # Design Value + roll: 0.872665 # Design Value + pitch: 0.0 # Design Value + yaw: 3.14159265359 # Design Value + hesai_right_base_link: + x: 0.0 # Design Value + y: -0.564 # Design Value + z: -0.300 # Design Value + roll: 0.69813132679 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + gnss_link: + x: -0.279 # Design Value + y: 0.0 # Design Value + z: -0.160 # Design Value + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + tamagawa/imu_link: + x: -0.129 # Design Value + y: 0.0 # Design Value + z: -0.160 # Design Value + roll: 3.14159265359 + pitch: 0.0 # Design Value + yaw: 3.14159265359 # Design Value diff --git a/aip_xx1_gen2_description/config/sensors_calibration.yaml b/aip_xx1_gen2_description/config/sensors_calibration.yaml new file mode 100644 index 00000000..a57d3ea9 --- /dev/null +++ b/aip_xx1_gen2_description/config/sensors_calibration.yaml @@ -0,0 +1,71 @@ +base_link: + sensor_kit_base_link: + x: 0.9 + y: 0.0 + z: 2.0 + roll: 0.0 + pitch: 0.0 + yaw: 0.0 + hesai_front_left_base_link: + x: 3.373 # Design Value + y: 0.740 # Design Value + z: 0.5482 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 2.44346132679 # Design Value + hesai_front_right_base_link: + x: 3.373 # Design Value + y: -0.740 # Design Value + z: 0.5482 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.69813132679 # Design Value + # velodyne_rear_base_link: #unused + # x: -0.358 + # y: 0.0 + # z: 1.631 + # roll: -0.02 + # pitch: 0.7281317 + # yaw: 3.141592 + front_center/radar_link: + x: 3.520 # Design Value + y: 0.0 # Design Value + z: 0.6352 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 0.0 # Design Value + front_right/radar_link: + x: 3.384 # Design Value + y: -0.7775 # Design Value + z: 0.410 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -1.22173 # Design Value + front_left/radar_link: + x: 3.384 # Design Value + y: 0.7775 # Design Value + z: 0.410 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 1.22173 # Design Value + rear_center/radar_link: + x: -0.858 # Design Value + y: 0.0 # Design Value + z: 0.520 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 3.141592 # Design Value + rear_right/radar_link: + x: -0.782 # Design Value + y: -0.761 # Design Value + z: 0.520 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: -2.0944 # Design Value + rear_left/radar_link: + x: -0.782 # Design Value + y: 0.761 # Design Value + z: 0.520 + roll: 0.0 # Design Value + pitch: 0.0 # Design Value + yaw: 2.0944 # Design Value diff --git a/aip_xx1_gen2_description/package.xml b/aip_xx1_gen2_description/package.xml new file mode 100644 index 00000000..9b010d72 --- /dev/null +++ b/aip_xx1_gen2_description/package.xml @@ -0,0 +1,17 @@ + + + aip_xx1_gen2_description + 0.1.0 + The aip_xx1_gen2_description package + + Yukihiro Saito + Apache 2 + + ament_cmake_auto + + velodyne_description + + + ament_cmake + + diff --git a/aip_xx1_gen2_description/urdf/sensor_kit.xacro b/aip_xx1_gen2_description/urdf/sensor_kit.xacro new file mode 100644 index 00000000..137b3589 --- /dev/null +++ b/aip_xx1_gen2_description/urdf/sensor_kit.xacro @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_description/urdf/sensors.xacro b/aip_xx1_gen2_description/urdf/sensors.xacro new file mode 100644 index 00000000..81faabe8 --- /dev/null +++ b/aip_xx1_gen2_description/urdf/sensors.xacro @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/CMakeLists.txt b/aip_xx1_gen2_launch/CMakeLists.txt new file mode 100644 index 00000000..7f8d9f60 --- /dev/null +++ b/aip_xx1_gen2_launch/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.5) +project(aip_xx1_gen2_launch) + +find_package(ament_cmake_auto REQUIRED) +ament_auto_find_build_dependencies() + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + ament_lint_auto_find_test_dependencies() +endif() + +ament_auto_package(INSTALL_TO_SHARE + launch + data + config +) diff --git a/aip_xx1_gen2_launch/config/diagnostic_aggregator/sensor_kit.param.yaml b/aip_xx1_gen2_launch/config/diagnostic_aggregator/sensor_kit.param.yaml new file mode 100644 index 00000000..56fc9dbd --- /dev/null +++ b/aip_xx1_gen2_launch/config/diagnostic_aggregator/sensor_kit.param.yaml @@ -0,0 +1,118 @@ +/**: + ros__parameters: + sensing: + type: diagnostic_aggregator/AnalyzerGroup + path: sensing + analyzers: + node_alive_monitoring: + type: diagnostic_aggregator/AnalyzerGroup + path: node_alive_monitoring + analyzers: + topic_status: + type: diagnostic_aggregator/GenericAnalyzer + path: topic_status + contains: [": sensing_topic_status"] + timeout: 1.0 + + lidar: + type: diagnostic_aggregator/AnalyzerGroup + path: lidar + analyzers: + performance_monitoring: + type: diagnostic_aggregator/AnalyzerGroup + path: performance_monitoring + analyzers: + blockage: + type: diagnostic_aggregator/GenericAnalyzer + path: blockage + contains: [": blockage_validation"] + timeout: 1.0 + velodyne: + type: diagnostic_aggregator/AnalyzerGroup + path: velodyne + analyzers: + health_monitoring: + type: diagnostic_aggregator/AnalyzerGroup + path: health_monitoring + analyzers: + connection: + type: diagnostic_aggregator/GenericAnalyzer + path: connection + contains: [": velodyne_connection"] + timeout: 3.0 + + temperature: + type: diagnostic_aggregator/GenericAnalyzer + path: temperature + contains: [": velodyne_temperature"] + timeout: 3.0 + + rpm: + type: diagnostic_aggregator/GenericAnalyzer + path: rpm + contains: [": velodyne_rpm"] + timeout: 3.0 + + gnss: + type: diagnostic_aggregator/AnalyzerGroup + path: gnss + analyzers: + health_monitoring: + type: diagnostic_aggregator/AnalyzerGroup + path: health_monitoring + analyzers: + connection: + type: diagnostic_aggregator/GenericAnalyzer + path: connection + contains: [": gnss_connection"] + timeout: 3.0 + + data: + type: diagnostic_aggregator/GenericAnalyzer + path: data + contains: [": gnss_data"] + timeout: 3.0 + + antenna: + type: diagnostic_aggregator/GenericAnalyzer + path: antenna + contains: [": gnss_antenna"] + timeout: 3.0 + + tx_usage: + type: diagnostic_aggregator/GenericAnalyzer + path: tx_usage + contains: [": gnss_tx_usage"] + timeout: 3.0 + + spoofing: + type: diagnostic_aggregator/GenericAnalyzer + path: spoofing + contains: [": gnss_spoofing"] + timeout: 3.0 + + jamming: + type: diagnostic_aggregator/GenericAnalyzer + path: jamming + contains: [": gnss_jamming"] + timeout: 3.0 + + fix_topic_status: + type: diagnostic_aggregator/GenericAnalyzer + path: fix_topic_status + contains: [": fix topic status"] + timeout: 3.0 + + imu: + type: diagnostic_aggregator/AnalyzerGroup + path: imu + analyzers: + bias_monitoring: + type: diagnostic_aggregator/AnalyzerGroup + path: bias_monitoring + analyzers: + gyro_bias_validator: + type: diagnostic_aggregator/GenericAnalyzer + path: gyro_bias_validator + contains: [": gyro_bias_validator"] + timeout: 1.0 diff --git a/aip_xx1_gen2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml b/aip_xx1_gen2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml new file mode 100644 index 00000000..80cc7944 --- /dev/null +++ b/aip_xx1_gen2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml @@ -0,0 +1,30 @@ +# Description: +# name: diag name +# is_active: Force update or not +# status: diag status set by dummy diag publisher "OK, Warn, Error, Stale" +# +# Note: +# +# default values are: +# is_active: "true" +# status: "OK" +--- +/**: + ros__parameters: + required_diags: + # gnss + gnss_connection: default + gnss_data: default + gnss_antenna: default + gnss_tx_usage: default + gnss_spoofing: default + gnss_jamming: default + fix topic status: default + + # velodyne + velodyne_connection: default + velodyne_temperature: default + velodyne_rpm: default + + # imu + gyro_bias_estimator: default diff --git a/aip_xx1_gen2_launch/config/gyro_bias_estimator.param.yaml b/aip_xx1_gen2_launch/config/gyro_bias_estimator.param.yaml new file mode 100644 index 00000000..d552569f --- /dev/null +++ b/aip_xx1_gen2_launch/config/gyro_bias_estimator.param.yaml @@ -0,0 +1,6 @@ +/**: + ros__parameters: + gyro_bias_threshold: 0.008 # [rad/s] + timer_callback_interval_sec: 0.5 # [sec] + diagnostics_updater_interval_sec: 0.5 # [sec] + straight_motion_ang_vel_upper_limit: 0.015 # [rad/s] diff --git a/aip_xx1_gen2_launch/config/lidar_gen2.yaml b/aip_xx1_gen2_launch/config/lidar_gen2.yaml new file mode 100644 index 00000000..fcfefdd4 --- /dev/null +++ b/aip_xx1_gen2_launch/config/lidar_gen2.yaml @@ -0,0 +1,69 @@ +launches: + - sensor_type: hesai_OT128 + namespace: top + parameters: + max_range: 300.0 + sensor_frame: hesai_top + sensor_ip: 192.168.1.201 + data_port: 2368 + scan_phase: 160 + vertical_bins: 128 + - sensor_type: hesai_XT32 + namespace: front_left + parameters: + max_range: 300.0 + sensor_frame: hesai_front_left + sensor_ip: 192.168.1.21 + data_port: 2369 + scan_phase: 50.0 + cloud_min_angle: 50 + cloud_max_angle: 320 + vertical_bins: 16 + horizontal_ring_id: 0 + - sensor_type: hesai_XT32 + namespace: front_right + parameters: + max_range: 300.0 + sensor_frame: hesai_front_right + sensor_ip: 192.168.1.22 + data_port: 2370 + scan_phase: 310.0 + cloud_min_angle: 40 + cloud_max_angle: 310 + - sensor_type: hesai_XT32 + namespace: side_left + parameters: + max_range: 10.0 + sensor_frame: hesai_side_left + sensor_ip: 192.168.1.23 + data_port: 2371 + scan_phase: 90.0 + cloud_min_angle: 90 + cloud_max_angle: 270 + - sensor_type: hesai_XT32 + namespace: side_right + parameters: + max_range: 10.0 + sensor_frame: hesai_side_right + sensor_ip: 192.168.1.24 + data_port: 2372 + scan_phase: 270.0 + cloud_min_angle: 90 + cloud_max_angle: 270 + +preprocessor: + input_topics: + - /sensing/lidar/top/pointcloud_before_sync + - /sensing/lidar/side_left/pointcloud_before_sync + - /sensing/lidar/side_right/pointcloud_before_sync + - /sensing/lidar/front_left/pointcloud_before_sync + - /sensing/lidar/front_right/pointcloud_before_sync + input_offset: + - 0.035 + - 0.025 + - 0.025 + - 0.025 + - 0.025 + timeout_sec: 0.095 + input_twist_topic_type: twist + publish_synchronized_pointcloud: true diff --git a/aip_xx1_gen2_launch/config/lidar_launch.yaml b/aip_xx1_gen2_launch/config/lidar_launch.yaml new file mode 100644 index 00000000..c702f766 --- /dev/null +++ b/aip_xx1_gen2_launch/config/lidar_launch.yaml @@ -0,0 +1,70 @@ +launches: + - sensor_type: velodyne_VLS128 + namespace: top + parameters: + max_range: 250.0 + sensor_frame: velodyne_top + sensor_ip: 192.168.1.201 + data_port: 2368 + scan_phase: 300.0 + vertical_bins: 128 + horizontal_ring_id: 64 + horizontal_resolution: 0.4 + is_channel_order_top2down: false + - sensor_type: velodyne_VLP16 + namespace: left + parameters: + max_range: 5.0 + sensor_frame: velodyne_left + sensor_ip: 192.168.1.202 + data_port: 2369 + scan_phase: 180.0 + cloud_min_angle: 300 + cloud_max_angle: 60 + vertical_bins: 16 + horizontal_ring_id: 0 + horizontal_resolution: 0.4 + is_channel_order_top2down: false + - sensor_type: velodyne_VLP16 + namespace: right + parameters: + max_range: 5.0 + sensor_frame: velodyne_right + sensor_ip: 192.168.1.203 + data_port: 2370 + scan_phase: 180.0 + cloud_min_angle: 300 + cloud_max_angle: 60 + vertical_bins: 16 + horizontal_ring_id: 0 + horizontal_resolution: 0.4 + is_channel_order_top2down: false + - sensor_type: velodyne_VLP16 + namespace: rear + parameters: + max_range: 1.5 + sensor_frame: velodyne_rear + sensor_ip: 192.168.1.204 + data_port: 2371 + scan_phase: 180.0 + cloud_min_angle: 300 + cloud_max_angle: 60 + vertical_bins: 16 + horizontal_ring_id: 0 + horizontal_resolution: 0.4 + is_channel_order_top2down: false + +preprocessor: + input_topics: + - /sensing/lidar/top/pointcloud + - /sensing/lidar/left/pointcloud + - /sensing/lidar/right/pointcloud + - /sensing/lidar/rear/pointcloud + input_offset: + - 0.035 + - 0.025 + - 0.025 + - 0.025 + timeout_sec: 0.095 + input_twist_topic_type: twist + publish_synchronized_pointcloud: false diff --git a/aip_xx1_gen2_launch/config/radar_simple_object_merger.param.yaml b/aip_xx1_gen2_launch/config/radar_simple_object_merger.param.yaml new file mode 100644 index 00000000..a817e0b7 --- /dev/null +++ b/aip_xx1_gen2_launch/config/radar_simple_object_merger.param.yaml @@ -0,0 +1,6 @@ +/**: + ros__parameters: + update_rate_hz: 20.0 + new_frame_id: "base_link" + timeout_threshold: 1.0 + input_topics: ["/sensing/radar/front_center/detected_objects", "/sensing/radar/front_left/detected_objects", "/sensing/radar/rear_left/detected_objects", "/sensing/radar/rear_center/detected_objects", "/sensing/radar/rear_right/detected_objects", "/sensing/radar/front_right/detected_objects"] diff --git a/aip_xx1_gen2_launch/data/traffic_light_camera.yaml b/aip_xx1_gen2_launch/data/traffic_light_camera.yaml new file mode 100644 index 00000000..458ad17c --- /dev/null +++ b/aip_xx1_gen2_launch/data/traffic_light_camera.yaml @@ -0,0 +1,20 @@ +image_width: 1920 +image_height: 1080 +camera_name: traffic_light/camera +camera_matrix: + rows: 3 + cols: 3 + data: [2410.755261, 0.000000, 922.621401, 0.000000, 2403.573140, 534.752500, 0.000000, 0.000000, 1.000000] +distortion_model: plumb_bob +distortion_coefficients: + rows: 1 + cols: 5 + data: [-0.126600, 0.152594, 0.002432, -0.001244, 0.000000] +rectification_matrix: + rows: 3 + cols: 3 + data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000] +projection_matrix: + rows: 3 + cols: 4 + data: [2370.254883, 0.000000, 920.136018, 0.000000, 0.000000, 2388.885254, 535.599668, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000] diff --git a/aip_xx1_gen2_launch/launch/camera.launch.xml b/aip_xx1_gen2_launch/launch/camera.launch.xml new file mode 100644 index 00000000..041c70c8 --- /dev/null +++ b/aip_xx1_gen2_launch/launch/camera.launch.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/launch/gnss.launch.xml b/aip_xx1_gen2_launch/launch/gnss.launch.xml new file mode 100644 index 00000000..37ad6bde --- /dev/null +++ b/aip_xx1_gen2_launch/launch/gnss.launch.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/launch/imu.launch.xml b/aip_xx1_gen2_launch/launch/imu.launch.xml new file mode 100644 index 00000000..04011706 --- /dev/null +++ b/aip_xx1_gen2_launch/launch/imu.launch.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/launch/lidar.launch.py b/aip_xx1_gen2_launch/launch/lidar.launch.py new file mode 100644 index 00000000..7174fc9f --- /dev/null +++ b/aip_xx1_gen2_launch/launch/lidar.launch.py @@ -0,0 +1,188 @@ +# Copyright 2024 Tier IV, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from copy import deepcopy +import os +from typing import Any +from typing import List + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument +from launch.actions import GroupAction +from launch.actions import IncludeLaunchDescription +from launch.actions import OpaqueFunction +from launch.launch_description_sources import AnyLaunchDescriptionSource +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import EnvironmentVariable +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import PushRosNamespace +import yaml + + +def join_list_of_arguments(arguments: List[Any]) -> str: + """Join a list of arguments into a string, used by Include Launch Description. + + Example: + join_list_of_arguments([1,2,3]) -> "[1, 2, 3]" + """ + return f"[{', '.join([str(arg) for arg in arguments])}]" + + +def generate_launch_dictionary(): + path_dictionary = { + "hesai_OT128": AnyLaunchDescriptionSource( + os.path.join( + get_package_share_directory("common_sensor_launch"), + "launch", + "hesai_OT128.launch.xml", + ) + ), + "hesai_XT32": AnyLaunchDescriptionSource( + os.path.join( + get_package_share_directory("common_sensor_launch"), + "launch", + "hesai_XT32.launch.xml", + ) + ), + "velodyne_VLS128": AnyLaunchDescriptionSource( + os.path.join( + get_package_share_directory("common_sensor_launch"), + "launch", + "velodyne_VLS128.launch.xml", + ) + ), + "velodyne_VLP16": AnyLaunchDescriptionSource( + os.path.join( + get_package_share_directory("common_sensor_launch"), + "launch", + "velodyne_VLP16.launch.xml", + ) + ), + "livox_horizon": AnyLaunchDescriptionSource( + os.path.join( + get_package_share_directory("common_sensor_launch"), + "launch", + "livox_horizon.launch.py", + ) + ), + } + return path_dictionary + + +def load_sub_launches_from_yaml(context, *args, **kwargs): + def load_yaml(yaml_file_path): + with open(LaunchConfiguration(yaml_file_path).perform(context), "r") as f: + return yaml.safe_load(f) + + config = load_yaml("config_file") + + path_dictionary = generate_launch_dictionary() + + base_parameters = {} + base_parameters["host_ip"] = LaunchConfiguration("host_ip") + base_parameters["vehicle_mirror_param_file"] = LaunchConfiguration( + "vehicle_mirror_param_file" + ).perform(context) + base_parameters["launch_driver"] = LaunchConfiguration("launch_driver").perform(context) + base_parameters["vehicle_id"] = LaunchConfiguration("vehicle_id").perform(context) + base_parameters["pointcloud_container_name"] = LaunchConfiguration( + "pointcloud_container_name" + ).perform(context) + base_parameters["enable_blockage_diag"] = LaunchConfiguration("enable_blockage_diag").perform( + context + ) + + sub_launch_actions = [] + for launch in config["launches"]: + launch_parameters = deepcopy(base_parameters) + launch_parameters.update(launch["parameters"]) # dict + launch_parameter_list_tuple = [(str(k), str(v)) for k, v in launch_parameters.items()] + sub_launch_action = GroupAction( + [ + PushRosNamespace(launch["namespace"]), + IncludeLaunchDescription( + deepcopy(path_dictionary[launch["sensor_type"]]), + launch_arguments=launch_parameter_list_tuple, + ), + ] + ) + sub_launch_actions.append(sub_launch_action) + + processor_dict = config["preprocessor"] + sub_launch_actions.append( + IncludeLaunchDescription( + PythonLaunchDescriptionSource( + os.path.join( + get_package_share_directory("aip_xx1_gen2_launch"), + "launch", + "pointcloud_preprocessor.launch.py", + ) + ), + launch_arguments=[ + ("base_frame", "base_link"), + ("use_multithread", "true"), + ("use_intra_process", "true"), + ("use_pointcloud_container", LaunchConfiguration("use_pointcloud_container")), + ("pointcloud_container_name", LaunchConfiguration("pointcloud_container_name")), + ("input_topics", join_list_of_arguments(processor_dict["input_topics"])), + ("input_offset", join_list_of_arguments(processor_dict["input_offset"])), + ("timeout_sec", str(processor_dict["timeout_sec"])), + ("input_twist_topic_type", str(processor_dict["input_twist_topic_type"])), + ( + "publish_synchronized_pointcloud", + str(processor_dict["publish_synchronized_pointcloud"]), + ), + ], + ) + ) + return [ + GroupAction([PushRosNamespace("lidar"), *sub_launch_actions]), + ] + + +def generate_launch_description(): + # Define launch arguments + launch_arguments = [] + config_file_arg = DeclareLaunchArgument( + "config_file", + default_value=os.path.join( + get_package_share_directory("aip_xx1_gen2_launch"), "config", "lidar_launch.yaml" + ), + description="Path to the configuration file", + ) + launch_arguments.append(config_file_arg) + + def add_launch_arg(name: str, default_value=None, **kwargs): + launch_arguments.append(DeclareLaunchArgument(name, default_value=default_value, **kwargs)) + + add_launch_arg("launch_driver", "true") + add_launch_arg("host_ip", "192.168.1.10") + add_launch_arg("use_concat_filter", "true") + add_launch_arg( + "vehicle_id", + default_value=EnvironmentVariable("VEHICLE_ID", default_value="default"), + ) + add_launch_arg("vehicle_mirror_param_file") + add_launch_arg("use_pointcloud_container", "false", description="launch pointcloud container") + add_launch_arg("pointcloud_container_name", "pointcloud_container") + add_launch_arg("enable_blockage_diag", "false") + + # Create launch description with the config_file argument + ld = LaunchDescription(launch_arguments) + # Add sub-launch files dynamically based on the YAML configuration + ld.add_action(OpaqueFunction(function=load_sub_launches_from_yaml)) + + return ld diff --git a/aip_xx1_gen2_launch/launch/lidar.launch.xml b/aip_xx1_gen2_launch/launch/lidar.launch.xml new file mode 100644 index 00000000..4f4b37b7 --- /dev/null +++ b/aip_xx1_gen2_launch/launch/lidar.launch.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/launch/pointcloud_preprocessor.launch.py b/aip_xx1_gen2_launch/launch/pointcloud_preprocessor.launch.py new file mode 100644 index 00000000..433b7f58 --- /dev/null +++ b/aip_xx1_gen2_launch/launch/pointcloud_preprocessor.launch.py @@ -0,0 +1,100 @@ +# Copyright 2020 Tier IV, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import launch +from launch.actions import DeclareLaunchArgument +from launch.actions import OpaqueFunction +from launch.actions import SetLaunchConfiguration +from launch.conditions import IfCondition +from launch.conditions import UnlessCondition +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import LoadComposableNodes +from launch_ros.descriptions import ComposableNode + + +def launch_setup(context, *args, **kwargs): + # set concat filter as a component + concat_component = ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::PointCloudConcatenateDataSynchronizerComponent", + name="concatenate_data", + remappings=[ + ("~/input/twist", "/sensing/vehicle_velocity_converter/twist_with_covariance"), + ("output", "concatenated/pointcloud"), + ], + parameters=[ + { + "input_topics": LaunchConfiguration("input_topics"), + "output_frame": LaunchConfiguration("base_frame"), + "input_offset": LaunchConfiguration( + "input_offset" + ), # each sensor will wait 60, 70, 70, 70ms + "timeout_sec": LaunchConfiguration("timeout_sec"), # set shorter than 100ms + "input_twist_topic_type": LaunchConfiguration("input_twist_topic_type"), + "publish_synchronized_pointcloud": LaunchConfiguration( + "publish_synchronized_pointcloud" + ), + } + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + + # load concat or passthrough filter + concat_loader = LoadComposableNodes( + composable_node_descriptions=[concat_component], + target_container=LaunchConfiguration("pointcloud_container_name"), + condition=IfCondition(LaunchConfiguration("use_concat_filter")), + ) + + return [concat_loader] + + +def generate_launch_description(): + launch_arguments = [] + + def add_launch_arg(name: str, default_value=None): + launch_arguments.append(DeclareLaunchArgument(name, default_value=default_value)) + + add_launch_arg("base_frame", "base_link") + add_launch_arg("use_multithread", "False") + add_launch_arg("use_intra_process", "False") + add_launch_arg("pointcloud_container_name", "pointcloud_container") + add_launch_arg("individual_container_name", "concatenate_container") + add_launch_arg( + "input_topics", + "[/sensing/lidar/top/pointcloud, /sensing/lidar/left/pointcloud, /sensing/lidar/right/pointcloud, /sensing/lidar/rear/pointcloud]", + ) + add_launch_arg("input_offset", "[0.035, 0.025, 0.025, 0.025]") + add_launch_arg("timeout_sec", "0.095") + add_launch_arg("input_twist_topic_type", "twist") + add_launch_arg("publish_synchronized_pointcloud", "False") + + set_container_executable = SetLaunchConfiguration( + "container_executable", + "component_container", + condition=UnlessCondition(LaunchConfiguration("use_multithread")), + ) + + set_container_mt_executable = SetLaunchConfiguration( + "container_executable", + "component_container_mt", + condition=IfCondition(LaunchConfiguration("use_multithread")), + ) + + return launch.LaunchDescription( + launch_arguments + + [set_container_executable, set_container_mt_executable] + + [OpaqueFunction(function=launch_setup)] + ) diff --git a/aip_xx1_gen2_launch/launch/radar.launch.xml b/aip_xx1_gen2_launch/launch/radar.launch.xml new file mode 100644 index 00000000..7eb4dbcb --- /dev/null +++ b/aip_xx1_gen2_launch/launch/radar.launch.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/launch/sensing.launch.xml b/aip_xx1_gen2_launch/launch/sensing.launch.xml new file mode 100644 index 00000000..74f24c15 --- /dev/null +++ b/aip_xx1_gen2_launch/launch/sensing.launch.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aip_xx1_gen2_launch/package.xml b/aip_xx1_gen2_launch/package.xml new file mode 100644 index 00000000..8f2f9df9 --- /dev/null +++ b/aip_xx1_gen2_launch/package.xml @@ -0,0 +1,32 @@ + + + + aip_xx1_gen2_launch + 0.1.0 + The aip_xx1_gen2_launch package + + Hiroki OTA + Apache License 2.0 + + ament_cmake_auto + + common_sensor_launch + glog_component + gnss_poser + imu_corrector + pacmod3 + pointcloud_preprocessor + ros2_socketcan + tamagawa_imu_driver + topic_tools + ublox_gps + usb_cam + vehicle_velocity_converter + + ament_lint_auto + autoware_lint_common + + + ament_cmake + + diff --git a/common_sensor_launch/launch/hesai_OT128.launch.xml b/common_sensor_launch/launch/hesai_OT128.launch.xml new file mode 100644 index 00000000..7d4713fd --- /dev/null +++ b/common_sensor_launch/launch/hesai_OT128.launch.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common_sensor_launch/launch/hesai_XT32.launch.xml b/common_sensor_launch/launch/hesai_XT32.launch.xml index 56587f72..c6ea9b64 100644 --- a/common_sensor_launch/launch/hesai_XT32.launch.xml +++ b/common_sensor_launch/launch/hesai_XT32.launch.xml @@ -25,12 +25,18 @@ - - + + + + + + + + diff --git a/common_sensor_launch/launch/nebula_node_container.launch.py b/common_sensor_launch/launch/nebula_node_container.launch.py index c3339e0c..1990f695 100644 --- a/common_sensor_launch/launch/nebula_node_container.launch.py +++ b/common_sensor_launch/launch/nebula_node_container.launch.py @@ -113,6 +113,8 @@ def create_parameter_dict(*args): "cloud_min_angle", "cloud_max_angle", "dual_return_distance_threshold", + "setup_sensor", + "retry_hw", ), }, ], @@ -124,6 +126,36 @@ def create_parameter_dict(*args): ) ) + nodes.append( + ComposableNode( + package="nebula_ros", + plugin=sensor_make + "HwMonitorRosWrapper", + name=sensor_make.lower() + "_hw_monitor_ros_wrapper_node", + parameters=[ + { + "sensor_model": sensor_model, + **create_parameter_dict( + "return_mode", + "frame_id", + "scan_phase", + "sensor_ip", + "host_ip", + "data_port", + "gnss_port", + "packet_mtu_size", + "rotation_speed", + "cloud_min_angle", + "cloud_max_angle", + "diag_span", + "dual_return_distance_threshold", + "delay_monitor_ms", + ), + }, + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + cropbox_parameters = create_parameter_dict("input_frame", "output_frame") cropbox_parameters["negative"] = True @@ -240,6 +272,11 @@ def create_parameter_dict(*args): "packet_mtu_size", "dual_return_distance_threshold", "setup_sensor", + "ptp_profile", + "ptp_transport_type", + "ptp_switch_type", + "ptp_domain", + "retry_hw", ), } ], @@ -297,6 +334,7 @@ def add_launch_arg(name: str, default_value=None, description=None): add_launch_arg("config_file", "", description="sensor configuration file") add_launch_arg("launch_driver", "True", "do launch driver") add_launch_arg("setup_sensor", "True", "configure sensor") + add_launch_arg("retry_hw", "false", "retry hw") add_launch_arg("sensor_ip", "192.168.1.201", "device ip address") add_launch_arg("host_ip", "255.255.255.255", "host ip address") add_launch_arg("scan_phase", "0.0") @@ -319,6 +357,13 @@ def add_launch_arg(name: str, default_value=None, description=None): add_launch_arg("use_multithread", "False", "use multithread") add_launch_arg("use_intra_process", "False", "use ROS 2 component container communication") add_launch_arg("container_name", "nebula_node_container") + add_launch_arg("ptp_profile", "1588v2") + add_launch_arg("ptp_transport_type", "L2") + add_launch_arg("ptp_switch_type", "TSN") + add_launch_arg("ptp_domain", "0") + add_launch_arg("output_as_sensor_frame", "True", "output final pointcloud in sensor frame") + add_launch_arg("diag_span", "1000", "") + add_launch_arg("delay_monitor_ms", "2000", "") add_launch_arg("output_as_sensor_frame", "True", "output final pointcloud in sensor frame") add_launch_arg("enable_blockage_diag", "true") From 91204152bc8dcf4796d2df6f9e9ca8b6e522c867 Mon Sep 17 00:00:00 2001 From: 1222-takeshi Date: Mon, 8 Jul 2024 23:08:25 +0900 Subject: [PATCH 03/17] fix cancat lidar topics Signed-off-by: 1222-takeshi --- aip_x1_launch/launch/pointcloud_preprocessor.launch.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py index fc5bfd4a..b89904a5 100644 --- a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py @@ -37,9 +37,7 @@ def launch_setup(context, *args, **kwargs): { "input_topics": [ "/sensing/lidar/top/pointcloud_before_sync", - "/sensing/lidar/front_left/min_range_cropped/pointcloud_before_sync", - "/sensing/lidar/front_right/min_range_cropped/pointcloud_before_sync", - "/sensing/lidar/front_center/min_range_cropped/pointcloud_before_sync", + "/sensing/lidar/front_center/pointcloud_before_sync", ], "output_frame": LaunchConfiguration("base_frame"), "timeout_sec": 1.0, From c0ad3c469732e87a1042e6800dbf1a70eff1f8df Mon Sep 17 00:00:00 2001 From: kotaro-hihara Date: Tue, 9 Jul 2024 10:40:13 +0900 Subject: [PATCH 04/17] feat(x2_gen1_nebula): changed LiDAR driver to nebula (#252) * change lidar driver to nebula from hesai Signed-off-by: kotaro-hihara * Set scan_phase 10 deg behind ideal FOVend to prevent dust at the edge of FOV (left,front) Signed-off-by: kotaro-hihara * ci(pre-commit): autofix --------- Signed-off-by: kotaro-hihara Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- aip_x2_launch/launch/lidar.launch.xml | 325 +++++++++------ .../launch/nebula_node_container.launch.py | 380 ++++++++++++++++++ 2 files changed, 576 insertions(+), 129 deletions(-) create mode 100644 aip_x2_launch/launch/nebula_node_container.launch.py diff --git a/aip_x2_launch/launch/lidar.launch.xml b/aip_x2_launch/launch/lidar.launch.xml index 9ccf52af..c4297b05 100644 --- a/aip_x2_launch/launch/lidar.launch.xml +++ b/aip_x2_launch/launch/lidar.launch.xml @@ -4,207 +4,273 @@ + - + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + + - - + + - - - - - - - - + + + + + + + + + + + - - - - + + + + + + + + + + - + - - + + - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + - + - - + + - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + - + - - + + - - - + + + - - - - - - - - - + + + + + + + - + + + + + + + + + + - + - - + + - - - + + + - - - - - - - + + + + + + + - + + + + + + + + + + - + - - + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - + + - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + - + @@ -213,7 +279,8 @@ - + + diff --git a/aip_x2_launch/launch/nebula_node_container.launch.py b/aip_x2_launch/launch/nebula_node_container.launch.py new file mode 100644 index 00000000..53e7140e --- /dev/null +++ b/aip_x2_launch/launch/nebula_node_container.launch.py @@ -0,0 +1,380 @@ +# Copyright 2023 Tier IV, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +from ament_index_python.packages import get_package_share_directory +import launch +from launch.actions import DeclareLaunchArgument +from launch.actions import OpaqueFunction +from launch.actions import SetLaunchConfiguration +from launch.conditions import IfCondition +from launch.conditions import UnlessCondition +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import ComposableNodeContainer +from launch_ros.actions import LoadComposableNodes +from launch_ros.descriptions import ComposableNode +import yaml + + +def get_lidar_make(sensor_name): + if sensor_name[:6].lower() == "pandar": + return "Hesai", ".csv" + elif sensor_name[:3].lower() in ["hdl", "vlp", "vls"]: + return "Velodyne", ".yaml" + return "unrecognized_sensor_model" + + +def get_vehicle_info(context): + # TODO(TIER IV): Use Parameter Substitution after we drop Galactic support + # https://github.com/ros2/launch_ros/blob/master/launch_ros/launch_ros/substitutions/parameter.py + gp = context.launch_configurations.get("ros_params", {}) + if not gp: + gp = dict(context.launch_configurations.get("global_params", {})) + p = {} + p["vehicle_length"] = gp["front_overhang"] + gp["wheel_base"] + gp["rear_overhang"] + p["vehicle_width"] = gp["wheel_tread"] + gp["left_overhang"] + gp["right_overhang"] + p["min_longitudinal_offset"] = -gp["rear_overhang"] + p["max_longitudinal_offset"] = gp["front_overhang"] + gp["wheel_base"] + p["min_lateral_offset"] = -(gp["wheel_tread"] / 2.0 + gp["right_overhang"]) + p["max_lateral_offset"] = gp["wheel_tread"] / 2.0 + gp["left_overhang"] + p["min_height_offset"] = 0.0 + p["max_height_offset"] = gp["vehicle_height"] + return p + + +def get_vehicle_mirror_info(context): + path = LaunchConfiguration("vehicle_mirror_param_file").perform(context) + with open(path, "r") as f: + p = yaml.safe_load(f)["/**"]["ros__parameters"] + return p + + +def launch_setup(context, *args, **kwargs): + def load_composable_node_param(param_path): + with open(LaunchConfiguration(param_path).perform(context), "r") as f: + return yaml.safe_load(f)["/**"]["ros__parameters"] + + def create_parameter_dict(*args): + result = {} + for x in args: + result[x] = LaunchConfiguration(x) + return result + + # Model and make + sensor_model = LaunchConfiguration("sensor_model").perform(context) + sensor_make, sensor_extension = get_lidar_make(sensor_model) + nebula_decoders_share_dir = get_package_share_directory("nebula_decoders") + + # Calibration file + sensor_calib_fp = os.path.join( + nebula_decoders_share_dir, + "calibration", + sensor_make.lower(), + sensor_model + sensor_extension, + ) + assert os.path.exists( + sensor_calib_fp + ), "Sensor calib file under calibration/ was not found: {}".format(sensor_calib_fp) + + nodes = [] + + nodes.append( + ComposableNode( + package="glog_component", + plugin="GlogComponent", + name="glog_component", + ) + ) + + nodes.append( + ComposableNode( + package="nebula_ros", + plugin=sensor_make + "HwMonitorRosWrapper", + name=sensor_make.lower() + "_hardware_monitor_ros_wrapper_node", + parameters=[ + { + "sensor_model": LaunchConfiguration("sensor_model"), + "return_mode": LaunchConfiguration("return_mode"), + "frame_id": LaunchConfiguration("frame_id"), + "scan_phase": LaunchConfiguration("scan_phase"), + "sensor_ip": LaunchConfiguration("sensor_ip"), + "host_ip": LaunchConfiguration("host_ip"), + "data_port": LaunchConfiguration("data_port"), + "gnss_port": LaunchConfiguration("gnss_port"), + "packet_mtu_size": LaunchConfiguration("packet_mtu_size"), + "rotation_speed": LaunchConfiguration("rotation_speed"), + "cloud_min_angle": LaunchConfiguration("cloud_min_angle"), + "cloud_max_angle": LaunchConfiguration("cloud_max_angle"), + "diag_span": LaunchConfiguration("diag_span"), + "dual_return_distance_threshold": LaunchConfiguration( + "dual_return_distance_threshold" + ), + "delay_monitor_ms": LaunchConfiguration("delay_monitor_ms"), + }, + ], + condition=IfCondition(LaunchConfiguration("launch_driver")), + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + nodes.append( + ComposableNode( + package="nebula_ros", + plugin=sensor_make + "DriverRosWrapper", + name=sensor_make.lower() + "_driver_ros_wrapper_node", + parameters=[ + { + "calibration_file": sensor_calib_fp, + "sensor_model": sensor_model, + **create_parameter_dict( + "host_ip", + "sensor_ip", + "data_port", + "return_mode", + "min_range", + "max_range", + "frame_id", + "scan_phase", + "cloud_min_angle", + "cloud_max_angle", + "dual_return_distance_threshold", + "gnss_port", + "packet_mtu_size", + "setup_sensor", + "ptp_profile", + "ptp_transport_type", + "ptp_switch_type", + "ptp_domain", + ), + "launch_hw": True, + }, + ], + remappings=[ + ("aw_points", "pointcloud_raw"), + ("aw_points_ex", "pointcloud_raw_ex"), + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + cropbox_parameters = create_parameter_dict("input_frame", "output_frame") + cropbox_parameters["negative"] = True + + vehicle_info = get_vehicle_info(context) + cropbox_parameters["min_x"] = vehicle_info["min_longitudinal_offset"] + cropbox_parameters["max_x"] = vehicle_info["max_longitudinal_offset"] + cropbox_parameters["min_y"] = vehicle_info["min_lateral_offset"] + cropbox_parameters["max_y"] = vehicle_info["max_lateral_offset"] + cropbox_parameters["min_z"] = vehicle_info["min_height_offset"] + cropbox_parameters["max_z"] = vehicle_info["max_height_offset"] + + nodes.append( + ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::CropBoxFilterComponent", + name="crop_box_filter_self", + remappings=[ + ("input", "pointcloud_raw_ex"), + # ("output", "self_cropped_temp/pointcloud_ex"), + ("output", "self_cropped/pointcloud_ex"), + ], + parameters=[cropbox_parameters], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + mirror_info = load_composable_node_param("vehicle_mirror_param_file") + right = mirror_info["right"] + cropbox_parameters.update( + min_x=right["min_longitudinal_offset"], + max_x=right["max_longitudinal_offset"], + min_y=right["min_lateral_offset"], + max_y=right["max_lateral_offset"], + min_z=right["min_height_offset"], + max_z=right["max_height_offset"], + ) + + nodes.append( + ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::CropBoxFilterComponent", + name="crop_box_filter_mirror_right", + remappings=[ + ("input", "self_cropped/pointcloud_ex"), + ("output", "right_mirror_cropped/pointcloud_ex"), + ], + parameters=[cropbox_parameters], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + left = mirror_info["left"] + cropbox_parameters.update( + min_x=left["min_longitudinal_offset"], + max_x=left["max_longitudinal_offset"], + min_y=left["min_lateral_offset"], + max_y=left["max_lateral_offset"], + min_z=left["min_height_offset"], + max_z=left["max_height_offset"], + ) + + nodes.append( + ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::CropBoxFilterComponent", + name="crop_box_filter_mirror_left", + remappings=[ + ("input", "right_mirror_cropped/pointcloud_ex"), + ("output", "mirror_cropped/pointcloud_ex"), + ], + parameters=[cropbox_parameters], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + nodes.append( + ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::DistortionCorrectorComponent", + name="distortion_corrector_node", + remappings=[ + ("~/input/twist", "/sensing/vehicle_velocity_converter/twist_with_covariance"), + ("~/input/imu", "/sensing/imu/imu_data"), + ("~/input/pointcloud", "mirror_cropped/pointcloud_ex"), + ("~/output/pointcloud", "rectified/pointcloud_ex"), + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + nodes.append( + ComposableNode( + package="pointcloud_preprocessor", + plugin="pointcloud_preprocessor::RingOutlierFilterComponent", + name="ring_outlier_filter", + remappings=[ + ("input", "rectified/pointcloud_ex"), + ("output", "pointcloud_before_sync"), + ], + extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], + ) + ) + + # set container to run all required components in the same process + container = ComposableNodeContainer( + name=LaunchConfiguration("container_name"), + namespace="", + package="rclcpp_components", + executable="component_container_mt", + composable_node_descriptions=nodes, + output="both", + ) + + driver_component = ComposableNode( + package="nebula_ros", + plugin=sensor_make + "HwInterfaceRosWrapper", + # node is created in a global context, need to avoid name clash + name=sensor_make.lower() + "_hw_interface_ros_wrapper_node", + parameters=[ + { + "sensor_model": sensor_model, + "calibration_file": sensor_calib_fp, + **create_parameter_dict( + "sensor_ip", + "host_ip", + "scan_phase", + "return_mode", + "frame_id", + "rotation_speed", + "data_port", + "cloud_min_angle", + "cloud_max_angle", + "dual_return_distance_threshold", + "gnss_port", + "packet_mtu_size", + "setup_sensor", + "ptp_profile", + "ptp_transport_type", + "ptp_switch_type", + "ptp_domain", + ), + } + ], + ) + + driver_component_loader = LoadComposableNodes( + composable_node_descriptions=[driver_component], + target_container=container, + condition=IfCondition(LaunchConfiguration("launch_driver")), + ) + + return [container, driver_component_loader] + + +def generate_launch_description(): + launch_arguments = [] + + def add_launch_arg(name: str, default_value=None, description=None): + # a default_value of None is equivalent to not passing that kwarg at all + launch_arguments.append( + DeclareLaunchArgument(name, default_value=default_value, description=description) + ) + + add_launch_arg("sensor_model", description="sensor model name") + add_launch_arg("config_file", "", description="sensor configuration file") + add_launch_arg("launch_driver", "True", "do launch driver") + add_launch_arg("setup_sensor", "False", "configure sensor") + add_launch_arg("sensor_ip", "192.168.1.201", "device ip address") + add_launch_arg("host_ip", "255.255.255.255", "host ip address") + add_launch_arg("scan_phase", "0.0") + add_launch_arg("base_frame", "base_link", "base frame id") + add_launch_arg("min_range", "0.3", "minimum view range for Velodyne sensors") + add_launch_arg("max_range", "300.0", "maximum view range for Velodyne sensors") + add_launch_arg("cloud_min_angle", "0", "minimum view angle setting on device") + add_launch_arg("cloud_max_angle", "360", "maximum view angle setting on device") + add_launch_arg("data_port", "2368", "device data port number") + add_launch_arg("gnss_port", "2380", "device gnss port number") + add_launch_arg("packet_mtu_size", "1500", "packet mtu size") + add_launch_arg("rotation_speed", "600", "rotational frequency") + add_launch_arg("dual_return_distance_threshold", "0.1", "dual return distance threshold") + add_launch_arg("frame_id", "lidar", "frame id") + add_launch_arg("input_frame", LaunchConfiguration("base_frame"), "use for cropbox") + add_launch_arg("output_frame", LaunchConfiguration("base_frame"), "use for cropbox") + add_launch_arg( + "vehicle_mirror_param_file", description="path to the file of vehicle mirror position yaml" + ) + add_launch_arg("diag_span", "1000") + add_launch_arg("delay_monitor_ms", "2000") + add_launch_arg("use_multithread", "False", "use multithread") + add_launch_arg("use_intra_process", "False", "use ROS 2 component container communication") + add_launch_arg("container_name", "nebula_node_container") + + set_container_executable = SetLaunchConfiguration( + "container_executable", + "component_container", + condition=UnlessCondition(LaunchConfiguration("use_multithread")), + ) + + set_container_mt_executable = SetLaunchConfiguration( + "container_executable", + "component_container_mt", + condition=IfCondition(LaunchConfiguration("use_multithread")), + ) + + return launch.LaunchDescription( + launch_arguments + + [set_container_executable, set_container_mt_executable] + + [OpaqueFunction(function=launch_setup)] + ) From e536068be9e9a1657662152c84fc00de18558cb7 Mon Sep 17 00:00:00 2001 From: Sho Iwasawa <41606073+zusizusi@users.noreply.github.com> Date: Tue, 9 Jul 2024 05:57:47 +0300 Subject: [PATCH 05/17] fix(common_sensor_launch): change vlp16 param (#251) (#253) fix vlp16 param Signed-off-by: Sho Iwasawa --- common_sensor_launch/launch/velodyne_VLP16.launch.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_sensor_launch/launch/velodyne_VLP16.launch.xml b/common_sensor_launch/launch/velodyne_VLP16.launch.xml index a105b0a2..4a6cd6c1 100644 --- a/common_sensor_launch/launch/velodyne_VLP16.launch.xml +++ b/common_sensor_launch/launch/velodyne_VLP16.launch.xml @@ -37,7 +37,7 @@ - + From 8ef3f017ec5de18cf7080db33e9a377dbd078cf6 Mon Sep 17 00:00:00 2001 From: kotaro-hihara Date: Wed, 10 Jul 2024 20:54:58 +0900 Subject: [PATCH 06/17] fix(aip_x2_launch): read callibration from individual_params (#255) * read callibration from individual_params Signed-off-by: kotaro-hihara * ci(pre-commit): autofix --------- Signed-off-by: kotaro-hihara Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- aip_x2_launch/launch/lidar.launch.xml | 16 ++++++++-------- .../launch/nebula_node_container.launch.py | 17 +++-------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/aip_x2_launch/launch/lidar.launch.xml b/aip_x2_launch/launch/lidar.launch.xml index c4297b05..4dc5dc87 100644 --- a/aip_x2_launch/launch/lidar.launch.xml +++ b/aip_x2_launch/launch/lidar.launch.xml @@ -37,7 +37,7 @@ - + @@ -70,7 +70,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -169,7 +169,7 @@ - + @@ -202,7 +202,7 @@ - + @@ -235,7 +235,7 @@ - + @@ -268,7 +268,7 @@ - + diff --git a/aip_x2_launch/launch/nebula_node_container.launch.py b/aip_x2_launch/launch/nebula_node_container.launch.py index 53e7140e..08eebe40 100644 --- a/aip_x2_launch/launch/nebula_node_container.launch.py +++ b/aip_x2_launch/launch/nebula_node_container.launch.py @@ -75,18 +75,6 @@ def create_parameter_dict(*args): # Model and make sensor_model = LaunchConfiguration("sensor_model").perform(context) sensor_make, sensor_extension = get_lidar_make(sensor_model) - nebula_decoders_share_dir = get_package_share_directory("nebula_decoders") - - # Calibration file - sensor_calib_fp = os.path.join( - nebula_decoders_share_dir, - "calibration", - sensor_make.lower(), - sensor_model + sensor_extension, - ) - assert os.path.exists( - sensor_calib_fp - ), "Sensor calib file under calibration/ was not found: {}".format(sensor_calib_fp) nodes = [] @@ -136,7 +124,6 @@ def create_parameter_dict(*args): name=sensor_make.lower() + "_driver_ros_wrapper_node", parameters=[ { - "calibration_file": sensor_calib_fp, "sensor_model": sensor_model, **create_parameter_dict( "host_ip", @@ -157,6 +144,7 @@ def create_parameter_dict(*args): "ptp_transport_type", "ptp_switch_type", "ptp_domain", + "calibration_file", ), "launch_hw": True, }, @@ -290,7 +278,6 @@ def create_parameter_dict(*args): parameters=[ { "sensor_model": sensor_model, - "calibration_file": sensor_calib_fp, **create_parameter_dict( "sensor_ip", "host_ip", @@ -309,6 +296,7 @@ def create_parameter_dict(*args): "ptp_transport_type", "ptp_switch_type", "ptp_domain", + "calibration_file", ), } ], @@ -360,6 +348,7 @@ def add_launch_arg(name: str, default_value=None, description=None): add_launch_arg("use_multithread", "False", "use multithread") add_launch_arg("use_intra_process", "False", "use ROS 2 component container communication") add_launch_arg("container_name", "nebula_node_container") + add_launch_arg("calibration_file", "") set_container_executable = SetLaunchConfiguration( "container_executable", From ebb54ef44d302230a9af27fcfbc5b497d89c061a Mon Sep 17 00:00:00 2001 From: kotaro-hihara Date: Thu, 11 Jul 2024 16:40:33 +0900 Subject: [PATCH 07/17] fix(aip_x2_launch): set use_multithread and use_intra_process to True (#256) set use_multithread and use_intra_process to True Signed-off-by: kotaro-hihara --- aip_x2_launch/launch/nebula_node_container.launch.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aip_x2_launch/launch/nebula_node_container.launch.py b/aip_x2_launch/launch/nebula_node_container.launch.py index 08eebe40..7fb66c08 100644 --- a/aip_x2_launch/launch/nebula_node_container.launch.py +++ b/aip_x2_launch/launch/nebula_node_container.launch.py @@ -345,8 +345,8 @@ def add_launch_arg(name: str, default_value=None, description=None): ) add_launch_arg("diag_span", "1000") add_launch_arg("delay_monitor_ms", "2000") - add_launch_arg("use_multithread", "False", "use multithread") - add_launch_arg("use_intra_process", "False", "use ROS 2 component container communication") + add_launch_arg("use_multithread", "True", "use multithread") + add_launch_arg("use_intra_process", "True", "use ROS 2 component container communication") add_launch_arg("container_name", "nebula_node_container") add_launch_arg("calibration_file", "") From cec1431dc637a62125bbf085525d7a6415960b85 Mon Sep 17 00:00:00 2001 From: kotaro-hihara Date: Fri, 12 Jul 2024 15:14:43 +0900 Subject: [PATCH 08/17] fix(aip_x2_launch): update lidar angle setting for j6_gen1_02 (#254) update lidar angle setting for j6_gen1_02 --- aip_x2_launch/launch/lidar.launch.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/aip_x2_launch/launch/lidar.launch.xml b/aip_x2_launch/launch/lidar.launch.xml index 4dc5dc87..7d761f44 100644 --- a/aip_x2_launch/launch/lidar.launch.xml +++ b/aip_x2_launch/launch/lidar.launch.xml @@ -52,9 +52,9 @@ - - - + + + @@ -250,9 +250,9 @@ - - - + + + From 25673a139e403cd0fc4f18e6193120f30cd085f4 Mon Sep 17 00:00:00 2001 From: Shohei Sakai Date: Tue, 16 Jul 2024 19:25:57 +0900 Subject: [PATCH 09/17] update dummy diag name --- aip_x2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aip_x2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml b/aip_x2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml index 02ec3b1a..888cd52c 100644 --- a/aip_x2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml +++ b/aip_x2_launch/config/dummy_diag_publisher/sensor_kit.param.yaml @@ -21,7 +21,7 @@ pandar_ptp: default "left_upper: visibility_validation": default blockage_validation: default - concat_status: default + "concatenate_data: concat_status": default sensing_topic_status: default From 41271bb64731139f195c87660c92229b275af35b Mon Sep 17 00:00:00 2001 From: asa-naki Date: Thu, 18 Jul 2024 17:59:31 +0900 Subject: [PATCH 10/17] feat: add input_offset parameter to pointcloud preprocessor launch Signed-off-by: asa-naki --- aip_x1_launch/launch/pointcloud_preprocessor.launch.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py index b89904a5..9a594718 100644 --- a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py @@ -40,7 +40,11 @@ def launch_setup(context, *args, **kwargs): "/sensing/lidar/front_center/pointcloud_before_sync", ], "output_frame": LaunchConfiguration("base_frame"), - "timeout_sec": 1.0, + "input_offset": [ + 0.055, + 0.025, + ], + "timeout_sec": 0.095, "input_twist_topic_type": "twist", "publish_synchronized_pointcloud": True, } From 8c5582decbc1d0bf36b1ac48d2e44ef5c8f254a9 Mon Sep 17 00:00:00 2001 From: 1222-takeshi Date: Fri, 19 Jul 2024 14:09:19 +0900 Subject: [PATCH 11/17] feat: nebula_hw_monitor is not started except when simulation is running Signed-off-by: 1222-takeshi --- aip_x1_launch/launch/lidar.launch.xml | 1 + common_sensor_launch/launch/nebula_node_container.launch.py | 1 + common_sensor_launch/launch/velodyne_VLP16.launch.xml | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/aip_x1_launch/launch/lidar.launch.xml b/aip_x1_launch/launch/lidar.launch.xml index dce0a58a..781c360d 100644 --- a/aip_x1_launch/launch/lidar.launch.xml +++ b/aip_x1_launch/launch/lidar.launch.xml @@ -41,6 +41,7 @@ + diff --git a/common_sensor_launch/launch/nebula_node_container.launch.py b/common_sensor_launch/launch/nebula_node_container.launch.py index 1990f695..cd661bab 100644 --- a/common_sensor_launch/launch/nebula_node_container.launch.py +++ b/common_sensor_launch/launch/nebula_node_container.launch.py @@ -152,6 +152,7 @@ def create_parameter_dict(*args): ), }, ], + condition=IfCondition(LaunchConfiguration("launch_driver")), extra_arguments=[{"use_intra_process_comms": LaunchConfiguration("use_intra_process")}], ) ) diff --git a/common_sensor_launch/launch/velodyne_VLP16.launch.xml b/common_sensor_launch/launch/velodyne_VLP16.launch.xml index a105b0a2..4a6cd6c1 100644 --- a/common_sensor_launch/launch/velodyne_VLP16.launch.xml +++ b/common_sensor_launch/launch/velodyne_VLP16.launch.xml @@ -37,7 +37,7 @@ - + From b8d4d5ac73ff0f477d8e080923381d85be5b82e9 Mon Sep 17 00:00:00 2001 From: Autumn60 <37181352+Autumn60@users.noreply.github.com> Date: Wed, 24 Jul 2024 20:49:47 +0900 Subject: [PATCH 12/17] chore(blockage_diag): update param for aip_x1_launch (#268) * add enable_blockage_diag argument to lidar.launch.xml Signed-off-by: Autumn60 * ci(pre-commit): autofix --------- Signed-off-by: Autumn60 Co-authored-by: Autumn60 Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- aip_x1_launch/launch/lidar.launch.xml | 2 ++ aip_x1_launch/launch/pointcloud_preprocessor.launch.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/aip_x1_launch/launch/lidar.launch.xml b/aip_x1_launch/launch/lidar.launch.xml index 781c360d..f1796100 100644 --- a/aip_x1_launch/launch/lidar.launch.xml +++ b/aip_x1_launch/launch/lidar.launch.xml @@ -7,6 +7,7 @@ + @@ -22,6 +23,7 @@ + diff --git a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py index 9a594718..32c7e1b1 100644 --- a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py @@ -43,7 +43,7 @@ def launch_setup(context, *args, **kwargs): "input_offset": [ 0.055, 0.025, - ], + ], "timeout_sec": 0.095, "input_twist_topic_type": "twist", "publish_synchronized_pointcloud": True, From 7f00a8b9a42793f37cffb90e32d2a52e48897bc8 Mon Sep 17 00:00:00 2001 From: Sho Iwasawa <41606073+zusizusi@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:35:21 +0300 Subject: [PATCH 13/17] revert(common_sensor_launch): revert PR of changing vlp16 param (#251) (#253) (#281) Revert "fix(common_sensor_launch): change vlp16 param (#251) (#253)" This reverts commit e536068be9e9a1657662152c84fc00de18558cb7. Signed-off-by: Sho Iwasawa --- common_sensor_launch/launch/velodyne_VLP16.launch.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_sensor_launch/launch/velodyne_VLP16.launch.xml b/common_sensor_launch/launch/velodyne_VLP16.launch.xml index 4a6cd6c1..a105b0a2 100644 --- a/common_sensor_launch/launch/velodyne_VLP16.launch.xml +++ b/common_sensor_launch/launch/velodyne_VLP16.launch.xml @@ -37,7 +37,7 @@ - + From 1e465ec2c5673710a0ce6c113a67efd903052f89 Mon Sep 17 00:00:00 2001 From: 1222-takeshi Date: Tue, 13 Aug 2024 17:40:23 +0900 Subject: [PATCH 14/17] fix: change container name Signed-off-by: 1222-takeshi --- aip_x1_launch/launch/pointcloud_preprocessor.launch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py index 32c7e1b1..eedf65ee 100644 --- a/aip_x1_launch/launch/pointcloud_preprocessor.launch.py +++ b/aip_x1_launch/launch/pointcloud_preprocessor.launch.py @@ -71,7 +71,7 @@ def add_launch_arg(name: str, default_value=None): add_launch_arg("base_frame", "base_link") add_launch_arg("use_multithread", "False") add_launch_arg("use_intra_process", "False") - add_launch_arg("container_name", "pointcloud_preprocessor_container") + add_launch_arg("pointcloud_container_name", "pointcloud_container") set_container_executable = SetLaunchConfiguration( "container_executable", From 23326a31f22524052e63a7700c9042a4d3cce996 Mon Sep 17 00:00:00 2001 From: 1222-takeshi Date: Thu, 15 Aug 2024 16:22:17 +0900 Subject: [PATCH 15/17] chore: add prefix for rosdep Signed-off-by: 1222-takeshi --- aip_x1_launch/package.xml | 10 +++++----- aip_x2_launch/package.xml | 2 +- aip_xx1_gen2_launch/package.xml | 2 +- aip_xx1_launch/package.xml | 2 +- common_sensor_launch/package.xml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/aip_x1_launch/package.xml b/aip_x1_launch/package.xml index ae587883..a858a316 100644 --- a/aip_x1_launch/package.xml +++ b/aip_x1_launch/package.xml @@ -11,13 +11,13 @@ ament_cmake_auto common_sensor_launch - compare_map_segmentation - elevation_map_loader - ground_segmentation + autoware_compare_map_segmentation + autoware_elevation_map_loader + autoware_ground_segmentation imu_corrector individual_params - occupancy_grid_map_outlier_filter - pointcloud_preprocessor + autoware_occupancy_grid_map_outlier_filter + autoware_pointcloud_preprocessor rclcpp_components ros2_socketcan tamagawa_imu_driver diff --git a/aip_x2_launch/package.xml b/aip_x2_launch/package.xml index 65402aa1..9b6394b2 100644 --- a/aip_x2_launch/package.xml +++ b/aip_x2_launch/package.xml @@ -14,7 +14,7 @@ dummy_diag_publisher gnss_poser imu_corrector - pointcloud_preprocessor + autoware_pointcloud_preprocessor septentrio_gnss_driver tamagawa_imu_driver topic_tools diff --git a/aip_xx1_gen2_launch/package.xml b/aip_xx1_gen2_launch/package.xml index 8f2f9df9..16b6c3c5 100644 --- a/aip_xx1_gen2_launch/package.xml +++ b/aip_xx1_gen2_launch/package.xml @@ -15,7 +15,7 @@ gnss_poser imu_corrector pacmod3 - pointcloud_preprocessor + autoware_pointcloud_preprocessor ros2_socketcan tamagawa_imu_driver topic_tools diff --git a/aip_xx1_launch/package.xml b/aip_xx1_launch/package.xml index 93246e4b..9605d72f 100644 --- a/aip_xx1_launch/package.xml +++ b/aip_xx1_launch/package.xml @@ -15,7 +15,7 @@ gnss_poser imu_corrector pacmod3 - pointcloud_preprocessor + autoware_pointcloud_preprocessor ros2_socketcan tamagawa_imu_driver topic_tools diff --git a/common_sensor_launch/package.xml b/common_sensor_launch/package.xml index c4b612ff..c51858bc 100644 --- a/common_sensor_launch/package.xml +++ b/common_sensor_launch/package.xml @@ -12,8 +12,8 @@ dummy_diag_publisher nebula_sensor_driver - radar_tracks_msgs_converter - radar_tracks_noise_filter + autoware_radar_tracks_msgs_converter + autoware_radar_tracks_noise_filter velodyne_monitor ament_lint_auto From f7cb7f2e05e6d8d4f80f16270db206bab94e48eb Mon Sep 17 00:00:00 2001 From: Autumn60 <37181352+Autumn60@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:03:06 +0900 Subject: [PATCH 16/17] fix: config for awsim (#289) * delete unnecessary arg passing Signed-off-by: Autumn60 * fix gnss_poser param Signed-off-by: Autumn60 * Adjust gnss launching condition Signed-off-by: Autumn60 * fix invalid tag usage Signed-off-by: Autumn60 * ci(pre-commit): autofix --------- Signed-off-by: Autumn60 Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- aip_x1_launch/config/gnss_poser.param.yaml | 8 ++++++++ aip_x1_launch/launch/gnss.launch.xml | 12 +++++------- aip_x1_launch/launch/sensing.launch.xml | 3 +-- aip_x1_launch/package.xml | 6 +++--- aip_x2_launch/package.xml | 2 +- aip_xx1_gen2_launch/package.xml | 2 +- aip_xx1_launch/package.xml | 2 +- common_sensor_launch/package.xml | 4 ++-- 8 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 aip_x1_launch/config/gnss_poser.param.yaml diff --git a/aip_x1_launch/config/gnss_poser.param.yaml b/aip_x1_launch/config/gnss_poser.param.yaml new file mode 100644 index 00000000..5d4e8fda --- /dev/null +++ b/aip_x1_launch/config/gnss_poser.param.yaml @@ -0,0 +1,8 @@ +/**: + ros__parameters: + base_frame: base_link + gnss_base_frame: gnss_link + map_frame: map + buff_epoch: 1 + use_gnss_ins_orientation: false + gnss_pose_pub_method: 0 # 0: Median, 1: Average diff --git a/aip_x1_launch/launch/gnss.launch.xml b/aip_x1_launch/launch/gnss.launch.xml index 26b0de4c..ccb484fb 100644 --- a/aip_x1_launch/launch/gnss.launch.xml +++ b/aip_x1_launch/launch/gnss.launch.xml @@ -1,10 +1,9 @@ - - - + + @@ -14,14 +13,13 @@ + - - + + - - diff --git a/aip_x1_launch/launch/sensing.launch.xml b/aip_x1_launch/launch/sensing.launch.xml index 0f23a733..775a8566 100644 --- a/aip_x1_launch/launch/sensing.launch.xml +++ b/aip_x1_launch/launch/sensing.launch.xml @@ -12,7 +12,6 @@ - @@ -21,7 +20,7 @@ - + diff --git a/aip_x1_launch/package.xml b/aip_x1_launch/package.xml index a858a316..b409beea 100644 --- a/aip_x1_launch/package.xml +++ b/aip_x1_launch/package.xml @@ -10,14 +10,14 @@ ament_cmake_auto - common_sensor_launch autoware_compare_map_segmentation autoware_elevation_map_loader autoware_ground_segmentation - imu_corrector - individual_params autoware_occupancy_grid_map_outlier_filter autoware_pointcloud_preprocessor + common_sensor_launch + imu_corrector + individual_params rclcpp_components ros2_socketcan tamagawa_imu_driver diff --git a/aip_x2_launch/package.xml b/aip_x2_launch/package.xml index 9b6394b2..b26c7777 100644 --- a/aip_x2_launch/package.xml +++ b/aip_x2_launch/package.xml @@ -10,11 +10,11 @@ ament_cmake_auto + autoware_pointcloud_preprocessor common_sensor_launch dummy_diag_publisher gnss_poser imu_corrector - autoware_pointcloud_preprocessor septentrio_gnss_driver tamagawa_imu_driver topic_tools diff --git a/aip_xx1_gen2_launch/package.xml b/aip_xx1_gen2_launch/package.xml index 16b6c3c5..5934d08a 100644 --- a/aip_xx1_gen2_launch/package.xml +++ b/aip_xx1_gen2_launch/package.xml @@ -10,12 +10,12 @@ ament_cmake_auto + autoware_pointcloud_preprocessor common_sensor_launch glog_component gnss_poser imu_corrector pacmod3 - autoware_pointcloud_preprocessor ros2_socketcan tamagawa_imu_driver topic_tools diff --git a/aip_xx1_launch/package.xml b/aip_xx1_launch/package.xml index 9605d72f..94462318 100644 --- a/aip_xx1_launch/package.xml +++ b/aip_xx1_launch/package.xml @@ -10,12 +10,12 @@ ament_cmake_auto + autoware_pointcloud_preprocessor common_sensor_launch glog_component gnss_poser imu_corrector pacmod3 - autoware_pointcloud_preprocessor ros2_socketcan tamagawa_imu_driver topic_tools diff --git a/common_sensor_launch/package.xml b/common_sensor_launch/package.xml index c51858bc..f6f59192 100644 --- a/common_sensor_launch/package.xml +++ b/common_sensor_launch/package.xml @@ -10,10 +10,10 @@ ament_cmake_auto - dummy_diag_publisher - nebula_sensor_driver autoware_radar_tracks_msgs_converter autoware_radar_tracks_noise_filter + dummy_diag_publisher + nebula_sensor_driver velodyne_monitor ament_lint_auto From 0584b71ea37617d9d3cb23c62fc53d7a40fac17c Mon Sep 17 00:00:00 2001 From: Autumn60 <37181352+Autumn60@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:41:55 +0900 Subject: [PATCH 17/17] chore: replace use_awsim to use_gnss (#292) replace use_awsim to use_gnss Signed-off-by: Autumn60 --- aip_x1_launch/launch/sensing.launch.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aip_x1_launch/launch/sensing.launch.xml b/aip_x1_launch/launch/sensing.launch.xml index 775a8566..50d56354 100644 --- a/aip_x1_launch/launch/sensing.launch.xml +++ b/aip_x1_launch/launch/sensing.launch.xml @@ -4,7 +4,7 @@ - + @@ -20,7 +20,7 @@ - +