发明内容
发明目的:本发明的目的是提供一种能够对相机数据与激光雷达数据进行有效融合的方法。
技术方案:本发明的基于ROS机器人的相机与多激光雷达融合方法包括以下步骤:
(1)使用多激光雷达采集标定板的三维点云数据,并拟合出标定板所在的平面;
(2)用人工鱼群算法进行多激光雷达之间的配准;
(3)使用相机采集标定板的二维图像,提取二维图像中标定板的角点;
(4)在三维点云数据中提取标定板的角点;
(5)根据已获得角点的标定板二维和三维图像数据,求解相机坐标系与三维场景结构的世界坐标系之间的位姿关系和二维与三维数据之间变换的最优解,完成数据融合。
所述步骤(1)中拟合标定板所在平面的步骤为:从激光雷达所采集到的点云中,随机选取3个不共线的点,由此3个点构造三维平面的一般性方程,并初始化为此幅点云对应的平面;计算点云中其余所有点到此平面的距离;统计距离值小于所给阈值的点的个数,并计算满足此阈值的点的个数占所有点的比例;如果计算的占比满足一定的阈值,则认为当前所得的平面参数为此幅点云拟合得出的平面,结束迭代;否则从头开始继续拟合平面,直至达到最大迭代次数为止。
所述步骤(2)中,定义人工鱼结构体,每个个体鱼维数为6,其中3维表示旋转,3维表示平移,定义人工鱼群优化器类,并初始化该优化器的参数以及算法在空间中的搜索角度;设置鱼群中个体鱼的个数,对所有的个体鱼进行初始化,随机选取一个个体鱼并认为此个体鱼为全局最优个体;以激光雷达对应面的一幅点云当前所处的状态为人工鱼的状态,对每条鱼i执行人工鱼群的觅食行为、随机行为、聚群行为以及追尾行为;得到每条人工鱼当前所处的状态;记录当前鱼群中的最优个体X_best,以及计算得到的点云平面之间的最小距离值;
判断当前最小距离值是否满足阈值或者是否达到最大迭代次数,如果满足则输出全局最优个体,根据最优个体鱼的6维数据值计算两激光雷达之间的刚性变换,将源点云数据变换到目标点云数据,算法结束;否则对每条鱼i执行人工鱼群的觅食行为、随机行为、聚群行为以及追尾行为得到人工鱼当前所处的状态,直至求解出最优值。
步骤(2)中执行觅食行为对人工鱼状态进行寻优,具体步骤为:如当前状态X1点云中的所有点到对应的目标点云平面之间的距离Dmin(X1)与状态X2点云中所有点到对应目标点云平面之间的距离Dmin(X2)满足Dmin(X1)>Dmin(X2),将状态X1更新为X2;
当状态S1和X2的关系不满足Dmin(X1)>Dmin(X2)时,则在可移动距离范围内重新随机选择一个状态X2,继续进行上述比较,如果尝试的次数达到预设值后仍然不满足条件,则随机选择一个状态,从状态X1到状态X2更新后所处的状态Xnext按照下式计算:
其中step为步长表示下一次可以移动距离的最大值,rand()表示在0和1之间产生的随机数。
步骤(2)中,当觅食行为中尝试若干次后仍不能找到更小距离值,则进行随机行为;所述随机行为的下一个状态按下式计算:
Xnext=X1+visual×rand()。
步骤(2)中,执行聚群行为控制人工鱼群的运动方向和密度,对于状态为X
2时的人工鱼,设其最大探知范围内的个体鱼的数目为N
n。这N
n个鱼的中心位置为S
c,计算
的值;若
且0<δ<1,表示在X
c处有比较多的食物,即满足觅食行为中的大小关系,并且个体鱼之间的距离适中,说明此时找到一个状态比当前状态更优,让当前状态更新为这个更优的状态;否则执行觅食行为。
步骤(2)中,执行追尾行为寻找最优个体鱼,所述最优个体为满足D
min(X
1)>D
min(X
2),并且该个体X
next周围的个体鱼数目Nn满足若
且0<δ<1,当状态为X
1时,在其感知距离内寻找到的某一个个体为X
next,比较两个状态下源点云中的所有点到目标点云平面的距离,如果满足D
min(X
1)>D
min(X
next),并且该个体X
next周围的个体鱼数目N
n满足若
且0<δ<1;表示该个体X
next为当前发现的最优个体,其他个体鱼应更新自己的状态为最优个体鱼的状态;否则执行觅食行为。
步骤(3)中,对标定板的四个角点分别贴上四种不同颜色的贴纸,使用相机采集图像,对图像中的像素点进行遍历,寻找具有四种颜色的区域,对每个区域的像素点位置取最边缘值,将边缘值作为角点在相机采集的图像中的像素坐标。
步骤(4)包括:使用直通滤波和条件滤波去除标定板上无用的点云数据;对标定板的四条边所在的进行拟合,得到四条边所在直线的空间一般式;求取相邻两条直线在三维空间的交点,求出的交点即为所求的激光雷达点云角点。
步骤(5)包括:根据已经获得角点坐标的二维图像和三维点云,求解出相机坐标系与三维世界坐标系之间的绝对旋转矩阵R和平移向量T;根据求得的R和T获取相机坐标系与三维世界坐标系之间的位姿关系;利用求解PNP问题的方法求出三维与二维数据之间变换的最优解,完成数据融合。
有益效果:与现有技术相比,本发明具有如下显著优点:在进行图像融合时能够弥补激光雷达和相机各自的缺陷,生成的深度图像更加精细准确,且程序简单,易于实现,算法效率高,实时性强,提升环境感知的准确度。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。如图1所示,本发明提供一种基于ROS机器人的相机与多激光雷达融合方法,用于同时搭载相机和多激光雷达的ROS机器人的图像处理,包括如下步骤:
(1)使用多激光雷达采集标定板的三维点云数据,并拟合出标定板所在的平面;从激光雷达所采集到的点云中,随机选取3个不共线的点,由此3个点构造三维平面的一般性方程,并初始化为此幅点云对应的平面;计算点云中其余所有点到此平面的距离;统计距离值小于所给阈值的点的个数,并计算满足此阈值的点的个数占所有点的比例;如果计算的占比满足一定的阈值,则认为当前所得的平面参数为此幅点云拟合得出的平面,结束迭代;否则从头开始继续拟合平面,直至达到最大迭代次数为止。
(2)用人工鱼群算法进行多激光雷达之间的配准;
定义人工鱼结构体,每个个体鱼维数为6,其中3维表示旋转,3维表示平移,定义人工鱼群优化器类,并初始化该优化器的参数以及算法在空间中的搜索角度;设置鱼群中个体鱼的个数,对所有的个体鱼进行初始化,随机选取一个个体鱼并认为此个体鱼为全局最优个体;以激光雷达对应面的一幅点云当前所处的状态为人工鱼的状态,对每条鱼i执行人工鱼群的觅食行为、随机行为、聚群行为以及追尾行为;得到每条人工鱼当前所处的状态;记录当前鱼群中的最优个体X_best,以及计算得到的点云平面之间的最小距离值;
判断当前最小距离值是否满足阈值或者是否达到最大迭代次数,如果满足则输出全局最优个体,根据最优个体鱼的6维数据值计算两激光雷达之间的刚性变换,将源点云数据变换到目标点云数据,算法结束;否则对每条鱼i执行人工鱼群的觅食行为、随机行为、聚群行为以及追尾行为得到人工鱼当前所处的状态,直至求解出最优值,采用人工鱼群进行求解最优个体的步骤如图2所示。
执行觅食行为寻优可避免人工鱼群算法陷入局部最优状态;如当前状态X1点云中的所有点到对应的目标点云平面之间的距离Dmin(X1)与状态X2点云中所有点到对应目标点云平面之间的距离Dmin(X2)满足Dmin(X1)>Dmin(X2),将状态X1更新为X2;
当状态X1和X2的关系不满足Dmin(X1)>Dmin(S2)时,则在可移动距离范围内重新随机选择一个状态S2,继续进行上述比较,如果尝试的次数达到了预设的值仍然不满足条件,则随机选择一个状态,从状态S1到状态S2更新后所处的状态Xnext按照下式计算:
其中step为步长表示下一次可以移动距离的最大值,rand()表示在0和1之间产生的随机数。
当觅食行为中尝试若干次后仍不能找到更小距离值,则进行随机行为,所及行为有利于算法陷入局部最优状态;进行随机行为的人工鱼的下一个状态按下式计算:
Xnext=X1+visual×rand()。
执行聚群行为控制人工鱼群的运动方向和密度,对于状态为X
2时的人工鱼,设其最大探知范围内的个体鱼的数目为N
n,这N
n条鱼的中心位置为X
c,若
且0<δ<1,表示在X
c处有比较多的食物,即满足觅食行为中的大小关系,并且个体鱼之间的距离适中,说明此时找到一个状态比当前状态更优,让当前状态更新为这个更优的状态;否则执行觅食行为。
执行追尾行为的目的是寻找最优个体鱼,所述最优个体为满足D
min(X
1)>D
min(X
2),并且该个体X
next周围的个体鱼数目Nn满足若
且0<δ<1。当状态为X
1时,在其感知距离内寻找到的某一个个体为X
next,比较两个状态下源点云中的所有点到目标点云平面的距离,如果满足D
min(X
1)>D
min(X
next),并且该个体X
next周围的个体鱼数目N
n满足若
且0<δ<1;表示该个体X
next为当前发现的最优个体,其他个体鱼应更新自己的状态为最优个体鱼的状态:否则执行觅食行为。
(3)使用相机采集标定板的二维图像,提取二维图像中标定板的角点,具体步骤为:对标定板的四个角点分别贴上四种不同颜色的贴纸,使用相机采集图像,对图像中的像素点进行遍历,寻找具有四种颜色的区域,对每个区域的像素点位置取最边缘值,将边缘值作为角点在相机采集的图像中的像素坐标。
(4)在三维点云数据中提取标定板的角点,具体步骤为:使用直通滤波和条件滤波去除标定板上无用的点云数据;对标定板的四条边所在的进行拟合,得到四条边所在直线的空间一般式;求取相邻两条直线在三维空间的交点,求出的交点即为所求的激光雷达点云角点。其中得到标定板四条边所在直线空间一般式的方法如下:
假设三维点云数据中的一个点P=(x,y,z),通过公式
和
可以计算出点P所在的激光线数,其中,Ange是激光线束的一个俯仰角且是由点的三维坐标所求得,gene是比例因子且为一固定的数值,n就是所要求取的点P所位于的激光线束的条数。
接着求取相邻两条直线在三维空间的交点,求出的交点即为所求的激光雷达点云角点,其步骤如下:
在已知空间直线的一般方程的情况下,设点P1=(x1,y1,z1)和点P2=(x2,y2,z2)为直线L1上的两点,点P3=(x3,y3,z3)和点P4=(x4,y4,z4)为直线L2上的两点,则两直线对应的方向向量分别表示为:
求得同时垂直于直线L
1和L
2的法向量
借助直线L
1上一个任意的点P
1与直线的法向量
可以构造一个同时过直线L
1和向量
的平面,记作A
1(x-x
1)+B
1(y-y
1)+C
1(z-z
1)+D
1=0。该式所确定的平面与L
2联立一个线性方程组,可以求得一点Q
1,记作Q
1=(X
1,Y
1,Z
1),该点则为平面与L
2的交点。同理,可以得到一点Q
2,记作Q
2=(X
2,Y
2,Z
2),则该点为平面与L
1的交点。
由于L1与L2为两条互相异面的直线,则通过拟合所得到的直线交点估算为上面所求得的Q1与Q2的坐标平均值。
(5)根据已获得角点的标定板二维和三维图像数据,求解相机坐标系与三维场景结构的世界坐标系之间的位姿关系和二维与三维数据之间变换的最优解,完成数据融合。
根据已经获得角点坐标的二维图像和三维点云,求解出相机坐标系与三维世界坐标系之间的绝对旋转矩阵R和平移向量T;根据求得的R和T获取相机坐标系与三维世界坐标系之间的位姿关系;利用求解PNP问题的方法求出三维与二维数据之间变换的最优解,完成数据融合。
计算绝对旋转矩阵R和平移向量T以及三维与二维数据之间变换的最优解的具体步骤如下:
设空间中的点为[XW,YW,Zw,1]W,二维图像上的对应点为[X,Y,1]w,则三维点变换到二维点的求解过程有如下表达式:
其中,fx、fy、u0、v0是从相机参数中读到的固定系数,则上述变换中有R11、R12、R13、R21、R22、R23、R31、R32、R33、T1、T2、T3共12个未知数,将上述公式展开得:x=Xw×(fx×R11+u0×R31)+Yw×(fx×R12+u0×R32)+Zw×(fx×R13+u0×R33)+fx×T1+u0×T3
y=Xw×(fx×R21+v0×R31)+Yw×(fy×R22+v0×R32)+Zw×(fy×R23+v0×R33)+fy×T2+v0×T3
旋转矩阵是一个正交矩阵,向量组的每一行和每一列的内积为0,根据正交矩阵的性质得出该矩阵秩、自由度都为3,在上式平移向量中存在3个未知解,恰好角点的2D和3D结构提供了由Sw,Yw,Zw,x,y确定的两个方程。从数学方程式基本求解性质上可以得知6个未知数需要6个方程式联立求解,一种是由3组三维和二维点确立方程组求解,另一种是由其他多对点通过SVD分解求解。