How to go through narrow courses?

asked 2020-08-08 03:46:09 -0500

ayato gravatar image


I'm trying set up my robot like turtlebot, diff robot, not omni robot.
I want to let the robot go through narrow courses about 10-20 cm wider than the width of the robot.
Please imagine the courses as ticket gate or door.

I use ros kinetic, move_base.
I choose TrajectoryPlannerROS as base_local_planner, global_base_planner is default.
I made settings based on the settings of turtlebot, change velocity and robot size mainly.
In open space, the robot move around max velocity, and make shortest path to goal points, sometime avoid obstacles.

Next I want to let the robot go through narrow courses.
But it happened to following things;
1. the robot is stuck, and do recovery behaviour of RotateRecovery, just before going narrow area.
2. the robot is stuck like 1. on the way in narrow area.

I watched using rviz, global planner path was generated, but local planner path was not generated.
After that it seemed that the recovery behaviour was executed due to timeout.

Which parameter should be changed?
is it costmap parameters, or planner parameters, or another planner?

By the way, similar event about stuck happened that I approached from the front of the robot.
In this case, do you think that the event happened the result of robot's recognition that it is like above 2.?

Thanks in advance.

edit retag flag offensive close merge delete


Hi @ayato, I had a similar issue that was solved by reducing the width in the "footprint" parameter. You can also review the Navigation Tuning Guide (

Andres A. gravatar image Andres A.  ( 2020-08-10 16:09:54 -0500 )edit

Hi @Andres A., thank you for your advice.I have thought that larger footprint was need to avoid crashing to obstacles. So I set robot_radius of footprint parameter to larger 5cm than real size. I will try setting the real size to footprint parameter.

ayato gravatar image ayato  ( 2020-08-11 00:54:29 -0500 )edit

@ayato, In the costmap_common_params file, try reducing the inflation_layer:inflation_radius: value. and in the global_planner_params file try reducing the cost_factor

@Andres A. those two can affect that as well right?

KalanaR gravatar image KalanaR  ( 2020-08-11 02:35:54 -0500 )edit

Hi @KalanaR, as you said, reducing the inflation_layer:inflation_radius: will help. Regarding the GlobalPlanner:cost_factor I guess it can remain without change because the global planner path was already generated. The problem seems to be in local planner/local costmap parameters. Reducing the local_costmap:resolution: can help as well. The best resource for this kind of issues is the Navigation Tuning Guide

Andres A. gravatar image Andres A.  ( 2020-08-11 09:15:29 -0500 )edit

Hi @Andres A.@KalanaR, I'm sorry for my late reply. I tried tuning with your opinions as reference. Actually I did, robot_radius set to real size, and costmap resolution value reduce as 0.05 to 0.01. As the result, my robot generated global and local path, and went through narrow way about 15cm wider than robot width. But in another place, my robot came too close to the obstacle. Next I will try tunning inflation_radius and cost_factor. Thanks.

ayato gravatar image ayato  ( 2020-08-18 22:11:10 -0500 )edit