基于计算机视觉与机器学习的无人扫地车充电对接方法
未命名
07-22
阅读:57
评论:0

1.本发明属于无人车自动驾驶领域,涉及一种基于计算机视觉、机器学习及扫地车的无人车充电对位控制,应用于开放场景下工业园区内扫地车的自动充电对接场景。特别针对于点到点的路径规划、车辆控制转弯、摄像头识别等问题,判断机器人与车辆及行人之间的距离确保对接过程中的安全,最终将算法在jetson xavier中运行。
背景技术:
2.随着计算机技术的发展以及社会需求的不断提升,越来越多的扫地车出现在人们的的生活中。这些扫地车的出现替代了人工,提升了工作效率,降低了成本,然而扫地车的充电问题是一大难点,急需得到解决。目前扫地车充电对接主要依靠传感器及摄像头进行对接。
3.利用传感器对接主要用到了超声波传感器及红外传感器。超声定位技术是一种早期技术,利用超声波传感器进行定位导向,但此方法需要经过多次反复测量,因此耗时较长。红外传感器技术也是一种相对成熟的定位对接技术,红外传感器具有光束发散小的特点,相对于超声定位技术,红外测量的精度有了很大的提高,但只适用于短距离的对接。
4.利用摄像头对接是许多新能源汽车公司使用的方法。主要是将车辆行驶到充电区域,然后在机械臂末端加上单目或双目摄像头,配合视觉图像算法进行充电口的识别并定位。但该方法受光线影响较大。
技术实现要素:
5.针对上述技术存在的问题,本发明提出一种基于计算机视觉与机器学习的无人扫地车充电对接方法:首先扫地车在室外的工业园区的道路上进行扫地工作,园区内有一个固定的充电桩用来给扫地车进行充电。在第一次作业时,接收rtk数据,绕着工业园区进行地图打点,建立园区的道路地图。扫地车进行扫地作业时,发现电量不足时自主充电。首先是接收rtk和imu的数据,然后在地图上设置充电桩的数据,运行q-learning算法,将扫地车当前的位置与充电桩的位置进行路径规划,在扫地车运动到充电桩的位置时,实时检测行人和车辆,如果检测到行人和车辆,就控制扫地车停止,然后重新用q-learning算法规划一条新的路径,如果没有检测到行人和车辆,就按照原始的路径进行运动,直至扫地车运动到充电桩的位置,然后识别并定位二维码的位置,控制扫地车进行对接,能在工业园区实现扫地车的避障及自动充电。
6.本发明所采用的技术方案是:一种基于计算机视觉与机器学习的无人扫地车充电对接方法,包括扫地车以及固定在园区内的充电桩,
7.扫地车与充电桩的充电对接方法包括:
8.接收rtk数据并进行地图打点,扫地车绕着园区内需打扫道路进行地图打点,建立园区的道路地图,在地图上设置充电桩的位置信息;
9.扫地车进行扫地作业过程中,电量不足时自主充电,首先接收rtk和imu的数据,然
后根据地图上充电桩的位置信息,运行q-learning算法,将扫地车当前的位置与充电桩的位置进行路径规划,在扫地车运动到充电桩的位置时,实时检测行人和车辆,如果检测到行人和车辆,就控制扫地车停止,然后重新用q-learning算法规划一条新的路径,如果没有检测到行人和车辆,就按照原始的路径进行运动,直至扫地车运动到充电桩的位置,然后识别并定位二维码的位置,控制扫地车进行对接充电。
10.在上述方案的基础上,作为优选,接收rtk数据并进行地图打点:接收rtk板卡反馈的原始数据,进行截取后生成可以使用的数据,rtk反馈的数据是经纬度坐标以及高度信息,从而得到扫地车的坐标位置,利用rtk绕着区域边缘打点绘制地图,将地图边缘的经纬度坐标存在列表中,最后将地图进行珊格化,将经纬度坐标转换为xy坐标,园区内有一个固定的充电桩进行充电,将此充电桩的坐标转换并记录在地图中。
11.在上述方案的基础上,作为优选,接收rtk数据并进行地图打点的步骤包括:
12.(1)通过ros系统中的话题节点订阅rtk板卡发布的原始数据;
13.(2)对订阅到的rtk原始数据进行截取转换,分别得到经度,纬度以及海拔高度;
14.(3)将截取得到的经纬度以及高度使用高斯投影转换成平面坐标,方便后面的地图栅格化和路径规划;
15.其中高斯投影公式如下:
[0016][0017][0018]
其中l(b)为赤道到投影点的子午线弧长;为卯酉圈半径;t=tanb;l=l-l0为经差;l0为子午线经度;
[0019]
将rtk反馈的大地坐标转换为独立坐标即xy坐标后,就可以对地图进行栅格化处理,从而得到每个栅格的xy坐标。
[0020]
在上述方案的基础上,作为优选,通过欧拉变换可以得到起电子罗盘作用的yaw,获知扫地车的运动方向,
[0021]
接收imu数据并进行转换包括:
[0022]
(1)订阅imu发布的节点,获得imu反馈的初始数据,其中包括线速度、加速度、方向角数据;
[0023]
(2)对这些数据进行转换,将四元数转换欧拉角;
[0024]
四元数的表现形式,公式q=q0+q1i+q2j+q3k,其中,q0、q1、q2、q3是实数,q0称为实部,q0+q1i+q2j+q3k为虚部,单位四元数记作e=(e0,e1,e2,e3),
[0025]
将四元数转为欧拉角需要旋转矩阵,用四元数表示:
[0026][0027]
欧拉角中的航向角yaw值,航向角是刚体围绕参考系的z轴方向进行旋转得到的角度,航向角用旋转矩阵表示:
[0028][0029]
根据公式可知:
[0030][0031]
已知求只需做一次矩阵逆变换便可求出:
[0032][0033]
又因为:
[0034][0035]
对比两式可解出:
[0036]
γ=sin-1
(2(q1q
3-q0q2))
[0037][0038][0039]
此时就是所需要的偏航角yaw值。
[0040]
在上述方案的基础上,作为优选,检测行人与车辆包括运用oak-d摄像头检测行人与车辆,并进行标定。
[0041]
在上述方案的基础上,作为优选,oak-d摄像头利用训练好的神经网络模型进行检测,oak-d摄像头检测到行人和车辆后,在地图中进行标注,并将此位置设置为不可通行的位置,随后用q-learning规划新的路径。
[0042]
在上述方案的基础上,作为优选,训练好的神经网络模型包括:
[0043]
(1)从bdd100k中下载自动驾驶所用到的数据集;
[0044]
(2)使用labelimg打标签工具进行图像标注,将图像主要分为车辆和行人两种类别;
[0045]
(3)标注完后生成json文件并进行转换生成mask;
[0046]
(4)将mask标签的图像和原始图像进行数据增强,增强方法主要有放大,缩小,旋转操作;
[0047]
(5)将增强后的数据集生成训练集、验证集以及测试集;
[0048]
(6)使用yolox网络模型进行模型训练;
[0049]
(7)将训练完的网络模型转换为blob格式,然后将转换后的模型放入oak-d摄像头中;
[0050]
(8)将oak-d摄像头连接xavier开发板;
[0051]
(9)创建一个oak摄像头管道对象;
[0052]
(10)在创建的管道对象上创建一个神经网络对象,将上面放入oak-d中训练好的yolox网络模型赋值给神经网络对象;
[0053]
(11)创建彩色输出流对象;
[0054]
(12)创建神经网络输出流对象;
[0055]
(13)将彩色输出流对象与神经网络输出流对象相融合,进行行人和车辆的检测;
[0056]
(14)编写ros节点,发布检测到的行人和车辆的中心坐标;
[0057]
(15)订阅刚刚发布的节点,接收行人和车辆的中心坐标,在栅格化的地图中将行人和车辆标注,设为不可通行;
[0058]
(16)更新奖励矩阵r的值,将相应点的值设为-1。
[0059]
在上述方案的基础上,作为优选,利用q-learning进行路径规划包括:
[0060]
(1)获取栅格化后地图的长和宽;
[0061]
(2)根据地图的长和宽建立q-learning地图节点列表;
[0062]
(3)建立大小为长*宽的奖励矩阵r,并且初始化为0;
[0063]
(4)根据建立的地图节点列表给奖励矩阵r赋值,可以到达赋为0,不能到达赋为-1;
[0064]
(5)创建状态矩阵q,赋值为0;
[0065]
(6)根据以下公式更新q矩阵,
[0066]
q[state,action]=r[state,action]+gamma*max[q[next action,all actions]]
[0067]
其中state是机器人目前的位置,称之为状态,action是机器人下一步将要到达的位置,称之为动作,gamma是学习率。根据上述公式就是计算q矩阵中相应state和action的值,直至将状态矩阵q更新至拟合;
[0068]
q-learning算法步骤:
[0069]
(7)初始化学习率gamma的值和奖励矩阵r的值;
[0070]
(8)初始化q矩阵的值为0;
[0071]
(9)从机器人当前状态下的所有动作中选择出一个给出最大q值的状态和状态;
[0072]
(10)更新当前q值为此时的r值加学习率与最大q值的乘积;
[0073]
(11)将上面对应的下一个状态改为目前的状态;
[0074]
(12)如果此时状态不是目标状态,更新上述步骤直至到达目标状态。
[0075]
在上述方案的基础上,作为优选,控制机器人移动到对接点后,利用摄像头和二维码进行对接,摄像头可以识别并定位出二维码的位置,然后根据二维码相对于机器人的位置得出充电桩相对于机器人的位置,从而控制机器人进行对接,包括步骤:
[0076]
(1)利用python自带的库,即qrocde生成一张二维码;
[0077]
(2)设置二维码的尺寸,二维码在官方文档中有40个尺寸,称为为version,尺寸与version存在线性关系,version 1是21
×
21的矩阵,version 2是25
×
25的矩阵,每增加一个version,尺寸都会增加4,故尺寸size与version的线性关系为:
[0078]
size=(version-1)*4+21
[0079]
官网最大的version值是40,所以尺寸的最大值是(40-1)*4+21=177,所以是177
×
177的矩阵,信息越多,version就越大,尺寸就越大,为了方便定位和识别二维码,这里设置二维码的尺寸为25
×
25;
[0080]
(3)将创建的二维码进行灰度化处理,使用加权平均法进行灰度化效果最好,公式如下所示:
[0081]
gray(i,j)=0.299*r(i,j)+0.578*g(i,j)+0.114*b(i,j)
[0082]
(4)利用大津法进行图像二值化处理,大津法可以根据图像进行自定义的阈值选取,用于二值化效果最好,公式如下:
[0083]
1.记sum为图像像素总数;
[0084]
2.计算背景像素的占比:
[0085]
3.计算前景像素的占比:
[0086]
4.计算背景的平均灰度值:
[0087]
5.计算前景的平均灰度值:
[0088]
6.计算灰度区间的灰度累计值:μ=μ1*w1+μ2*w2;
[0089]
7.计算类间方差:g=w1*(μ-μ1)2+w2*(μ-μ2)2;
[0090]
8.将值带入,最终化简得到公式:g=w1*w2*(μ
1-μ2)2;
[0091]
(5)根据二值化后的图像的像素值定位二维码中的三个特征点,从而定位到整个二维码的位置,根据二维码在画面中的位置控制机器人进行对接。
[0092]
与现有的充电对接方法相比,本发明具有以下效益:
[0093]
(1)建立地图并进行栅格化产生的效益在于:机器人可以完全靠自己进行路径规划和避障。现有的充电对接方法大部分都是人工控制机器人或车辆接近充电区域,然后再进行充电对接。本发明提出的方法在建立地图并进行栅格化后,就可以让机器人根据栅格化后的地图自行运动到充电区域,再进行高精度的对接。同时检测到障碍物后可以在地图上标记,有障碍物的区域就不可通行,自行绕过,提高了对接过程的安全性。
[0094]
(2)用q-learning算法进行路径规划产生的效益:现有的车辆机器人进行路径规划主要有基于传统车辆运动学的路径规划算法,这种算法需要对车辆进行数学建模,结合车辆的各种信息,建立运动学方程推导,这种方法对车的模型的要求较高,对环境要求也较高,成功率也不高。还有一种基于智能仿生的算法,如蚁群算法,这需要很多周围环境的感知,需要建立环境模型,所以对环境要求较高,同时如果反馈不够或反馈过剩,都会影响算法的准确度。利用q-learning算法进行路径规划就无需建立环境模型,对环境的要求不高,还不需要过多参数,普适性很高,同时可以保证收敛性,还可以离线工作。
[0095]
(3)imu和rtk相结合产生的效益:现有的大部分算法都只利用rtk进行工作,在大
部分情况下rtk是可以工作的,但在隧道里或者车辆接近建筑物时,rtk的精度就会产生较大的影响,对机器人的路径规划产生了许多困难。此时将imu和rtk相结合,在rtk不能较好工作时,结合imu反馈的车辆的位姿信息,及时调整车辆,使其能按正常的路径行驶。
[0096]
(4)采用oak摄像头检测产生的效益:在进行障碍物识别时通常使用激光雷达进行识别,虽然激光雷达识别准确,但其对距离有较高的影响,距离过远会影响识别效果,距离过近还会检测不到障碍物,并且激光雷达十分昂贵,成本过高。因此用oak摄像头进行检测,无论是白天还是黑夜,都能得到十分清晰的画面,同时检测距离很远,视角范围大,不容易出现漏检的情况。
附图说明
[0097]
图1算法总体流程图;
[0098]
图2q-learning算法伪代码;
[0099]
图3改进后q-learning算法流程图;
[0100]
图4路径规划流程图。
具体实施方式
[0101]
如图1-4所示,一种基于计算机及机器学习的扫地车充电对接方法,包括如下步骤:
[0102]
1.接收rtk数据并进行地图打点
[0103]
接收rtk板卡反馈的原始数据,进行截取后生成可以使用的数据。rtk反馈的数据是经纬度坐标以及高度信息,从而得到机器人的坐标位置。利用rtk绕着区域边缘打点可以绘制地图,将地图边缘的经纬度坐标存在列表中,最后将地图进行珊格化,将经纬度坐标转换为xy坐标,工业园区内有一个固定的充电桩进行充电,将此充电桩的坐标转换并记录在地图中。主要步骤如下:
[0104]
(1)通过ros系统中的话题节点订阅rtk板卡发布的原始数据。(2)对订阅到的rtk原始数据进行截取转换,分别得到经度,纬度以及海拔高度。(3)将截取得到的经纬度以及高度使用高斯投影转换成平面坐标,方便后面的地图栅格化和路径规划。
[0105]
其中高斯投影公式如下:
[0106][0107][0108]
其中l(b)为赤道到投影点的子午线弧长;为卯酉圈半径;t=tanb;l=l-l0为经差;l0为子午线经度。
[0109]
将rtk反馈的大地坐标转换为独立坐标即xy坐标后,就可以对地图进行栅格化处理,从而得到每个栅格的xy坐标。
[0110]
2.接收imu数据并进行转换
[0111]
imu又称惯性测量单元,可以反馈机器人在三维空间的加速度和角速度,以此可以得知机器人的位姿信息。由于imu反馈的原始数据都是xyz三个轴的信息,在充电对接时需要机器人的车头朝向,从而控制机器人左右转弯,所以在本发明中需要将这些信息转换为欧拉角。欧拉角分为俯仰角、偏航角、滚转角三个角度,偏航角yaw是机器人与地轴之间的夹角,可以知道机器人此时偏转的角度与原计划偏转角度之间的差距,因此我们需要的就是偏航角yaw值,通过欧拉变换可以得到,此时得到的yaw可以起到电子罗盘的作用,可以获知扫地车往哪个方向进行运动。具体步骤如下:
[0112]
(1)订阅imu发布的节点,获得imu反馈的初始数据,其中包括线速度、加速度、方向角等数据。(2)对这些数据进行转换,将四元数转换欧拉角。
[0113]
首先是四元数的表现形式,如公式q=q0+q1i+q2j+q3k所示。其中,q0、q1、q2、q3是实数,q0称为实部,q0+q1i+q2j+q3k为虚部。单位四元数一般记作e=(e0,e1,e2,e3)。
[0114]
将四元数转为欧拉角需要旋转矩阵,用四元数表示形式如下所示:
[0115][0116]
本发明需要用到欧拉角中的航向角yaw值,航向角是刚体围绕参考系的z轴方向进行旋转得到的角度,在本发明中主要是反映车身的倾斜方向和角度以及车身将要转向的方向。航向角可以用如下旋转矩阵表示:
[0117][0118]
根据公式可知:
[0119][0120]
已知求只需做一次矩阵逆变换便可求出:
[0121][0122]
又因为:
[0123][0124]
对比两式可解出:
[0125]
γ=sin-1
(2(q1q
3-q0q2))
[0126][0127][0128]
此时就是本次发明所需要的偏航角yaw值。
[0129]
3.检测行人与车辆
[0130]
运用oak-d摄像头检测行人与车辆,并进行标定。oak-d摄像头可以运行训练好的神经网络模型,然后利用训练好的神经网络模型进行检测。oak-d摄像头已经利用yolox训练好了模型,专门检测行人和车辆,将行人和车辆所在区域进行标定。本发明将自己下载数据集并进行训练,然后将模型进行转换,移植到oak-d摄像头中进行行人和车辆的检测。检测到行人和车辆后,将在地图中进行标注,将此位置设置为不可通行的位置,随后用q-learning规划新的路径。具体步骤如下:
[0131]
(1)从bdd100k中下载自动驾驶所用到的数据集。(2)使用labelimg打标签工具进行图像标注,将图像主要分为车辆和行人两种类别。(3)标注完后生成json文件并进行转换生成mask。(4)将mask标签的图像和原始图像进行数据增强,增强方法主要有放大,缩小,旋转等操作。(5)将增强后的数据集生成训练集、验证集以及测试集。(6)使用yolox网络模型进行模型训练。(7)将训练完的网络模型转换为blob格式,然后将转换后的模型放入oak-d摄像头中。(8)将oak-d摄像头连接xavier开发板。(9)创建一个oak摄像头管道对象。(10)在创建的管道对象上创建一个神经网络对象,将上面放入oak-d中训练好的yolox网络模型赋值给神经网络对象。(3)创建彩色输出流对象。(11)创建神经网络输出流对象。(12)将彩色输出流对象与神经网络输出流对象相融合,进行行人和车辆的检测。(13)编写ros节点,发布检测到的行人和车辆的中心坐标。(14)订阅刚刚发布的节点,接收行人和车辆的中心坐标,在栅格化的地图中将行人和车辆标注,设为不可通行。(15)更新奖励矩阵r的值,将相应点的值设为-1。
[0132]
4.利用q-learning进行路径规划
[0133]
有了rtk与地图之后,就可以进行路径规划。本发明使用改进后的q-learning算法进行路径查找。利用珊格化后的地图的长和宽建立q-learning算法所用的矩阵,从而计算查找路径。本发明提出的改进后的q-learning算法可以绕过障碍物生成新的路径。具体步骤如下:
[0134]
(1)获取栅格化后地图的长和宽。(2)根据地图的长和宽建立q-learning地图节点列表。(3)建立大小为长*宽的奖励矩阵r,并且初始化为0。(4)根据建立的地图节点列表给奖励矩阵r赋值,可以到达赋为0,不能到达赋为-1。(5)创建状态矩阵q,赋值为0。(6)根据以下公式更新q矩阵。
[0135]
q[state,action]=r[state,action]+gamma*max[q[next action,all actions]]
[0136]
其中state是机器人目前的位置,称之为状态,action是机器人下一步将要到达的位置,称之为动作。gamma是学习率。根据上述公式就是计算q矩阵中相应state和action的值,直至将状态矩阵q更新至拟合。
[0137]
q-learning算法的步骤如下所示:
[0138]
(13)初始化学习率gamma的值和奖励矩阵r的值。
[0139]
(14)初始化q矩阵的值为0。
[0140]
(15)从机器人当前状态下的所有动作中选择出一个给出最大q值的状态和状态。
[0141]
(16)更新当前q值为此时的r值加学习率与最大q值的乘积。
[0142]
(17)将上面对应的下一个状态改为目前的状态。
[0143]
(18)如果此时状态不是目标状态,更新上述步骤直至到达目标状态。
[0144]
5.利用摄像头和二维码进行对接
[0145]
控制机器人移动到对接点后,利用摄像头和二维码进行对接。由于摄像头无法识别充电桩,可以用二维码替代充电桩,摄像头可以识别并定位出二维码的位置,然后根据二维码相对于机器人的位置得出充电桩相对于机器人的位置,从而控制机器人进行对接。具体步骤如下:
[0146]
(1)利用python自带的库,即qrocde生成一张二维码。(2)设置二维码的尺寸。二维码在官方文档中有40个尺寸,称为为version。尺寸与version存在线性关系,version1是21
×
21的矩阵,version 2是25
×
25的矩阵,每增加一个version,尺寸都会增加4,故尺寸size与version的线性关系为:
[0147]
size=(version-1)*4+21
[0148]
官网最大的version值是40,所以尺寸的最大值是(40-1)*4+21=177,所以是177
×
177的矩阵。信息越多,version就越大,尺寸就越大。为了方便定位和识别二维码,这里设置二维码的尺寸为25
×
25。(3)将创建的二维码进行灰度化处理,使用加权平均法进行灰度化效果最好,公式如下所示:
[0149]
gray(i,j)=0.299*r(i,j)+0.578*g(i,j)+0.114*b(i,j)
[0150]
(4)利用大津法进行图像二值化处理。大津法可以根据图像进行自定义的阈值选取,用于二值化效果最好。公式如下:
[0151]
1.记sum为图像像素总数。
[0152]
2.计算背景像素的占比:
[0153]
3.计算前景像素的占比:
[0154]
4.计算背景的平均灰度值:
[0155]
5.计算前景的平均灰度值:
[0156]
6.计算灰度区间的灰度累计值:μ=μ1*w1+μ2*w2。
[0157]
7.计算类间方差:g=w1*(μ-μ1)2+w2*(μ-μ2)2。
[0158]
8.将值带入,最终化简得到公式:g=w1*w2*(μ
1-μ2)2。
[0159]
(5)根据二值化后的图像的像素值定位二维码中的三个特征点,从而定位到整个二维码的位置。根据二维码在画面中的位置控制机器人进行对接。
技术特征:
1.一种基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,包括扫地车以及固定在园区内的充电桩,扫地车与充电桩的充电对接方法包括:接收rtk数据并进行地图打点,扫地车绕着园区内需打扫道路进行地图打点,建立园区的道路地图,在地图上设置充电桩的位置信息;扫地车进行扫地作业过程中,电量不足时自主充电,首先接收rtk和imu的数据,然后根据地图上充电桩的位置信息,运行q-learning算法,将扫地车当前的位置与充电桩的位置进行路径规划,在扫地车运动到充电桩的位置时,实时检测行人和车辆,如果检测到行人和车辆,就控制扫地车停止,然后重新用q-learning算法规划一条新的路径,如果没有检测到行人和车辆,就按照原始的路径进行运动,直至扫地车运动到充电桩的位置,然后识别并定位二维码的位置,控制扫地车进行对接充电。2.如权利要求1所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,接收rtk数据并进行地图打点:接收rtk板卡反馈的原始数据,进行截取后生成可以使用的数据,rtk反馈的数据是经纬度坐标以及高度信息,从而得到扫地车的坐标位置,利用rtk绕着区域边缘打点绘制地图,将地图边缘的经纬度坐标存在列表中,最后将地图进行珊格化,将经纬度坐标转换为xy坐标,园区内有一个固定的充电桩进行充电,将此充电桩的坐标转换并记录在地图中。3.如权利要求2所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,接收rtk数据并进行地图打点的步骤包括:(1)通过ros系统中的话题节点订阅rtk板卡发布的原始数据;(2)对订阅到的rtk原始数据进行截取转换,分别得到经度,纬度以及海拔高度;(3)将截取得到的经纬度以及高度使用高斯投影转换成平面坐标,方便后面的地图栅格化和路径规划;其中高斯投影公式如下:其中高斯投影公式如下:其中l(b)为赤道到投影点的子午线弧长;为卯酉圈半径;t=tanb;l=l-l0为经差;l0为子午线经度;将rtk反馈的大地坐标转换为独立坐标即xy坐标后,就可以对地图进行栅格化处理,从而得到每个栅格的xy坐标。4.如权利要求3所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,通过欧拉变换可以得到起电子罗盘作用的yaw,获知扫地车的运动方向,
接收imu数据并进行转换包括:(1)订阅imu发布的节点,获得imu反馈的初始数据,其中包括线速度、加速度、方向角数据;(2)对这些数据进行转换,将四元数转换欧拉角;四元数的表现形式,公式q=q0+q1i+q2j+q3k,其中,q0、q1、q2、q3是实数,q0称为实部,q0+q1i+q2j+q3k为虚部,单位四元数记作e=(e0,e1,e2,e3),将四元数转为欧拉角需要旋转矩阵,用四元数表示:欧拉角中的航向角yaw值,航向角是刚体围绕参考系的z轴方向进行旋转得到的角度,航向角用旋转矩阵表示:根据公式可知:已知求只需做一次矩阵逆变换便可求出:又因为:对比两式可解出:γ=sin-1
(2(q1q
3-q0q2))))此时就是所需要的偏航角yaw值。5.如权利要求4所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,检测行人与车辆包括运用oak-d摄像头检测行人与车辆,并进行标定。6.如权利要求5所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,oak-d摄像头利用训练好的神经网络模型进行检测,oak-d摄像头检测到行人和车辆后,在地图中进行标注,并将此位置设置为不可通行的位置,随后用q-learning规划新的
路径。7.如权利要求6所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,训练好的神经网络模型包括:(1)从bdd100k中下载自动驾驶所用到的数据集;(2)使用labelimg打标签工具进行图像标注,将图像主要分为车辆和行人两种类别;(3)标注完后生成json文件并进行转换生成mask;(4)将mask标签的图像和原始图像进行数据增强,增强方法主要有放大,缩小,旋转操作;(5)将增强后的数据集生成训练集、验证集以及测试集;(6)使用yolox网络模型进行模型训练;(7)将训练完的网络模型转换为blob格式,然后将转换后的模型放入oak-d摄像头中;(8)将oak-d摄像头连接xavier开发板;(9)创建一个oak摄像头管道对象;(10)在创建的管道对象上创建一个神经网络对象,将上面放入oak-d中训练好的yolox网络模型赋值给神经网络对象;(11)创建彩色输出流对象;(12)创建神经网络输出流对象;(13)将彩色输出流对象与神经网络输出流对象相融合,进行行人和车辆的检测;(14)编写ros节点,发布检测到的行人和车辆的中心坐标;(15)订阅刚刚发布的节点,接收行人和车辆的中心坐标,在栅格化的地图中将行人和车辆标注,设为不可通行;(16)更新奖励矩阵r的值,将相应点的值设为-1。8.如权利要求7所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,利用q-learning进行路径规划包括:(1)获取栅格化后地图的长和宽;(2)根据地图的长和宽建立q-learning地图节点列表;(3)建立大小为长*宽的奖励矩阵r,并且初始化为0;(4)根据建立的地图节点列表给奖励矩阵r赋值,可以到达赋为0,不能到达赋为-1;(5)创建状态矩阵q,赋值为0;(6)根据以下公式更新q矩阵,q[state,action]=r[state,action]+gamma*max[q[next action,all actions]]其中state是机器人目前的位置,称之为状态,action是机器人下一步将要到达的位置,称之为动作,gamma是学习率。根据上述公式就是计算q矩阵中相应state和action的值,直至将状态矩阵q更新至拟合;q-learning算法步骤:(1)初始化学习率gamma的值和奖励矩阵r的值;(2)初始化q矩阵的值为0;(3)从机器人当前状态下的所有动作中选择出一个给出最大q值的状态和状态;(4)更新当前q值为此时的r值加学习率与最大q值的乘积;
(5)将上面对应的下一个状态改为目前的状态;(6)如果此时状态不是目标状态,更新上述步骤直至到达目标状态。9.如权利要求8所述的基于计算机视觉与机器学习的无人扫地车充电对接方法,其特征在于,控制机器人移动到对接点后,利用摄像头和二维码进行对接,摄像头可以识别并定位出二维码的位置,然后根据二维码相对于机器人的位置得出充电桩相对于机器人的位置,从而控制机器人进行对接,包括步骤:(1)利用python自带的库,即qrocde生成一张二维码;(2)设置二维码的尺寸,二维码在官方文档中有40个尺寸,称为为version,尺寸与version存在线性关系,version 1是21
×
21的矩阵,version 2是25
×
25的矩阵,每增加一个version,尺寸都会增加4,故尺寸size与version的线性关系为:size=(version-1)*4+21官网最大的version值是40,所以尺寸的最大值是(40-1)*4+21=177,所以是177
×
177的矩阵,信息越多,version就越大,尺寸就越大,为了方便定位和识别二维码,这里设置二维码的尺寸为25
×
25;(3)将创建的二维码进行灰度化处理,使用加权平均法进行灰度化效果最好,公式如下所示:gray(i,j)=0.299*r(i,j)+0.578*g(i,j)+0.114*b(i,j)(4)利用大津法进行图像二值化处理,大津法可以根据图像进行自定义的阈值选取,用于二值化效果最好,公式如下:1.记sum为图像像素总数;2.计算背景像素的占比:3.计算前景像素的占比:4.计算背景的平均灰度值:5.计算前景的平均灰度值:6.计算灰度区间的灰度累计值:μ=μ1*w1+μ2*w2;7.计算类间方差:g=w1*(μ-μ1)2+w2*(μ-μ2)2;8.将值带入,最终化简得到公式:g=w1*w2*(μ
1-μ2)2;(5)根据二值化后的图像的像素值定位二维码中的三个特征点,从而定位到整个二维码的位置,根据二维码在画面中的位置控制机器人进行对接。
技术总结
本发明提供一种基于计算机视觉与机器学习的无人扫地车充电对接方法,包括扫地车以及固定在园区内的充电桩,扫地车与充电桩的充电对接方法包括接收RTK数据并进行地图打点,扫地车绕着园区内需打扫道路进行地图打点,建立园区的道路地图,在地图上设置充电桩的位置信息;扫地车进行扫地作业过程中,电量不足时自主充电,首先接收RTK和IMU的数据,根据地图上充电桩的位置信息,运行Q-learning算法,将扫地车当前的位置与充电桩的位置进行路径规划,在扫地车运动到充电桩的位置时,实时检测行人和车辆,直至扫地车运动到充电桩的位置,然后识别并定位二维码的位置,控制扫地车进行对接充电。能在工业园区实现扫地车的避障及自动充电。电。电。
技术研发人员:赵建洋 李彪 费宏彦 孔荣双 丁楠 戴志颖 徐乐乐 汤汉阳 耿君佐 艾米尔 单劲松 丁卫红 孙成富
受保护的技术使用者:淮阴工学院
技术研发日:2023.05.29
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种韧带拉伸装置 下一篇:一种风叶加工用树脂排泡设备的制作方法