代价地图的配置

导航功能包使用两种代价地图存储周围环境中的障碍信息:
一种用于全局路径规划(global_costmap),一种用于本地路径规划和实时避障(local_costmap)。
两种代价地图需要使用一些共用的或独立的配置文件:通用配置文件、全局规划配置文件和本地规划配置文件。

1.通用配置文件(Common Configuration, local_costmap & global_costmap)

代价地图用来存储周围环境的障碍信息,其中需要声明地图关注的机器人传感器消息,以便于地图信息的更新
costmap_common_params.yaml

obstacle_range: 2.5
raytrace_range: 3.0
robot_radius: 0.165
inflation_radius: 0.1
max_obstacle_height: 0.6
min_obstacle_height: 0.0
observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}

详细参数

obstacle_range: 2.5
raytrace_range: 3.0

这两个参数用来设置代价地图中障碍物的相关阈值。
obstacle_range参数用来设置机器人检测障碍物的最大范围,若设置为2.5,则表示在2.5m范围内检测到的障碍信息才会在地图中进行更新。raytrace_range参数用来设置机器人检测自由空间的最大范围,若设置为3.0,则表示在3m范围内,机器人将根据传感器的信息清除范围内的自由空间。

robot_radius: 0.165
inflation_radius: 0.1

footprint参数用来设置机器人在二维地图上的占用面积,参数以机器人的中心作为坐标原点。
如果机器人外形是圆形,则需要设置机器人的外形半径robot_radius。
inflation_radius参数用来设置障碍物的膨胀参数,也就是机器人应该与障碍物保持的最小安全距离,这里设置为0.1,表示为机器人规划的路径应该与障碍物保持0.1m以上的安全距离。

max_obstacle_height: 0.6
min_obstacle_height: 0.0

这两个参数用来描述障碍物的最大高度和最小高度。

observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}

observation_sources参数列出了代价地图需要关注的所有传感器信息,每个传感器信息都会在后面列出详细内容。
以激光雷达为例,sensor_frame表示传感器的参考系名称,data_type表示激光数据或者点云数据使用的消息类型
topic_name表示传感器发布的话题名称,而marking和clearing参数用来表示是否需要使用传感器的实时信息来添加或清除代价地图中的障碍物信息。

2.全局规划配置文件(Global Configuration, global_costmap)

全局规划配置文件用于存储配置全局代价地图的参数

global_costmap_params.yaml
global_costmap:
   global_frame: /map
   robot_base_frame: /base_footprint
   update_frequency: 1.0
   publish_frequency: 0
   static_map: true
   rolling_window: false
   resolution: 0.01
   transform_tolerance: 1.0
   map_type: costmap

global_frame参数用来表示全局代价地图需要在哪个参考系下运行,这里选择了map参考系。
robot_base_frame参数用来表示代价地图可以参考的机器人本体的坐标系。
update_frequency参数用来决定全局地图信息更新的频率,单位是Hz。
static_map参数用来决定代价地图是否需要根据map_server提供的地图信息进行初始化,如果不需要使用已有的地图或者map_server,最好将该参数设置为false。

3.本地规划配置文件(Local Configuration, local_costmap)

本地规划配置文件用来存储本地代价地图的配置参数
local_costmap_params. yaml

local_costmap:
   global_frame: /odom
   robot_base_frame: /base_footprint
   update_frequency: 3.0
   publish_frequency: 1.0
   static_map: false
   rolling_window: true
   width: 6.0
   height: 6.0
   resolution: 0.01
   transform_tolerance: 1.0
   map_type: costmap

global_frame、robot_base_frame、update_frequency和static_map参数的意义与全局规划配置文件中的参数相同。publish_frequency参数用于设置代价地图发布可视化信息的频率,单位是Hz。
rolling_window参数用来设置在机器人移动过程中是否需要滚动窗口,以保持机器人处于中心位置。
width、height和resolution参数用于设置代价地图的长(米)、高(米)和分辨率(米/格)。虽然分辨率设置的与静态地图的不同,但是一般情况下两者是相同的。

4. 本地规划器配置

本地规划器base_local_planner的主要作用是,根据规划的全局路径计算发布给机器人的速度控制指令。
该规划器要根据机器人的规格配置相关参数
base_local_planner_params.yaml

controller_frequency: 3.0
recovery_behavior_enabled: false
clearing_rotation_allowed: false

TrajectoryPlannerROS:
   max_vel_x: 0.3
   min_vel_x: 0.05
   max_vel_y: 0.0  # zero for a differential drive robot
   min_vel_y: 0.0
   min_in_place_vel_theta: 0.5
   escape_vel: -0.1
   acc_lim_x: 2.5
   acc_lim_y: 0.0 # zero for a differential drive robot
   acc_lim_theta: 3.2

   holonomic_robot: false
   yaw_goal_tolerance: 0.1 # about 6 degrees
   xy_goal_tolerance: 0.1  # 10 cm
   latch_xy_goal_tolerance: false
   pdist_scale: 0.9
   gdist_scale: 0.6
   meter_scoring: true

   heading_lookahead: 0.325
   heading_scoring: false
   heading_scoring_timestep: 0.8
   occdist_scale: 0.1
   oscillation_reset_dist: 0.05
   publish_cost_grid_pc: false
   prune_plan: true

   sim_time: 1.0
   sim_granularity: 0.025
   angular_sim_granularity: 0.025
   vx_samples: 8
   vy_samples: 0 # zero for a differential drive robot
   vtheta_samples: 20
   dwa: true
   simple_attractor: false
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值