How to start multiple Lidar in one file in ros2 environment
Hello, friends. In ros1,Ican start two lidar in a file,like this: https://github.com/JeongJae0815/Multi... it use the <group>label.It's a ros1 sytle,the launch file write in XML. But in ros2,the launch file wite by python,how to start multiple Lidar in one file in ros2 environment?I'm a beginner to the velodyne_ros2_driver.The official driver is https://github.com/ros-drivers/velody.... I dont know how to start two velodyne in a launch file.I am looking forward to your reply, my friend.
Official launch of a velodyne_16 file:
import os
import yaml
import ament_index_python.packages
import launch
import launch_ros.actions
def generate_launch_description():
driver_share_dir = ament_index_python.packages.get_package_share_directory('velodyne_driver')
driver_params_file = os.path.join(driver_share_dir, 'config', 'VLP16-velodyne_driver_node-params.yaml')
velodyne_driver_node = launch_ros.actions.Node(package='velodyne_driver',
node_executable='velodyne_driver_node',
output='both',
parameters=[driver_params_file])
convert_share_dir = ament_index_python.packages.get_package_share_directory('velodyne_pointcloud')
convert_params_file = os.path.join(convert_share_dir, 'config', 'VLP16-velodyne_convert_node-params.yaml')
with open(convert_params_file, 'r') as f:
convert_params = yaml.safe_load(f)['velodyne_convert_node']['ros__parameters']
convert_params['calibration'] = os.path.join(convert_share_dir, 'params', 'VLP16db.yaml')
velodyne_convert_node = launch_ros.actions.Node(package='velodyne_pointcloud',
node_executable='velodyne_convert_node',
output='both',
parameters=[convert_params])
laserscan_share_dir = ament_index_python.packages.get_package_share_directory('velodyne_laserscan')
laserscan_params_file = os.path.join(laserscan_share_dir, 'config', 'default-velodyne_laserscan_node-params.yaml')
velodyne_laserscan_node = launch_ros.actions.Node(package='velodyne_laserscan',
node_executable='velodyne_laserscan_node',
output='both',
parameters=[laserscan_params_file])
return launch.LaunchDescription([velodyne_driver_node,
velodyne_convert_node,
velodyne_laserscan_node,
launch.actions.RegisterEventHandler(
event_handler=launch.event_handlers.OnProcessExit(
target_action=velodyne_driver_node,
on_exit=[launch.actions.EmitEvent(
event=launch.events.Shutdown())],
)),
])
How do we write with <group> when multiple are started?friends.Thanks in advance! /_\
Declaring two Nodes with different names or different namespaces should work. ROS2 also have group launch action, you can refer to turtlebot3 GitHub page to see some examples
Here is another example of a group launch from navigation2 https://github.com/ros-planning/navig...
My friend, thank you very much for your reply, which is very helpful to me!
You may also need to remap topics so that they don’t publish to same topic
Ok, my friend, I'll try it