# Rtabmap Object Obstacle Problem [closed]

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?

edit retag 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

Sort by » oldest newest most voted

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.)

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?

( 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.

( 2021-07-23 07:37:38 -0500 )edit

Thank you for the answer. It helps a lot.

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