Rosanswers logo

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.

Originally posted by jacklu333333 on ROS Answers with karma: 9 on 2021-07-22

Post score: 0


1 Answer 1


Rosanswers logo

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

Originally posted by Mike Scheutzow with karma: 4903 on 2021-07-22

This answer was ACCEPTED on the original site

Post score: 1

Original comments

Comment by jacklu333333 on 2021-07-23:
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?

Comment by Mike Scheutzow on 2021-07-23:
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.

Comment by jacklu333333 on 2021-07-27:
Thank you for the answer. It helps a lot.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.