move_bae参数介绍
move_bae框架
参考:http://wiki.ros.org/move_base
构成
它由如下三部分构成:
- 实现一个actionlib,用于设定目标位置。
- 连接global planer和local planner,用于实现导航。可以通过重新实现nav_core::BaseGlobalPlanner 和 nav_core::BaseLocalPlanner 的接口,修改global planer和local planner的导航策略
- 维护两个two costmaps,一个为global planer,另一个为local planner
- recovery_behaviors: 如果找不到一条到达目标的路径,它就会运行一些清理机制,把地图中一些无效障碍物清理掉,重新制定路径。
节点组成如下图所示:
recovery_behaviors默认策略:
move_base参数
costmap_common_params.yaml
- robot_radius: 0.165 机器人底盘形状,圆形使用robot_radius,非圆形使用footprint
- footprint: [[x0, y0], [x1, y1], [x2, y2], [x3, y3], etc]
- obstacle_range:2.0 决定了多远的距离以内被当成是障碍显示在local costmap里面
- raytrace_range: 3.0 用来设置机器人检测自由空间的最大范围,设置为3.0意为在3米范围内,机器人将根据传感器的信息,清除范围内的自由空间
- inflation_radius: 0.3 costmap的膨胀半径
- observation_sources:用来设置你输入的障碍物检测方法:可以是激光和点云
- max_obstacle_height: , min_obstacle_height: ,障碍物的高度范围,这个范围设的太小,会导致local map显示不出来
global_costmap_params.yaml
- global_frame: /map
- robot_base_fame: /base_footprint
- update_frequency: 1.0 基于传感器数据更新的频率,降低频率可以减少CPU负载。合理值在1~5
- publish_frequency: 0 对于global static map,通常不需要持续发布
- static_map: true
- rolling_window: false
- transform_tolerance: 1.0 TF坐标系更新容忍的最大延迟,单位秒
local_costmap_params.yaml
- global_frame: /odom
- robot_base_fame: /base_footprint
- update_frequency: 3.0 基于传感器数据更新的频率,降低频率可以减少CPU负载
- publish_frequency: 1.0 发布地图的更新频率, 1HZ是足够好,除非机器人移动速度更快
- static_map: false
- rolling_window: true
- width: 6.0 rolling局部地图宽
- height: 6.0 rolling局部地图长
- resolution: 0.01 分辨率要与使用地图YAML文件中描述的分辨率一致
- transform_tolerance: 1.0 TF坐标系更新容忍的最大延迟,单位秒
base_local_planner_params.yaml
- controller_frequency: 3.0 更新路径规划的频率,3~5HZ比较合适,太高会加重CPU的负载。
- max_vel_x: 0.3
- min_vel_x: 0.05
- max_vel_theta: 1.0
- min_vel_theta: -1.0
- min_in_place_vel_theta: 0.5 原地旋转最小速度
- escape_vel: -0.1 Speed used for driving during escapes in meters per
sec. Note that it must be negative in order for the robot to actually reverse. - acc_lim_x: 2.5
- acc_lim_y: 0.0
- acc_lim_theta: 3.2
- holonomic_robot: false 全向轮设为true
- yaw_goal_tolerance: 0.1 航向角容忍的最大误差
- xy_goal_tolerance: 0.1 XY地图平面容忍的最大误差
- pdist_scale: 0.8 坚持按global planer规划的路径到达目标的权重
- gdist_scale: 0.4 为了尽可能到达目标,可以不完全按global planer规划的路径走的权重
- occdist_scale: 0.1 避障的权重
- sim_time: 1.0 路径规划考虑多少秒的移动轨迹,和dwa一起影响局部路径规划
- dwa: true
在rbx1中讲到,如果避障,建议做如下修改:
TrajectoryPlannerROS:
max_vel_x: 0.5
pdist_scale: 0.8
gdist_scale: 0.6
修改为:
TrajectoryPlannerROS:
max_vel_x: 0.3
pdist_scale: 0.8
gdist_scale: 0.4
rviz显示
注意:要将rviz的fixed frame设成map,因为map才是global_frame_id。
rviz居然连粒子都可以显示,显示让我对amcl粒子更新有了更深刻的理解。
首先在参数表里面有几个比较重要的参数。
~initial_pose_x (double, default: 0.0 meters)
Initial pose mean (x), used to initialize filter with Gaussian distribution.
~initial_pose_y (double, default: 0.0 meters)
Initial pose mean (y), used to initialize filter with Gaussian distribution.
~initial_pose_a (double, default: 0.0 radians)
Initial pose mean (yaw), used to initialize filter with Gaussian distribution.
~initial_cov_xx (double, default: 0.5*0.5 meters)
Initial pose covariance (x*x), used to initialize filter with Gaussian distribution.
~initial_cov_yy (double, default: 0.5*0.5 meters)
Initial pose covariance (y*y), used to initialize filter with Gaussian distribution.
~initial_cov_aa (double, default: (π/12)*(π/12) radian)
Initial pose covariance (yaw*yaw), used to initialize filter with Gaussian distribution.
这个代表了你初始化粒子时粒子分布的一个状态,注意要把方差设的大一些,要不所有例子上来就是一坨的就没法玩了。
参考:http://blog.****.net/chenxingwangzi/article/details/50038413
local map在rviz 中Add-> by topic-> local map
转载http://blog.****.net/EAIBOT/article/details/51628357