ros navigation costmap 配置问题
导航系统使用局部代价地图(local_costmap) 和全局代价地图(global_costmap)
描述机器人周围的环境。全局代价地图长期稳定的描述整个环境,主要用于全局规划(global planning)。
局部代价地图实时更新,主要用于避障( obstacle avoidance)。
有一些配置,全局代价地图和局部代价地图都需要,有一些配置需要是单独设置的。所以一般需要三种设置。
1. common configuration (global_costmap & local_costmap)
costmap_common_params.yaml
max_obstacle_height:2.0
min_obstacle_height:0.0
# 障碍物加入地图的距离阈值,2.5m 以内
obstacle_range: 2.5
# 传感器跟踪值距离阈值,2.5m 以内?
raytrace_range: 3.0
# 机器人视为矩形
footprint: [[x0, y0], [x1, y1], ... [xn, yn]]
# 机器人视为圆
#robot_radius: ir_of_robot
# 膨胀半径
inflation_radius: 0.55
# 传感器和下面的设置要一致 坐标系 话题名要对
observation_sources: laser_scan_sensor point_cloud_sensor
laser_scan_sensor: {sensor_frame: frame_name, data_type: LaserScan, topic: topic_name, marking: true, clearing: true}
point_cloud_sensor: {sensor_frame: frame_name, data_type: PointCloud, topic: topic_name, marking: true, clearing: true}
2. global configuration (global_costmap)
global_costmap_params.yaml
# 坐标系
global_costmap:
global_frame: /map
robot_base_frame: base_link
update_frequency: 5.0
static_map: true
3. local configuration (local_costmap)
local_costmap_params.yaml
# 坐标系
local_costmap:
global_frame: odom
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.05
ros navigation 规划器配置问题
规划器根据上面的全局地图和局部地图,需要分别配置全局规划器和局部规划器。
局部规划器
局部规划器是在全局规划器的基础上,计算机器人运行所需的线速度角速度。
base_local_planner_params.yaml
TrajectoryPlannerROS:
max_vel_x: 0.45
min_vel_x: 0.1
max_vel_theta: 1.0
min_in_place_vel_theta: 0.4
acc_lim_theta: 3.2
acc_lim_x: 2.5
acc_lim_y: 2.5
holonomic_robot: true
全局规划器
全局规划器默认就是A*,无需配置
ros navigation move_base 节点 launch 文件
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<rosparam file="$(find navi_pkg)/costmap_common_params.yaml" command="load" ns="global_costmap" />
<!-- ns 就是namespace 一定要配置正确,否则找不到对应的规划器 -->
<rosparam file="$(find navi_pkg)/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find navi_pkg)/local_costmap_params.yaml" command="load" />
<rosparam file="$(find navi_pkg)/global_costmap_params.yaml" command="load" />
<rosparam file="$(find navi_pkg)/base_local_planner_params.yaml" command="load" />
<!--加载以上配置的yaml 文件 -->
</node>