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

Rtabmap Object Obstacle Problem [closed]

asked 2021-07-22 10:14:16 -0500

jacklu333333 gravatar image

updated 2022-08-07 09:02:21 -0500

lucasw gravatar image

Hi, I want to setup my turtlebot for Full autonomous Navigation with rtabmap. The first problem I encounter is that 3D irregular shape objects, such as chairs. In this case, if I use scan topic the chair can only be identified with a certain height.

The second problem I encounter is that cliff, since the cliff is 3D it is impossible to identify.

Both of them can be resolved with scan_cloud enable. However, in this case, all the movable objects, such as chairs will be drawn as obstacles in the projection map.

Here the demo of the official video demonstrates that with scan and depth information they can map out the 2-D environment and 3-D objects at the same time.

I am wondering the following: 1. How can I avoid the 3-D object in the above video case since it is empty for the position? 2. How can I avoid the cliff with depth information?

Thanks in advance.

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by jacklu333333
close date 2021-09-24 05:32:06.067478

1 Answer

Sort by ยป oldest newest most voted

answered 2021-07-22 18:00:22 -0500

Mike Scheutzow gravatar image

In general, the robot should scan ahead on its estimated path, and then move forward only when it is "safe". It's up to you to define safe. You might define it as "sees a wide-enough flat surface near z=0 in the map (assuming that the floor is z=0 on your 3d map.)

edit flag offensive delete link more


Hi, thanks for your fast reply. And I know this might be stupid to ask but where can I define safe since the turtlebot use the move_base package to do the navigation? Do I need to write my own navigation package for the robots?

jacklu333333 gravatar image jacklu333333  ( 2021-07-23 01:13:47 -0500 )edit

In the move_base stack, something like this could be done with a custom layer plugin in the local costmap. I don't know of any existing plugin that explicitly checks for "the presence of the floor". Creating a plugin must be done in c++, and requires a deeper understanding of how move_base works (someone new to move_base is going to have a steep learning curve.) You also have the issue that move_base is mostly not 3d-aware - its code is written assuming a robot on a 2d plane.

Update: here is an alternate approach that requires less knowledge about the internals of move_base: analyze your 3d map to identify "floor" and "not floor". Then create a point cloud, and publish to an ObstacleCostmapPlugin.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2021-07-23 07:37:38 -0500 )edit

Thank you for the answer. It helps a lot.

jacklu333333 gravatar image jacklu333333  ( 2021-07-27 01:50:20 -0500 )edit

Question Tools



Asked: 2021-07-22 10:14:16 -0500

Seen: 284 times

Last updated: Jul 22 '21