Integrating voxel_layer into the costmap
I am trying to include data from a 3d sensor into a 2d costmap knowing that the costmap is also feeded by a 2d sensor. Therefore, I have different layers, an obstacle layer using 2d laser scan data and a voxel layer using 3d point cloud data from a time of flight device.
First of all, I would like to ask you few specific questions about some parameter settings. I saw through different related questions, that origin_x and origin_y should be set to -width/2 and -height/2 but I didn't understand why and if it is really required, since by default these values are set to 0. Should I set the map_type to voxel or keep it as static_map, knowing that I need to get both layers appear in the costmap. In the voxel layer, do we need to set a negative min_obstacle_height? I would like to precise that in the robot urdf the base_link is lower than the 3d sensor which is itself lower then the laser sensor.
Next, I would like to see if there is something wrong or missing in the way the parameters are defined. At the end of this post, you can find the parameter settings of the different costmap files. In results to this set of configuration, I can visualize the 3d cloud separately but it does not have any impact on the costmap. Yet the laser data is well taken into account in the local costmap where the marking is set to true for both sensors. So I expect to have both sensor data affecting the local costmap. In the global costmap, however, marking is set to true only for the 3d sensor and yet the corresponding data seems not to be included. The voxel_grid topic also seems not to be updated (same values all the time), and following a solution found online to visualize the voxel grid on rviz, I tried to transform the voxel grid into a point cloud as sensor_msgs::PointCloud but the point cloud is empty. I think the problem is in the integration of the voxel layer itself into the costmap. Something must be missing either in the configuration files or a plugin, for example, in my ros version. I am using ros indigo - version 1.11.20
The result I am looking for, concerning the voxel layer, is similar to this video, in addition of course to keep the laser layer in the costmap:
https://www.youtube.com/watch?v=DM8sw...
Please find below the yaml settings :
costmap_common.yaml
transform_tolerance: 0.5
robot_radius: 0.35
costmap_global.yaml
global_costmap:
global_frame: map
robot_base_frame: center_wheel_link
update_frequency: 0.5
publish_frequency: 0.1
static_map: true
map_type: costmap
track_unknown_space: true
costmap_local.yaml
local_costmap:
global_frame: map
robot_base_frame: center_wheel_link
publish_frequency: 1.0
update_frequency: 2.0
rolling_window: true
map_type: costmap
global_costmap_plugins.yaml
global_costmap:
width: 10.0
height: 10.0
resolution: 0.03
origin_x: -5.0
origin_y: -5.0
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: laser_layer, type: "costmap_2d::ObstacleLayer"}
- {name: tof_layer, type: "costmap_2d::VoxelLayer ...