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

Can rtabmap node complete path planning?

asked 2020-04-17 02:25:33 -0600

willzoe gravatar image

updated 2021-08-09 10:46:29 -0600

matlabbe gravatar image

I saw on the wiki that some of the Subscribed Topics, Published Topics, and Services of the rtabmap node were marked as Planning. I think does this mean that it is possible to use only rtabmap node to complete the robot's path planning, so that the robot can reach the predetermined target and avoid obstacles that appear on the path?

I asked the same question in the Official RTAB-Map Forum.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-04-17 07:08:36 -0600

hashirzahir gravatar image

updated 2021-08-09 10:46:44 -0600

matlabbe gravatar image

I didn't know it was possible until you had asked. Apparently it is supported according to a forum post here

I feel the forum post sums it up nicely:

rtabmap does topological planning with its graph. The global path would be all nodes to be traversed on the map's graph to reach the goal. The local graph is the upcoming nodes (up to RGBD/LocalRadius, default 10 meters) that should be loaded in Working Memory so that the robot can localize on the path. In this topological planning, there is no explicit obstacle detection (the grid map is not used), it is just assumed that poses on the graph are cleared from obstacle (which should be the case if the robot moved on these particular locations). Normally, rtabmap planning would be integrated on top of move_base navigation for metric planning, which will do obstacle avoidance using the grid map generated by rtabmap. rtabmap sends goals to move_base, then move_base sends velocity commands to robot controller.

So basically it is able to provide a global path towards a goal, but relies on move_base to actually get the robot to follow the path, send velocity goals to your controller module and avoid pbstacles. I assume this is not the default use case for RTAB-MAP as most people would use it to loaclize (get xyz position) and rely on move_base to plan paths and avoid obstacles. But it is definitely possible to plan paths with it, although I'm not sure of what is the benefit.

edit flag offensive delete link more

Comments

1

Thx for the answer. To add to benefits:

  1. if memory management is enabled, it will help to correctly remember the occupancy grid incrementally when moving to a goal.
  2. You can label nodes in the graph as "kitchen" or "bathroom", and simply tells rtabmap to go to "kitchen", then it will send goals appropriately to move_base.
  3. Robust to map optimizations: For example, the robot is going to "kitchen" node, but there is a loop closure happening, the map is optimized, which could move the destination metric goal anywhere else. When planning to a node, this node will move with the graph optimization, resending the new metric goal to move_base.

More details in this paper.

matlabbe gravatar image matlabbe  ( 2020-04-18 13:55:54 -0600 )edit

Thank you both. Is there a reference to use rtabmap for path planning and avoiding obstacles?

willzoe gravatar image willzoe  ( 2020-04-18 14:07:03 -0600 )edit

Beside the paper I mentioned that is more theorical, there is no tutorial for that. The launch used in that paper was az3_nav.launch (rtabmap and move_base connected by actionlib api). The patrol example can be done with the script patrol.py:

$ patrol.py kitchen living_room bathroom

matlabbe gravatar image matlabbe  ( 2020-04-18 14:15:49 -0600 )edit

Actually, you can try it with the turtlebot example (tested on melodic). In rviz, open Tools properties and change /move_base_simple/goal to /rtabmap/goal, and the goal will pass by rtabmap instead. You can also do:

 # To go to node 20
 rosservice call /rtabmap/set_goal 20 "" ""

 # or label node 20 as kitchen, then move to it
 rosservice call /rtabmap/set_label 20 kitchen
 rosservice call /rtabmap/set_goal 0 "kitchen" ""

You can add MapGraph (/rtabmap/mapGraph) and MarkerArray (/rtabmap/labels) to RVIZ to see the graph with labels and node ids.

matlabbe gravatar image matlabbe  ( 2020-04-18 14:30:16 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2020-04-17 02:25:33 -0600

Seen: 1,182 times

Last updated: Aug 09 '21