ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hi! I have this exact same problem with the exact same camera model. I'm already using ROS2 Galactic's version of Nav2, which has the minimum raycast distance feature in Costmap 2D. Using the particular parameter kind of "works", but the problem is, that if dynamic obstacle (e.g. people) walks in front of the camera below the minimum raycast distance, it leaves permanent obstacle in the costmap, as the minimum raycast distance is (for my understanding) defined by straight/radius distance in all directions from sensor's origo.

For example, on jannkar's case, the blind spot area is 30 cm on the ground level. However, if somebody waves his hand at the height of the sensor (on the x-axis of the sensor), the camera is able too se much closer (only few centimeters ahead from camera). This means, that waving hand e.g. 10 cm ahead of camera will leave permanent obstacle on the costmap. The robot should basically reverse at least 30 cm to clear the view, which in my case is not the best option, as we don't have sensor at the back of the robot. Also, clearing just the costmap is also not option, as we lose the information of the obstacles which camera can't see anymore.

I have tried to use also Voxel Layer and Spatio-Temporal Voxel Layer to solve the issue. The problem of Spatio-Temporal Voxel Layer is, that it does not seem to have raycasting feature at all, meaning, that the obstacles are just removed from the costmap based on elapsed time, which again does not fit for our application.

The Voxel Layer has raycast feature, but based on my testings, it barely removes any obstacles at all, even if the camera should clearly see that there is "nothing" between the sensor and floor/wall. I don't know do I just have some poor parameter settings (like low resolution of the camera: I filter the pointcloud data very much, so that it is not very dense, as it reduces much of data [1 Gbit/s -> 10 Mbit/s]. However, the resolution of the final pointcloud should be still better than voxel layer's/costmap's resolution).

So I'm a bit "stuck" how to solve the problem. My guess is, that theoretically the best plugin is to use the Voxel Layer, which I should continue testing even more. But I have understood (based on stevemacenski's writings on different sites) that the Voxel Layer is not the best working layer (in perfomance point of view), so let's see how much effort is reasonable to put on trying to make it work properly.