Pointcloud to laserscan node not launching as expected with multiple namespaces
I am new to ros and I am trying to implement multi-jackal slam with gmapping, with Velodyne lidar. I added a pointcloud_to_laserscan_node to filter velodyne lidar readings to laser scan data. My implementation worked with one jackal, when it comes to two jackals, the (ns)/point_cloud_to_laserscan_node cannot launch properly, instead, it shows a node named n__jackal1__pointcloud_to_laserscan, and error showed up saying process has died.
Can anyone think of any reason I am getting this error? Thank you so much
Here's my implementation of the pointcloud to laser scan filter launch file <launch> <node name="floor_removal" pkg="vld16_process" type="floor_removal" output="screen" >="" <remap="" from="/velodyne_points" to="/jackal1/velodyne_points"/> <remap from="/velodyne_points/floor_removed" to="/jackal1/velodyne_points/floor_removed"/> </node>
<!-- Launch the nodelet manager for pcl -->
<node pkg="nodelet" type="nodelet" name="pcl_manager" args="manager" output="screen" />
<!-- Passthrough to filter out points outside the CropBox -->
<node pkg="nodelet" type="nodelet" name="passthrough" args="load pcl/PassThrough pcl_manager" output="screen" >
<remap from="~input" to="/jackal1/velodyne_points/floor_removed/" />
<remap from="~output" to="/jackal1/velodyne_points/passthrough/" />
<rosparam>
filter_field_name: x
filter_limit_min: -0.55
filter_limit_max: 0.00
filter_limit_negative: True
filter_field_name: y
filter_limit_min: -0.30
filter_limit_max: 0.30
filter_limit_negative: True
</rosparam>
</node>
<!-- Get rid of pesky noise using radius outlier filter -->
<node pkg="nodelet" type="nodelet" name="radius_outlier_removal" args="load pcl/RadiusOutlierRemoval pcl_manager" output="screen" >
<remap from="~input" to="/jackal1/velodyne_points/passthrough/" />
<remap from="~output" to="/jackal1/velodyne_points/outlier_removed/" />
<rosparam>
<!-- Neighbor area to check points -->
<!-- Keep points with neighbor points larger than this number -->
radius_search: 0.10
min_neighbors: 1
</rosparam>
</node>
<!-- VoxelGrid downsampling to produce a less dense point cloud -->
<node pkg="nodelet" type="nodelet" name="voxel_grid" args="load pcl/VoxelGrid pcl_manager" output="screen" >
<remap from="~input" to="/jackal1/velodyne_points/outlier_removed/" />
<remap from="~output" to="/jackal1/velodyne_points/filtered/" />
<rosparam>
filter_field_name: z
filter_limit_min: -0.28
filter_limit_max: 0.10
filter_limit_negative: False
leaf_size: 0.05
</rosparam>
</node>
<node pkg="tf" type="static_transform_publisher" name="velodyne_to_front_laser"
args="0 0 0 0 0 0 /jackal1/velodyne /jackal1/front_laser 100" />
<!-- Transfer 3D pointcloud data to 2D laserscan data -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan" ns="jackal1">
<remap from="cloud_in" to="/jackal1/velodyne_points/filtered"/>
<remap from="scan" to="/jackal1/front/scan"/>
<rosparam>
transform_tolerance: 0.01
min_height: -1.0
max_height: 1.0
angle_min: -3.1416
angle_max: 3.1416
angle_increment: 0.0087
scan_time: 0.1
range_min: 0.1
range_max: 20.0
use_inf: true
concurrency_level: 0
</rosparam>
</node>
</launch>
here's my main launch file.
<launch> <arg name="gui" default="true"/> <arg name="rviz" default="true"/> <arg name="ns0" default="jackal0"/> <arg name="ns1" default="jackal1"/> <arg name="ns2" default="jackal2"/> <arg name="config0" default="base"/> <arg name="config0_id" default="0"/> <arg name="config1" default="base"/> <arg name="config1_id" default="1"/> <arg name="config2" default="base"/> <arg name ...