fix(agv_pro_bringup): add launch with RViz condition

This commit is contained in:
X-lanni
2026-04-08 19:02:32 +08:00
parent 30895501ed
commit be405bb64d
3 changed files with 96 additions and 7 deletions
+89
View File
@@ -0,0 +1,89 @@
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.conditions import IfCondition
from launch.substitutions import LaunchConfiguration, PythonExpression
from launch_ros.actions import Node
################### user configure parameters for ros2 start ###################
# xfer_format = 0 # 0-Pointcloud2(PointXYZRTL), 1-customized pointcloud format
multi_topic = 0 # 0-All LiDARs share the same topic, 1-One LiDAR one topic
data_src = 0 # 0-lidar, others-Invalid data src
# publish_freq = 10.0 # freqency of publish, 5.0, 10.0, 20.0, 50.0, etc.
output_type = 0
frame_id = 'laser_link'
lvx_file_path = '/home/livox/livox_test.lvx'
cmdline_bd_code = 'livox0000000001'
cur_path = os.path.split(os.path.realpath(__file__))[0] + '/'
cur_config_path = cur_path + '../config'
rviz_config_path = os.path.join(cur_config_path, 'display_point_cloud_ROS2.rviz')
user_config_path = os.path.join(cur_config_path, 'MID360_config.json')
################### user configure parameters for ros2 end #####################
def generate_launch_description():
use_mid360_rviz = LaunchConfiguration('use_mid360_rviz')
xfer_format = LaunchConfiguration('xfer_format')
publish_freq = LaunchConfiguration('publish_freq')
declare_rviz_arg = DeclareLaunchArgument(
'use_mid360_rviz',
default_value='false',
description='Enable RViz for MID360 LiDAR visualization'
)
declare_xfer_format_arg = DeclareLaunchArgument(
'xfer_format',
default_value='0',
description='MID360 format: 0=Pointcloud2(PointXYZRTL), 1=customized pointcloud format'
)
declare_publish_freq_arg = DeclareLaunchArgument(
'publish_freq',
default_value='10.0',
description='MID360 LiDAR publish frequency in Hz (e.g., 5.0, 10.0, 20.0, 50.0)'
)
livox_ros2_params = [
{"xfer_format": xfer_format},
{"multi_topic": multi_topic},
{"data_src": data_src},
{"publish_freq": publish_freq},
{"output_data_type": output_type},
{"frame_id": frame_id},
{"lvx_file_path": lvx_file_path},
{"user_config_path": user_config_path},
{"cmdline_input_bd_code": cmdline_bd_code}
]
livox_driver = Node(
package='livox_ros_driver2',
executable='livox_ros_driver2_node',
name='livox_lidar_publisher',
output='screen',
parameters=livox_ros2_params
)
livox_rviz = Node(
package='rviz2',
executable='rviz2',
name='mid360_lidar_rviz',
output='screen',
arguments=['--display-config', rviz_config_path],
condition=IfCondition(
PythonExpression([
"'", use_mid360_rviz, "' == 'true' and '",
xfer_format, "' == '0'"
])
)
)
return LaunchDescription([
declare_rviz_arg,
declare_xfer_format_arg,
declare_publish_freq_arg,
livox_driver,
livox_rviz,
])