基于视觉SLAM 的自主导航无人车研究

2021-06-29 06:56德州学院班潇予朱恒伟苏世耀赵爱杰李文文毕森宇
电子世界 2021年10期
关键词:建图树莓栅格

德州学院 班潇予 朱恒伟 苏世耀 赵爱杰 李文文 毕森宇

具有自主导航能力且能够在未知环境下正常运行的无人车成为了全球研究热点,其中定位与SLAM建图技术可为无人车自主导航提供实时的环境信息和位置信息。该技术是为了解决无人车在完全陌生的环境下通过无人车的自身传感器来构建地图且实现无人车的自身定位。本文在对SLAM技术理论研究的基础上,结合当前SLAM研究中的主流算法开展研究工作,旨在实现无人车的自主定位与导航。

基于视觉SLAM的自主导航无人车主要是通过使用导航定位来实现在未知环境中的运动。让无人车感知自身状态与周围环境,使其完成其他更加复杂的任务,如:路径规划、导航、避障等基础功能,其具有高精度的定位性,车体前部装有激光雷达向目标发射探测信号,然后将接收到的从目标反射回来的信号与发射信号进行比较。使用usart1和树莓派进行通信。串口通信是SLAM无人车的核心内容,主要是将基础的传感器数据(自身位姿、运动状态、电源管理数据、障碍物信息、充电桩信息等)和无人车系统之间搭建桥梁,使得无人车能够在ROS系统中建立运动模型。

1 SLAM技术研究与应用现状

同步定位与建图(SLAM)技术能对无人车进行实时航行环境感知和自身定位,为无人车自主导航提供关键信息。近年来,其成为智能化机器人领域研究的前沿技术,以席卷之势颠覆了多个领域。从早期的扫地机器人在家庭中的应用,到新兴技术增强现实、虚拟现实在舞台表演、医疗、游戏等领域的应用,再到近期的百度、谷歌无人驾驶汽车,其核心技术都涉及SLAM。而随着计算机视觉技术的逐渐兴起,并且视觉传感器具有较多优点,例如成本低、小型化等。

鉴于当前视觉SLAM技术的应用,且随着科技的发展,人工智能的持续突破,设计制造一款基于视觉SLAM的自主导航无人小车来代替配送员实现非复杂路线的导航及配送功能,这不仅减少了人与人接触感染的风险,还能大大的提高配送效率,更加方便、快捷、安全。无人车作为广义上的移动机器人,简化仿人机器人的运动形式,从而能够更加专注于解决具体问题,脱离传统导航系统的束缚以实现真正自主化,视觉SLAM技术则是能应用于无人机上实现自主导航的关键。

2 基于视觉SLAM的算法分析

在构建地图时,SLAM是最常用的工具,建图主要由无人车的定位与其环境地图的建立两大部分组成。在实现无人车自主导航的模型构建中,即使将一辆无人车放在未知环境中的任意位置,也能使无人车在移动过程中可以随时构建出该环境中完整的地图(完整的地图是指无人车在进入房间时可以灵敏的躲避障碍,该障碍也就是熟知地图中的障碍点)。定位与建图相辅相成、互相影响。

2.1 Gmapping建图算法分析

Gmapping建图算法主要应用在此无人车中。在建图时,首先应参考已知地图,并从中获得无人车的坐标和方向。若想得到障碍物距无人车的距离,应先找到无人车的具体定位,并使用无人车中的激光雷达扫描障碍物,即可测得障碍物距无人车距离。综上,第一步在建图过程中已知无人车的精准位置(朝向与坐标位置),且在第二步计算出障碍物距无人车的距离。在扫描算法中主要采用bresenham直线段,在无人车所处的栅格与障碍物栅格之间画直线。在扫描算法中,也能用概率去表示被占的栅格。用两个激光束分别扫描并标记为occupy,因此被占据的栅格概率也就会随之变大,相反,栅格的概率变小。所以即可使用二维栅格的地图来表示无人车处的环境。

2.2 Hector slam建图算法分析

Hector slam算法一般情况下都会遇到scan-matching问题,为了解决此问题,引入了高斯牛顿的方法,因此传感器要求应更加灵敏。

优点:实现了空中无人机及地面小车在恶劣环境中建图的运用,不使用里程计;从得到的地图中进一步优化激光束点阵,估计激光点所占网格的概率,和其在所构建地图中的位置信息;利用高斯牛顿方法,可以使其在已有地图的刚体变换中获得激光点集的映射。

缺点:运算过程中,在保证由于测量而引起的噪声较低的情况下,且要求雷达(LRS)在每秒钟的更新频率尽可能高。因此,在图形制作时,如果想得到较为理想的建图效果,就必须将robot速度控制在一个偏低的范围内。在运算过程中可能会出现里程计信息使用无效的情况,即使该无效信息是在相比之下较为准确的里程计数据。

2.3 Cartographer建图算法分析

基于谷歌的slam建图项目Cartographer,视觉摄像头可设置在顶部并进行实时网格划分,达到5cm级精度的2D网格图像。在生成一个子图后,会先进行一次局部的回环,完成所有子图后,再进行全局的回环。

3 无人车模型搭建及导航

3.1 无人车运动模型的搭建

给定一个坐标系,若想无人车实现运动则必须依附于给定的坐标系。右手笛卡尔坐标系则被广泛应用其中。使用该坐标系时应先握紧右拳,其右手大拇指所指方向为Z轴,右手中指所指方向为Y轴,右手食指所指方向为X轴。而对于无人车来说,在控制运动过程中,其实不难发现无人车的运动实质上就是在二维平面内(对应右手笛卡尔坐标系的XY轴平面)进行的,因此无人车无论在做何种运动,其Z轴方向的线速度始终为0,也可认为无人车在Z轴方向不做运动。从而得出结论,无人车在Y轴方向的角速度不为0,而线速度为0;在Z轴方向的角速度不为0;而在X轴方向的角速度为0且在Y轴方向角速度也为0。

航迹推演(Odometry)常用于无人车底层开发程序中的导航定位和一般方向控制。其中,不仅能估计无人车的位姿,还有一个很重要的是无人车行进速度与左右轮速度、转向角速度w之间的转换关系。运动学模型的正确解释是将无人车的轮速转化为笛卡尔右手坐标系中的X、Y方向上的线速度和Z方向上的角速度。图1中θ1为两个相邻时刻内无人车旋转的角度,θ3为相邻两时刻内无人车航向角之差。l是左右轮之间的间距,d是右轮比左轮多走的距离,r是移动机器人圆弧运动的半径。

图1 相邻时刻的位姿态

(1)无人车在每秒钟的前进速度为:

(2)无人车角速度与航向角计算。如图1所示,将两个不同时刻、不同位置的无人车加到一起,则可以看出无人车航向角变化量θ3。从图中可以看出:

(3)无人车航向角变化的度数等于圆心旋转的度数。让无人车绕其中心旋转一周(做圆周运动),此时便可知道无人车的航向角为360°,其绕圆心运动的角度也为360°。最终便可得到公式:

则无人车绕圆心运动的角速度就等于航向角变化的速度:

3.2 基于ROS的导航

首先将ROS安装在树莓派系统中,并设置树莓派的网络环境;其次需要将与树莓派相同版本的ROS安装在Ubuntu主机上,Ubuntu主机网络连接网络后,再将其主机配置为ROS网络;随后Ubuntu主机通过SSH连接树莓派,在SSH连接后的树莓派终端后输入roscore来测试ROS网络。经过以上操作便可开发。

在操作过程中,采用ToF方法,该方法测量了光脉冲从发射器发出,经目标表面反射,返回到图像传感器所经历的时间。

4 车道线检测和行驶

基于opencv的图像处理技术,将无人车放置在车道内通过摄像头采集车道数据,对车道图像进行处理和检测。然后,控制机器人在车道线内移动,同时实现大弯、小弯、S弯、十字路口等路道检测和运动。测试之前确保已经在地面粘贴了车道,车道内部为白板、边线为黑色。同时布置好摄像仪器,其位置在正前偏下。

当所有操作完成后,开始让无人车移动。打开新的终端,通过rosparam set设置参数,rosparam get查看参数。当StartMove设置为true时,无人车开始沿着车道移动。在移动过程中我们可以调节大弯和小弯的MaxKP,MixKP参数。不同的参数无人车转弯或发生变化,参数越大无人车的调节就会更快,转弯半径也会增大。

结论:本文通过对SLAM建图及其算法进行分析,设计出一种基于SLAM建图的的无人车,并进行无人车运动模型的搭建。选择室内布置道路进行车道线检测和行驶,通过无人车室内道路试验,验证了无人车可以正常的采集道路信息并按照轨迹行驶,且具有良好的操纵稳定性,可以满足设计要求。

猜你喜欢
建图树莓栅格
视觉同步定位与建图中特征点匹配算法优化
基于邻域栅格筛选的点云边缘点提取方法*
基于树莓派的骑行智能头盔设计
基于三轮全向机器人的室内建图与导航
一种基于多传感融合的室内建图和定位算法
基于树莓派的远程家居控制系统的设计
机器人室内语义建图中的场所感知方法综述
响应面法优化红树莓酒发酵工艺
不同剖面形状的栅格壁对栅格翼气动特性的影响
基于CVT排布的非周期栅格密度加权阵设计