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

Revision history [back]

click to hide/show revision 1
initial version

As far as I know, the robot moves according to the local planner, as the base_local_planner is responsible for computing velocity commands to send to the mobile base of the robot given a high-level plan. And the local trajectory is generated according to the global trajectory and the obstacles within the local costmap. So in my opinion, the global planner just serves for the local planner.

So if the local planner fails, the recovery behaviors(i.e. clear_costmap_recovery, rotate_recovery) will happen, and then if it fails again, the robot will stop, and you need to reset the Goal. According to the move_base doc, after each recovery behavior, move_base will attempt to make a plan. If planning is successful, move_base will continue normal operation. Otherwise, the next recovery behavior in the list(parameter recovery_behaviors) will be executed.

For more details, you can see the base_local_planner document.

As for the recovery behaviors, you can see move_base document.

As far as I know, the robot moves according to the local planner, as the base_local_planner is responsible for computing velocity commands to send to the mobile base of the robot given a high-level plan. And the local trajectory is generated according to the global trajectory and the obstacles within the local costmap. So in my opinion, the global planner just serves for the local planner.

So if the local planner fails, the recovery behaviors(i.e. clear_costmap_recovery, rotate_recovery) will happen, and then if it fails again, the robot will stop, and you need to reset the Goal. According to the move_base doc, after each recovery behavior, move_base will attempt to make a plan. If planning is successful, move_base will continue normal operation. Otherwise, the next recovery behavior in the list(parameter recovery_behaviors) will be executed.

For more details, you can see the base_local_planner document.

As for the recovery behaviors, you can see move_base document.


EDIT

I think the infinite loop is because local costmap is stuck, but the global costmap is not. In global_costmap_params.yaml, there is a param update_frequency, which is the frequency in Hz for the global map to be updated. Generally, if update_frequency is not zero, that loop won't happen.

Did you encounter this infinite loop in your real robot? As I haven't encounter this problem.

As far as I know, the robot moves according to the local planner, as the base_local_planner is responsible for computing velocity commands to send to the mobile base of the robot given a high-level plan. And the local trajectory is generated according to the global trajectory and the obstacles within the local costmap. So in my opinion, the global planner just serves for the local planner.

So if the local planner fails, the recovery behaviors(i.e. clear_costmap_recovery, rotate_recovery) will happen, and then if it fails again, the robot will stop, and you need to reset the Goal. According to the move_base doc, after each recovery behavior, move_base will attempt to make a plan. If planning is successful, move_base will continue normal operation. Otherwise, the next recovery behavior in the list(parameter recovery_behaviors) will be executed.

For more details, you can see the base_local_planner document.

As for the recovery behaviors, you can see move_base document.


EDIT

I think the infinite loop is because local costmap is stuck, but the global costmap is not. In global_costmap_params.yaml, there is a param update_frequency, which is the frequency in Hz for the global map to be updated. Generally, if update_frequency is not zero, that loop won't happen.

Did you encounter this infinite loop in your real robot? As I haven't encounter this problem.


EDIT 2

I'm working with P3-DX and ROS navigation stack. I have encoutered these two circumstances in which the nav stack aborts.

  1. The robot is too close to the obstacles, it can't even rotate. These two error messages came out and the robot stopped.

    [ERROR] [1472631068.711487006]: Rotate recovery can't rotate in place because there is a potential collision. Cost: -1.00

    [ERROR] [1472631068.811355441]: Aborting because a valid plan could not be found. Even after executing all recovery behaviors

  2. There are many obstacles arround the robot, but it can rotate. Then it rotated several times but still could't find a way out. Finally, it aborted. And this error message came out.

    [ERROR] [1472633546.394854371]: Aborting because a valid plan could not be found. Even after executing all recovery behaviors