基于gazebo仿真环境的移动机器人导航仿真

摘要:实现移动机器人同时定位与建图技术和路径规划技术是让机器人真正智能化的前提。针对机器人自主导航问题,本文在gazebo仿真环境下,利用开源软件包Gmapping提供的算法完成了机器人的自定位与手动地图构建,在此基础上结合move_base软件包相关的路径规划算法完成了移动机器人自主移动建图、路径规划以及自主避障功能。仿真结果表明,该系统能够满足移动机器人在陌生环境下的自主导航需求。

关键词:SLAM;路径规划;移动机器人

0引言

在陌生环境中实现移动机器人的自主避障和导航一直是机器人相关研究领域的热点。机器人自主导航技术的实现关键在于如何解决机器人在陌生环境中的定位与路径规划问题。一方面。基于里程计惯性导航的实现,往往因为惯性传感器长时间的累积误差,极易造成机器人航迹计算偏差,无法满足移动机器人定位与路径规划的精度要求。另一方面,采用GPS信号的卫星导航技术,存在室内环境信号弱,定位误差大,且极易受到天气与环境影响等问题。显然可以知道,传统上的自主导航技术满足不了移动机器人自主导航的需求[1]。及时定位与地图构建SLAM技术的提出可以有效的解决传统上导航技术的缺陷。

ROS(robot operating system)是一个开源的机器人操作系统。它提供了很多关于机器人的硬件抽象、以及常用功能的实现,使得机器人的开发更加便捷迅速,很快在机器人研究领域成为研究热潮。ROS 中有很多封装好的代码,用于实现一些常用功能,可以使人们在开发机器人中把研究重点放在核心算法的研究和改进上,极大地提高机器人开发效率

因此本文通过ROS中开源的功能包对移动机器人实现自主移动建图和路径规划并进行仿真。

1移动机器人模型和仿真环境搭建

对于机器人模型和仿真环境本人就不过多赘述,在ROS/gazebo仿真环境下搭建的机器人模型和仿真环境如下图1、图2所示。

图1移动机器人模型

图2仿真世界模型

2 移动机器人自主导航系统设计

2.1.导航相关概念

机器人的自主导航系统主要包括定位模块、坐标变换模块、里程计模块、路径规划模块以及传感器模块等[2]。其整体系统结构如下图所示。

图3 ROS导航模块

2.2 SLAM建图

SLAM算法有很多比如gmapping、hector_slam等,由于Gmapping 建图算法原理相较于其他算法比较简单,而且使用该算法构建出的地图也非常精确。因此本文选用Gmapping算法进行地图构建。Gmapping建图其实使用的是基于2D 激光雷达的RBPF算法完成二维栅格地图构建的SLAM 算法[3]。RBPF 的关键是根据观测数据 Z1:t和里程数据u0:t 来估计机器人处于潜在位姿 X1:t下的后验概率 p(X1:t|u0:t, Z1:t),然后利用此概率来计算地图和位姿的联合后验概率:

该概率可被有效地求出,因为地图的概率p(m|X1:t, Z1:t)可以由 X1:t和 Z1:t计算得出。为估计位姿的后验概率 p(X1:t|u0:t, Z1:t),RBPF采用粒子滤波方法,使每个粒子样本都对应一个独立地图。每个地图都根据对应粒子的环境观测数据Z1:t 和位姿X1:t创建。

在ROS中提供了用于机器人在室内环境下定位与建图的Gmapping软件包,该节点名为slam_gmapping,该节点方便调用。通过编写gmapping节点相关的launch文件包括机器人基坐标系、里程计坐标系、地图坐标系以及地图更新频率激光雷达探测的最大可用范围(超出这个值,将会被截断)等参数设置。完成launch文件的编写后,先启动gazebo仿真环境,然后在启动地图绘制的launch文件,在终端输入键盘控制节点命令,用于控制机器人完成运动建图。在gazebo中机器人激光雷达显示和rviz可视化环境下移动机器人构建地图,如下图4、图5所示。

图4地图构建下gazebo中画面

图5 rviz中仿真建图结果

2.3路径规划

路径规划是导航中的核心功能,在ROS的导航功能包集navigation中提供了move_base功能包,用于实现此功能。Move_base可以根据给定的目标点,控制机器人运动至目标位置,并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息。Move_base在global_costmap全局代价地图上实现全局路径规划,在local_costmap上实现局部路径规划。Move_base软件包运行时需要加载编写的配置文件,实现移动机器人的自主导航。相关的配置有:通用配置文件;全局代价地图配置文件;局部代价地图配置文件以及基本的局部规划器参数设置。

(1)通用参数配置

通用参数配置文件主要用于move_base在全局路径规划和局部路径规划时调用的参数配置,比如机器人的尺寸、距离障碍物的安全距离以及传感器信息等。在此配置如下:

其中,robot_radius参数配置圆形机器人的半径;obstacle_range配置雷达探测障碍物的最大范围;ray_range表示障碍物最小引入代价地图的距离;observation_sources参数定义构建代价地图传感器的来源;

(2)全局代价地图参数配置配置

该文件用于全局代价地图参数设置。配置如下:

其中,global_frame与robot_base_frame定义全局地图与机器人本体坐标系统;update_frequency定义代价地图的更新频率;pubilish_frequency 定义代价地图的发布频率;static_map代表是否使用地图服务器或者一个地图来初始化全局代价地图;inflation_radius代表膨胀半径,扩展在碰撞区域以外的代价区域使得机器人规划路径避开障碍物;cost_scaling_factor代表代价比例系数,越大则代价值越小。

(3)局部代价地图参数配置

局部代价地图用于规划机器人遇到障碍物时自主避障行为,该文件配置如下:

版权声明:本文为博主作者:Sihu Zhao原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/zhao_sihu/article/details/129591331

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年1月16日
下一篇 2024年1月16日

相关推荐