李阳 卢健 何耀帧
摘 要:自主导航与避障是目前移动小车的发展趋势,本文采用的Fast-SLAM算法,导航和避障阶段采用的全局路径规划A*算法和局部路径规划DWA算法。Arduino支持ROS主题的发送和接收,并执行算法所发下来的指令,间接驱动电机的运转速度。
关键词:自主避障与导航;路径规划;Arduino;ROS
一、研究意义和目的
随着机器人领域的快速发展,自主导航与避障技术发展越来越快,迫切需要一个通用的平台来让研究人员进行二次开发。基于ROS系统的小车易于二次开发,研究人员可以在上面根据自己的需求来做各种各样的开发,但是很多研究人员只是基于ROS系统来研究各种SLAM算法,但是却没有一个平台来实现,本课题研究的就是如何利用开源的算法来搭建自己的小车。有了自己的ROS小车,我们就可以在上面来做很多的后续研究。
二、SLAM技术介绍
SLAM(即同时定位与地图创建)是移动机器人实现自主行走与避障的前提技术。要实现机器人的行走的自主化就必须满足三个基本条件,第一是需要知道自己的实时位置,第二预先建立地图,第三就是路径规划。定位和制图一般是同时进行的。移动机器人在一个未知的环境中开始移动,通过自身携带的传感器和里程计数据生成实时的状态估计从而完成自身的定位。在定位的同时增量式完成地图的构建,为下面的路径规划提供依据。接下来就是路径规划,让机器能在在已建好的地图上快速地规划出一条最优路径,并实时避开动态的障碍物。
本文主要利用基于粒子滤波的Fast-tslam,粒子滤波是结合了蒙特卡洛定位贝叶斯估计的滤波算法,Fast-SLAM算法主要是将每个粒子看成是对当前状态的真实估计,在任何时刻,它都会更新采样的K个样本粒子,保证实时的更新机器人的当前位姿。Fast-SLAM算法可以用在非高斯分布的非线性随机系统,而且计算量需求小,能够很容易的计算出观测值的重要性权重和运动模型的采样,Fast-SLAM完全可以满足机器人导航和定位的实时性,在移动机器人领域应用很广泛。
路径规划从类型上有全局路径规划和局部路径规划。全局路径规划就是机器人在已建立好的环境地图m中快速地规划处一条最优路径。全局路径规划主要有可视图法、栅格法等,全局规划技术已经比较完善,本文运用的是A*算法。局部路径规划主要采用的是动态窗口法(DWA),它是在速度空间中采样多组速度,并模拟机器人在这些速度下一定时间内的轨迹,在采样到多组的运动轨迹之后,对运动轨迹进行评价,然后选取最优轨迹所对应的速度来驱动机器人前进。
三、ROS系统和Arduino控制系统
ROS 會创建一个连接到所有进程的网络。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。总之,ROS对所有的节点进行统一管理。节点与节点通过消息来通信。节点与节点之间使用服务之间直接通信,使用主题进行间接通信。服务是多对一,主题是多对多的关系。
在机器人制图过程中主要有激光扫描的数据和里程计数据,里程计数据主要有编码器提供。激光采集到的数据和里程计数据有各自的节点处理,SLAM算法则运行在另外一个节点,节点与节点之间通过订阅和发布主题来进行通信,能够互相之间互不干扰地接收和发布消息。这能就能够实现机器之间的实时通信和数据关联的同步性,即使其中的一个节点出现错误也不会影响其他节点之间的联系,从而保证节点之间的独立性。
Arduino是一个开源的电子平台,它支持多种操作系统,支持C语言的开发环境。Arduino能通过各种各样的传感器来感知环境,通过控制电平高低和电压的高低来控制灯光,马达和其他装置,板子上的微控制器可以通过Arduino的编程语言来编写程序,从而来控制电机的转动。Arduino IDE支持在linux系统上运行,因此我们可以把它融入到ROS网络中,建立Arduino节点,接收ROS网络中的主题,通过接收到cmd_vel消息中导航算法期望的前进线速度和角速度,然后把收到的线速度和角速度转化为小车左右轮的速度。经过Arduino开发板的计算,从而做到对小车按照自己算法要求的速度前进。通过Arduino不断的执行上层导航算法发出来的线速度和角速度命令,然后通过发送主题消息,Arduino不断地反馈小车的当前线速度和角速度给上层算法,然后由上层导航算法来确定下一步的运动,从而完成小车的自主导航和避障。
四、总结
本课题主要对如何搭建ROS小车进行了深入研究,研究了实现小车制图和定位所用的Fast-SLAM,Fast-SLAM相对于其它SLAM算法有着较快的运算速度,能满足大部分的硬件需求。路径规划采用A*算法,它能在短时间内迅速寻找出一条最优路径,然后局部路径规划实现自主避开动态障碍物,Arduino开发板接收上层算法发下来的指令,然后经过机器运动模型分解到左右轮的速度,然后经过驱动板驱动电机按照目标速度来执行,从而实现了机器人的自主导航与避障。并从实验角度验证了自己方法的可行性。本文从全局角度分析了ROS小车的各个模块,研究者可以按照上述的模块快速的搭建自己的ROS小车,也根据需要研究需要验证自己的SLAM算法,能为研究者提供一个良好的研究平台。
参考文献:
[1]陈卓,苏卫华,安慰宁,秦晓丽.移动机器人SLAM与路径规划在ROS框架下的实现[J].医疗卫生装备,2017(02).
[2]安峰.基于开源操作系统ROS的机器人软件开发[J].单片机与嵌入式系统应用,2017(05).
[3]林海,陈俊同,陈家裕,王康泽.基于ROS的无线图传小车设计研究[J].机械工程师,2016(05).