泉州信息工程学院,福建 泉州362000
摘要
移动机器人的路径规划技术和同时定位与建图技术是机器人实现真正智能化的前提针对该问题,本文设计实现了一个基于机器人操作系统(ROS)的自主导航小车仿真设计。
现实生活中往往存在GPS信号不稳定,定位误差大等缺点,尤其对于室内环境存在GPS信号不可用的情况,此时传统的定位方法不在适用。同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)技术是解决在机器人在无GPS等外部定位信息时进行自主定位的最佳手段。该问题是指移动机器人在陌生环境中利用自身传感器数据,使用开源软件包Gmapping提供的算法,实现自身定位且利用定位信息在定位过程中逐步构建环境地图。SLAM技术是移动机器人自主化,智能化的重要手段,因此近十几年以来,该问题始终在机器人研究领占据着重要地位。ROS(robot operating system)是一个开源的机器人操作系统。基于A*的路径规划算法和基于DWA的局部避障算法在ROS中被封装为Navigation的软件包,该软件包能够实现在已知地图和未知地图的环境中机器人的路径规划和自主避障功能。文中基于ROS系统,设计实现了基于ROS的机器人导航和建图的软件系统,并利用Gazebo3-D仿真验证系统的实用性。
关键词:ROS SLAM技术 Gmapping算法 自主定位导航 Navigation A*算法Gazebo3-D
1 绪论
1.1 课题研究背景及意义
随着时代的发展传统的仓储物流、工厂、室内停车场,由于人工成本越来越高工作效率低,对多功能智能车的需求也越来越多,智能车由于应用非常广泛且实用越来越受到重视。智能车可以利用各种传感器获取外部环境信息,根据具体需要对不同的信息自动做出反应实现特定的功能,可以应对各种复杂危险的工作环境,工作效率高可以24小时不间断工作,大大降低成本提高工作效率。
1.2 国内外研究现状
1.2.1 智能车研究现状
随着互联网、人工智能、计算机硬件和软件技术发展越来越快,国内外高校和科研机构都展开了智能车的研究。在1966年到1972年间斯坦福研究院的人工智能中心研制了移动机器人Shakey。虽然Shakey只能解决简单的感知问题,做一些简单的路径规划,但在那个时代成功代将人工智能应用在移动机器人中。在2010年Willow Garage公司发布了两轮差速移动机器人TurtleBot。 TurtleBot采用ROS系统设计,作为-款开源硬件平台TurtleBot可以进行图像处理、通信、定位和避障。 TurtleBot的出现促进了智能移动机器人爱好者、科研教育机构对智能移动机器人的研究。
2 基于ROS的系统设计
2.1 准备工作
2.1.1 新建工作空间
当我们电脑上虚拟机以及Melodic版本的ROS安装完成后,鼠标右击打开新的终端,输入代码新建一个工作空间。代码如下:
Mkdir -p ~/car_ws/src
cd car_ws/src
~/car_ws/src$ catkin_init_workspace
此时工作空间是空的,但是可以进行编译:
~/car_ws/src$ cd ..
~/car_ws$ catkin_make
注册:
~/car_ ws$ source devel/setup.bash
2.1.2 下载源码包
cd ~/car_ws/src
git clone https://github.com/xmy0916/racecar.git
2.1.3 下载相应插件
sudo apt-get install ros-melodic-driver-base
2.2 编译运行
2.2.1 编译
编译所用代码如下:
~/car_ws$ catkin_make
2.2.2 添加环境变量
再次编译就编译成功,编译之后就添加环境变量。
echo “source ~/car_ws/devel/setup.bash” >> ~/.bashrc
source ~/.bashrc
2.2.3 运行小车模型
roslaunch racecar_gazebo racecar.launch
刚打开的时候可能看不见小车,是因为小车有一个初始位置,偏离了坐标原点,需要用鼠标移动一下Gazebo的视角就可以看见了。
2.2.4 启动地图运行轨道
先将小车模型以及代码终端删除后,鼠标右击打开新终端,输入代码如下:
roslaunch racecar_gazebo racecar_runway.launch
2.2.5 启动Rviz进行建图
在执行这一步的时候轨道地图不用删除,鼠标右击再打开新的终端,输入代码如下:
roslaunch racecar_gazebo slam_gmapping.launch
然后鼠标点击轨道地图的TK窗口,通过键盘上的W、A、S、D键来对小车模型进行前后左右运动,小车模型在运动的时候Rviz中也在不断的绘制当前的地图,在Rviz的左下角窗口还可以看见小车的视角,可以看见障碍物。Rviz进行建图。
2.2.6 保存地图
我们在上一步通过Rviz进行对轨道地图的绘制,绘制完成后我们需要保存绘制的地图,鼠标右击打开新的终端,输入代码如下:
rosrun map_server map_saver -f test_map
默认是保存在主目录下(home)的,把它复制到我们工作空间的map文件夹下面,map文件夹的地址:(~/car_ws/src/racecar/racecar_gazebo/map)。
2.3 自主导航
2.3.1 启动导航和环境地图
roslaunch racecar_gazebo racecar_runway_navigation.launch
2.3.2 启动Rviz
roslaunch racecar_gazebo racecar_rviz.launch
2.3.3 启动导航脚本
rosrun racecar_gazebo path_pursuit.py
在操作完以上三个步骤后,小车模型就可以自主导航运行,此外环境轨道地图我们也可以在gazebo中进行手工制作不同的地图同时也可以添加障碍物。
3 结论
文中利用ROS提供的模拟环境Gazebo以及Gmapping等相关软件包,设计实现了用于小车模型定位与建图的SLAM系统,同时又利用ROS中提供的导航功能包,设计实现了基于ROS的小车模型导航系统。实验仿真结果表明,该仿真设计系统能够在搭载激光雷达传感器的小车模型中实现室内环境的定位、建图和导航等功能。对实际小车的应用具有一定的指导价值。但是本文只是在模拟环境中实现了该系统的仿真,后续将在此系统的基础上修改相关节点驱动,将模拟的激光雷达和小车模型等替换成真实的小车驱动,把本系统设计应用于真实小车中。
参考文献
[1]汤巍 基于ROS智能小车自主导航的系统设计 安徽工业大学,2020
[2]胡显桂 智能小车定位导航系统的设计与实现 宁夏大学,2020
[3]张建伟 开源机器人操作系统[M] 北京:科学出版社, 2012
[4]苑全德 基于视觉的多机器人协作SLAM研究[D] 哈尔滨:哈尔滨工业大学,2016
[5]曹文慧 基于ROS的智能物流小车多目标点自主导航技术研究 沈阳工业大学,2021