【ROS】移动机器人导航仿真(3)——定位(amcl)和路径规划(move_base)

在前一节中,采用gmapping包实现了机器人工作环境的地图构建,这一节将利用amcl包和move_base包实现移动机器人的自主导航。至此已完成整个移动机器人导航仿真的工作,完整代码见:http://download.csdn.net/detail/wangchao7281/9717920


amcl

amcl是移动机器人在2D环境中的概率定位系统。它实现了自适应(或KLD采样)蒙特卡罗定位方法,其使用粒子滤波器来针对已知的地图跟踪机器人的位姿。目前情况下,该节点仅能使用激光扫描数据和激光雷达地图来工作。它可以通过修改代码以扩展到其他传感器数据。

amcl接收基于激光的地图,激光扫描和tf变换消息,并输出位姿估计。在启动时,amcl根据提供的参数初始化其粒子滤波器。注意,如果没有设置初始化参数,则根据默认值初始滤波器状态将是以(0,0,0)为中心的中等大小的粒子云。在rviz中可以通过2D Pose Estimate按钮来初始化位姿。

在ROS自带的文件中,rospack find amcl/examples/amcl_diff.launch支持差分驱动机器人平台,而amcl_omni.launch 支持全向移动机器人平台。

在启动launch文件前,可以配置一系列的参数来满足系统的要求。其中比较重要的几个参数如下:
1. 参数min_particles和max_particles设定了算法运行所允许的粒子最小和最大数量。粒子数越多,结果越精确,CPU消耗也越高。
2. 参数laser_model_type用于配置激光雷达的类型。
3. 参数laser_likehood_max_dist用于设置地图中障碍物膨胀的最大距离,使用此参数前提是laser_type_model选择了likehood_field模式。
详见:http://wiki.ros.org/amcl


move_base

move_base包提供了一个动作的实现(参见actionlib包),在地图上给定一个目标,move_base将会规划出路径并使机器人避开障碍物从而到达目标。详见:http://wiki.ros.org/move_base
move_base节点将全局导航和局部导航链接在一起以完成其导航任务。全局导航用于建立到地图上最终目标或一个远距离目标的路径,局部导航用于建立到近距离目标和为了临时躲避障碍物的路径,例如机器人四周一个4x4 m的方形窗口。
move_base节点支持任何遵循nav_core包中指定的nav_core :: BaseGlobalPlanner接口的全局规划以及任何遵循nav_core包中指定的nav_core :: BaseLocalPlanner接口的局部规划。move_base节点还维护两个代价地图,分别为全局代价地图和局部代价地图。

在运行move_base节点之前需要四个配置文件,这些文建定义了一系列相关参数,包括越过障碍物的代价、机器人的半径、路劲规划时的需要考虑未来多长的路,机器人的的最大速度等等,四个配置文件分别如下
- base_local_palnner_params.yaml
- costmap_common_params.yaml
- global_costmap_params.yaml
- local_costmap_params.yaml

具体的参数配置信息参见http://wiki.ros.org/base_local_plannerhttp://wiki.ros.org/costmap_2d
博主在仿真过程中发现对导航效果有较大影响的参数如下:
1.基本局部规划器配置(base_local_palnner_params.yaml)
- max_vel_x:机器人的最大线速度,单位是 m/s,对于室内机器人来说0.5就已经很快了。
- max_rotation_vel:机器人的最大旋转速度,单位是 rad/s,不要把这个值设的过高,不然机器人会错过目标方向。
- yaw_goal_tolerance:至多距离目标方向的偏差,把这个值设的太小可能会导致机器人在目标附近徘徊。
- xy_goal_tolerance:至多距离目标位置的偏差,把这个值设的太小可能会导致机器人在目标附近徘徊。注意:不要把最大误差设置的比地图分辨率还小,否则机器人会一直在目标附近徘徊而永远到不了目标。
- pdist_scale:全局路径规划和到达目的之间的权重。
- gdist_scale:到达目的位置和全局路径规划之间的权重。
2.代价地图共同的参数配置(costmap_common_params.yaml)
- inflation_radius:地图上障碍物的膨胀半径,单位为 m,如果机器人不能很好的通过狭窄的地方,则稍微减小这个值,相反,如果机器人不断的撞到东西,则稍微增大这个值。


  • 40
    点赞
  • 293
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值