move_base介绍

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: 如果找不到一条到达目标的路径,它就会运行一些清理机制,把地图中一些无效障碍物清理掉,重新制定路径。

节点组成如下图所示:

move_base介绍_第1张图片

recovery_behaviors默认策略:

move_base介绍_第2张图片

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.csdn.net/chenxingwangzi/article/details/50038413

local map在rviz 中Add-> by topic-> local map

你可能感兴趣的:(ROS杂谈,SLAM杂谈)