Detecting sunken spaces

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Detecting sunken spaces

Sandeep Dutta
I want to start by saying thank you for this great package.

I am using RTAB-Map on an indoor mobile robot, the environment has
sunken spaces. I would like to detect the edges of these sunken spaces
and mark them in the occupancy map.

I am happy to do the work, need some guidance about which functions
I should look at .

Thank you.
Sandeep Dutta
Reply | Threaded
Open this post in threaded view
|

Re: Detecting sunken spaces

matlabbe
Administrator
Hi Sandeep,

I am glad that you find RTAB-Map useful!

You didn't mention any sensor, do you need to detect these "cliffs" with vision or lidar? Vacuum robots have often cliff sensors under them (simple IR pointing on the ground) to avoid falling in the stair for example.

With vision, if the camera can actually see quite well the ground, you could disable ray tracing and set a minimum height for the ground. Like in this video at 5:42, the robot is approaching a curb (from the top), we can see that no point would be created just the other side of the curb that the camera cannot see. In the occupancy grid, the cells will remain "unknown". By setting also "Grid/MinGroundHeight=-0.05", the ground seen under 5 cm of the current base frame of the robot (i.e. current floor) will be labelled as obstacles. So to make sure to not fall, the robot must not navigate on "unknown" cells and the usual obstacle cells.



Regards,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Detecting sunken spaces

Sandeep Dutta
Hello Mathieu,

Thank you for the prompt response & suggestions. Our robot has two Relasense
cameras , one facing forward the other facing backwards. I am using the multi-camera
capability of RtabMAP for mapping & localization. I am feeding stereo images from the two
cameras using "stereo_sync" & odometry from an "EKF" node, the EKF fuses the IMU &
the odometry from the wheels (fairly accurate).
I am using the occupancy grid generated by RTAM-Map as the global MAP with NAV2. I tried
your suggestion and it does detect the edge and the sunken portion  is marked as unknown
as you said, however as you mentioned the ground now becomes an obstacle which does not work
for me. Is there a way I can detect the ground and mark it as free ?

Thank you once again
Sandeep
Reply | Threaded
Open this post in threaded view
|

Re: Detecting sunken spaces

matlabbe
Administrator
Sandeep Dutta wrote
however as you mentioned the ground now becomes an obstacle which does not work
for me. Is there a way I can detect the ground and mark it as free ?
Not all ground would become an obstacle, just the ground lower than the current ground the robot is on. But if this also an issue, you can remove the "Grid/MinGroundHeight" constraint, and set "Grid/FlatObstacleDetected" to false (all planes will be empty), but the robot should be careful to avoid unknown.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Detecting sunken spaces

Sandeep Dutta
Thanks again Mathieu,
Yes that worked , with "Raytracing" off there are a lot more artifacts on the map.
I will add a couple of TOF range sensors to the robot to handle this problem.

Once again thank you for your help.

Best Regards
Sandeep