teb_local_planner
for navigationteb_local_planner
to navigate your robots. For more information, click here.Filepath: catkin_ws/movel_ai/config/movel/config/File to modify: base_local_planner_params.yaml
movel
package. In the yaml file itself, you see there are actually 3 local planners included. But we will only use one of them. Uncomment the entire long section under TebLocalPlannerROS
. Filepath: catkin_ws/movel_ai/config/velocity_setter/config/File to modify: velocity_setter.yaml
local_planner
match the name of the planner in the base local planner configuration. You are configuring the maximum velocities to be the maximum velocities you specified in teb planner.rostopic list
in terminal to check you have /odom
published./map
.Filepath: catkin_ws/movel_ai/config/movel/config/amcl.yamlFile to modify: amcl.yaml
min_particles
and max_particles
to adjust the precision. teb_local_planner
parametersvel
parameters limits how fast the robot can move. acc
parameters limits how fast robot can accelerate. _x
specifies linear kinematics whereas _theta
specifies angular kinematics. footprint_model
should be configured with respects to the robot's measurements.type
of the robot footprint. Different types include polygon
, circular
, two_circles
, line
, point
etc. For simplicity sake, footprints are usually circular or polygon. Click here for more footprint information.radius
is required for type: "circular"
vertices
is required for type: "polygon"
xy_goal_tolerance
is the acceptable linear distance away from the goal, in meters. xy
value too high, else the robot will stop at a very different location. However, some leeway is required to account for robot drift etc.yaw_goal_tolerance
is the deviation in the robot's orientation. i.e. Goal specifies that the robot should face directly in front of the wall but in actual, the robot faces slightly to the left. yaw
tolerance, else the robot could be jerking around just to get the orientation right. Which might not be ideal in terms of efficiency.min_obstacle_dist
is the minimum distance you want to maintain away from obstacles. inflation_dist
is the buffer zone to add around obstacles. Filepath: catkin_ws/movel_ai/config/movel/config/File to modify: costmap_common_params.yaml
base_local_planner_params
.footprint
must match the measurements specified in base_local_planner_params.yaml.common_costmap_params
into global_costmap_params
and local_costmap_params
.global_costmap_params.yaml
and local_costmap_params.yaml
as plugins. Click here for more information on the difference between global and local costmaps.teb_local_planner
params first. Modify the costmap only if you need more fine tuning after that. inflation_radius
is the radius, in meters, to which the map inflates obstacle cost value. Usually it is the width of the bot, plus some extra space.cost_scaling_factors
is the scaling factor to apply to cost values during inflation.Theinflation_radius
is actually the radius to which the cost scaling function is applied, not a parameter of the cost scaling function. Inside the inflation radius, the cost scaling function is applied, but outside the inflation radius, the cost of a cell is not inflated using the cost function.You'll have to make sure to set the inflation radius large enough that it includes the distance you need the cost function to be applied out to, as anything outside the inflation_radius will not have the cost function applied.For the correctcost_scaling_factor
, solve the equation there ( exp(-1.0 * cost_scaling_factor * (distance_from_obstacle - inscribed_radius)) * (costmap_2d::INSCRIBED_INFLATED_OBSTACLE - 1)), using your distance from obstacle and the cost value you want that cell to have.
laser_scan_sensor
must be selected.obstacle_range
is the maximum distance from the robot that an obstacle will be inserted into the costmap. A value of 10 means the costmap will mark out obstacles that are within 10 meters from the robot.raytrace_range
is the range in meters at which to raytrace out obstacles. The value must be set with respects to your sensors.max_obstacle_height
is the maximum height of obstacles to be added to the costmap. Increase this number if you have very tall obstacles. The value must be set with respects to your sensors.origin_z
is the z-origin of the map (meters)z_resolution
is the height of the cubez_resolution
controls how dense the voxels is on the z-axis. If it is higher, the voxel layers are denser. If the value is too low (e.g. 0.01), you won’t get useful costmap information. If you set z resolution to a higher value, your intention should be to obtain obstacles better, therefore you need to increasez_voxels
parameter which controls how many voxels in each vertical column. It is also useless if you have too many voxels in a column but not enough resolution, because each vertical column has a limit in height.
z_voxels
is the number of voxels observation_sources
to the topic that you want to take in data from. obs_cloud
if you want a PointCloud (3D) or mock_scan
if you want a LaserScan (2D). Or you can specify your own method.min_obstacle_height
is the height of the obstacle below the base of the robot. Examples includes stairs. Specify this param so that the robot can detect obstacles below its base link and prevent it from falling into the pit...max_obstacle_height
is the maximum height of obstacle. It is usually specified as the height of the robot.rosrun rqt_reconfigure rqt_reconfigure
inflation_radius
in both costmaps so that it does not cover the corridor. (Right figure) Noted with observation that if the radius covers the entire corridor, robot may refuse to move.