航向角计算方法、装置、机器人、电子设备及存储介质与流程
未命名
10-08
阅读:110
评论:0

1.本技术涉及移动机器人技术领域,特别是涉及一种航向角计算方法、装置、机器人、电子设备及存储介质。
背景技术:
2.移动机器人在行进过程中需要通过定位来获取自身状态,常用的方法包括slam(simultaneous localization and mapping,同时定位与建图)系统和imu多传感系统,但这些定位方案随着运行时间的增长,会产生累积偏移,从而导致机器人的真实运行轨迹与规划轨迹偏差严重。目前调整行进方向通常是通过双目相机或深度相机进行三维重建,恢复机器人的3d位姿,再在相机坐标系下估计机器人实际运动方向与规划运动方向之间的偏角大小,但该过程存在误差累积的问题,无法准确计算出偏角大小。
技术实现要素:
3.本技术实施例的目的在于提供一种航向角计算方法、装置、机器人、电子设备及存储介质,以准确计算出航向角。具体技术方案如下:
4.第一方面,本技术实施例提供了一种航向角确定方法,包括:
5.获取相机拍摄得到的图像;
6.确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;
7.根据至少两条所述导航直线确定直线交点,得到消影点;
8.确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
9.根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。
10.在一种可能的实施方式中,在所述确定所述图像中的导航直线之前,所述方法还包括:
11.通过预先训练的直线检测模型提取所述图像中的直线;
12.确定所述直线中不具备导航功能的直线;
13.所述确定所述图像中的导航直线,包括:
14.确定所述直线中除不具备导航功能的直线之外的直线,得到待选择直线;
15.根据相机光心在像素坐标系下的投影坐标,将经过所述投影坐标的待选择直线确定为导航直线。
16.在一种可能的实施方式中,所述不具备导航功能的直线包括三维空间中的竖直直线;所述确定所述直线中不具备导航功能的直线,包括:
17.计算所述直线的斜率值;
18.通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。
19.在一种可能的实施方式中,所述不具备导航功能的直线包括三维空间中的空间斜
线,所述确定所述直线中不具备导航功能的直线,包括:
20.确定所述直线在相机坐标系下的直线方程;
21.判断所述直线方程在相机坐标系的z轴是否存在偏移量;
22.若不存在,则将所述直线确定为不具备导航功能的直线。
23.在一种可能的实施方式中,所述确定所述消影点在相机坐标系下的坐标信息,作为消影点三维坐标,包括:
24.基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
25.其中,所述变换关系为:
[0026][0027]
r为变换关系,θ为航向角;
[0028]
所述消影点三维坐标通过下式得到
[0029][0030]
p
′
为消影点三维坐标,p为预设消影点三维坐标。
[0031]
在一种可能的实施方式中,所述根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角,包括:
[0032]
确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系;
[0033]
计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标;
[0034]
根据所述消影点二维坐标确定航向角大小。
[0035]
第二方面,本技术实施例提供了一种航向角确定装置,所述装置包括:
[0036]
图像获取模块,用于获取相机拍摄得到的图像;
[0037]
导航直线确定模块,用于确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;
[0038]
消影点确定模块,用于根据至少两条所述导航直线确定直线交点,得到消影点;
[0039]
消影点三维坐标确定模块,用于确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
[0040]
航向角计算模块,用于根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。
[0041]
在一种可能的实施方式中,所述装置还包括:
[0042]
直线提取模块,用于通过预先训练的直线检测模型提取所述图像中的直线;
[0043]
非导航直线确定模块,用于确定所述直线中不具备导航功能的直线;
[0044]
所述导航直线确定模块包括待选择直线确定模块和导航直线选定模块,
[0045]
所述待选择直线确定模块,用于确定所述直线中除不具备导航功能的直线之外的直线,作为待选择直线;
[0046]
所述导航直线选定模块,用于根据相机光心在像素坐标系下的投影坐标,将经过
所述投影坐标的待选择直线确定为导航直线。
[0047]
在一种可能的实施方式中,所述不具备导航功能的直线包括三维空间中的竖直直线,所述非导航直线确定模块包括斜率值计算模块和竖直直线确定模块:
[0048]
所述斜率值计算模块,用于计算所述直线的斜率值;
[0049]
所述竖直直线确定模块,用于通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。
[0050]
在一种可能的实施方式中,所述不具备导航功能的直线包括三维空间中的空间斜线,所述非导航直线确定模块包括直线方程确定模块和非导航直线选定模块:
[0051]
所述直线方程确定模块,用于确定所述直线在相机坐标系下的直线方程;
[0052]
所述非导航直线选定模块,用于判断所述直线方程在相机坐标系的z轴是否存在偏移量;若不存在,则将所述直线确定为不具备导航功能的直线。
[0053]
在一种可能的实施方式中,所述消影点三维坐标确定模块,具体用于:基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
[0054]
其中,所述变换关系为:
[0055][0056]
r为变换关系,θ为航向角;
[0057]
所述消影点三维坐标通过下式得到
[0058][0059]
p
′
为消影点三维坐标,p为预设消影点三维坐标。
[0060]
在一种可能的实施方式中,所述航向角计算模块包括对应关系确定模块、消影点二维坐标确定模块、航向角确定模块:
[0061]
所述对应关系确定模块,用于确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系;
[0062]
所述消影点二维坐标确定模块,用于计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标;
[0063]
所述航向角确定模块,用于根据所述消影点二维坐标确定航向角大小。
[0064]
第三方面,本技术实施例还提供了一种机器人,包括:
[0065]
相机,用于拍摄图像,将拍摄到的图像发送给处理器;
[0066]
移动底盘,用于响应处理器的控制,进行移动;
[0067]
处理器,用于控制移动底盘的移动以及实现上述任一航向角确定方法,所述相机和所述处理器安装在所述移动底盘上。
[0068]
第四方面,本技术实施例还提供了一种电子设备,包括:
[0069]
存储器,用于存放计算机程序;
[0070]
处理器,用于执行存储器上所存放的程序时,实现上述任一航向角确定方法。
[0071]
第五方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存
储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一航向角确定方法。
[0072]
本技术实施例有益效果:
[0073]
本技术实施例提供的航向角计算方法,包括:获取相机拍摄得到的图像;确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;根据至少两条所述导航直线确定直线交点,得到消影点;确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。实现了利用真实环境中的固定结构信息准确地确定出了航向角。
[0074]
当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
[0075]
为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
[0076]
图1为本技术实施例的航向角确定方法的第一种流程示意图;
[0077]
图2为本技术实施例的消影点位置示意图;
[0078]
图3为本技术实施例的航向角确定方法的第二种流程示意图;
[0079]
图4为本技术实施例的直线提取结果的一种示意图;
[0080]
图5为本技术实施例的相机坐标系和图像坐标系对应关系示意图;
[0081]
图6为本技术实施例的直线筛选结果示意图;
[0082]
图7为本技术实施例的航向角确定方法的第三种流程示意图;
[0083]
图8为本技术实施例的行进方向调整方案的流程示意图;
[0084]
图9为本技术实施例的航向角确定装置的一种结构示意图;
[0085]
图10为本技术实施例的机器人的一种结构示意图;
[0086]
图11为本技术实施例的电子设备的一种结构示意图。
具体实施方式
[0087]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本技术保护的范围。
[0088]
移动机器人在行进过程中需要通过定位来获取自身状态,常用的方法包括slam(simultaneous localization and mapping,同时定位与建图)系统和imu多传感系统,但这些定位方案随着运行时间的增长,会产生累积偏移,从而导致机器人的真实运行轨迹与规划轨迹偏差严重。目前调整行进方向通常是通过双目相机或深度相机进行三维重建,恢复机器人的3d位姿,再在相机坐标系下估计机器人实际运动方向与规划运动方向之间的偏
角大小,但该过程存在误差累积的问题,无法准确计算出偏角大小。
[0089]
另外,现有的航向角计算模块需要借助指示物来获取到实时的航向信息,要在发现指示物后才能计算航向角以调整行进方向,其应用场景存在较大限制,需要对场景进行提前部署或者只能进行定向跟随,无法充分结合传感器信息与里程计信息。
[0090]
为了准确地计算出航向角大小,第一方面,本技术实施例提供了一种航向角确定方法,参见图1,包括:
[0091]
s101、获取相机拍摄得到的图像。
[0092]
本技术的方法应用于移动机器人,移动机器人上部署有前视相机用于拍摄真实世界中的场景,前视相机需要尽可能摆放地与相机坐标系下的x-z面垂直。移动机器人在初始状态时是不存在运动轨迹偏差的,因此,可以获取此时相机拍摄到的图像,以从中检测环境中的特殊结构,将环境中的固定结构信息转化为行进方向的约束条件。
[0093]
s102、确定所述图像中的导航直线。
[0094]
所述导航直线为相机坐标系下与相机光轴平行的直线。相机成像平面有一个特点,可以令相机坐标系下与z轴平行的直线相交。相机光轴方向便是相机坐标系的z轴方向,确定与相机坐标系的z轴平行的直线即是确定与相机光轴平行的直线。本技术实施例中采用与相机光轴平行的直线作为导航直线,用于计算航向角。
[0095]
s103、根据至少两条所述导航直线确定直线交点,得到消影点。
[0096]
在确定导航直线后,可以根据至少两条导航直线确定直线交点,作为消影点,此时由于机器人发生了偏转,消影点在图像中的位置自然也发生了变化。可以理解,移动机器人在初始状态下,消影点对应的是相机光心在图像上的投影点,即光心投影坐标(u,v),在移动机器人产生航向角之后,消影点将不再对应光心投影坐标(u,v),此时需要根据之前确定得到的导航直线重新确定消影点的位置。
[0097]
s104、确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标。
[0098]
基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标。
[0099]
移动机器人只在x-z轴构成的平面上发生平移和旋转,所以变换关系是一个关于绕y轴旋转的旋转矩阵,记作
[0100][0101]
其中,θ指航向角。
[0102]
预设消影点三维坐标为p(x,y,z),在产生航向角偏移量后,消影点在相机坐标系下的真实坐标变为p
′
(x
′
,y
′
,z
′
),p与p
′
的关系如下:
[0103][0104]
s105、根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角。
[0105]
预设消影点三维坐标是指未产生航向角时消影点所具备的三维坐标。参见图2所示,机器人真实位置较测量位置产生了一个向右的偏转,在机器人正向运动的情况下得到的是测量值,即预设消影点p,在机器人向右偏移的情况下得到的是真值,即消影点p
′
。点o为相机光心投影坐标。
[0106]
本技术实施例中,通过选取导航直线,根据至少两条所述导航直线确定直线交点,作为消影点;确定所述消影点在相机坐标系下的坐标信息,作为消影点三维坐标;根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角,实现了利用真实环境中的固定结构信息准确地确定出了航向角。
[0107]
一个例子中,参见图3,在确定所述图像中的导航直线之前,还包括:
[0108]
s201、通过预先训练的直线检测模型提取所述图像中的直线。
[0109]
预先训练的直线检测模型可以是预先训练的卷积网络模型,包括vgg net、densenet、resnet等。预先训练的直线检测模型的训练过程包括:采集数据并进行标注,输入待训练的直线检测模型,通过损失函数计算预测值与标准值之间的误差,并基于损失值反复调整直线检测模型的模型参数,直至模型收敛得到训练好的直线检测模型。利用预先训练的直线检测模型提取图像中的直线的结果可参考图4所示内容。
[0110]
s202、确定所述直线中不具备导航功能的直线。
[0111]
可以理解的是,三维空间中的竖直直线和空间斜线都属于不具备导航功能的直线,无法用于计算航向角。因此,确定直线中不具备导航功能的直线即就是确定三维空间中的竖直直线和空间斜线。通过对图像中的直线进行提取,并排除直线中不具备导航功能的直线,能够实现前视环境的感知,将外界环境的结构信息加入到确定航向角的过程中来。
[0112]
s203、确定直线中除不具备导航功能的直线之外的直线,得到待选择直线。
[0113]
将直线中的竖直直线和空间斜线去除,剩下的直线作为待选择直线。
[0114]
s204、根据相机光心在像素坐标系下的投影坐标,将经过所述投影坐标的待选择直线确定为导航直线。
[0115]
对于移动机器人而言,前进方向为z轴的正方向,与z轴平行的空间直线在投影平面上都会交于相机光心在图像上的投影,即,相机光心在像素坐标系下的投影坐标(c
x
,cy)。因此,针对待选择直线,若其经过光心投影坐标(c
x
,cy),说明其是与z轴平行的直线,可以选择将其作为导航直线。
[0116]
一个例子中,还可以计算待选择直线的直线方程,求出待选择直线的交点,记作消影点。相机光心的投影坐标对应的是没有航向角偏移时的消影点像素坐标,因为航向角度数的改变不影响消影点的纵坐标,消影点的纵坐标值始终为光心投影坐标的纵坐标值。因此,可以将相交于光心投影坐标附近(例如可以是,相交的消影点与光心投影坐标之间的差值小于预设阈值)且该交点的纵坐标值为光心投影坐标纵坐标值的直线确定为导航直线。通过上述滤波算法可以剔除可能的错误导航直线。
[0117]
一个例子中,不具备导航功能的直线包括三维空间中的竖直直线,所述确定所述直线中不具备导航功能的直线,包括:
[0118]
步骤一,计算所述直线的斜率值。
[0119]
相机坐标系与图像坐标系的对应关系如图5所示,相机坐标系的x轴和y轴分别与图像坐标系的x轴和y轴平行,相机坐标系的z轴指向深度方向。三维空间中重力方向上的直线在像素平面的投影与航向角的计算无关,根据图5分别计算两坐标系下竖直直线的斜率,由于竖直直线在相机坐标系y-z面下的斜率与在图像坐标系下的斜率数值相同,即:
[0120]
[0121]
其中,kc指在相机坐标系y-z面下的直线斜率,k
p
指图像坐标系下的直线斜率。
[0122]
图像坐标系与像素坐标系同属于二维坐标系,区别在于:图像坐标系的原点一般为图像中心,横坐标为x轴,纵坐标为y轴,单位一般为毫米;像素坐标系的原点一般在图像左上角,横坐标为u轴,纵坐标为v轴,(u,v)用于表示像素的行列数。
[0123]
步骤二,通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。
[0124]
筛除相机坐标系中的重力方向直线等价于筛除图像坐标系中斜率在-90
°
和+90
°
的直线,因此可以通过计算斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。
[0125]
本技术实施例中,通过直线的斜率值筛选出三维空间中的竖直直线,将其作为不具备导航功能的直线,从而排除了竖直直线在航向角计算过程中的干扰。
[0126]
一个例子中,不具备导航功能的直线包括三维空间中的空间斜线,所述确定所述直线中不具备导航功能的直线,包括:
[0127]
步骤一,确定所述直线在相机坐标系下的直线方程。
[0128]
确定直线在相机坐标系下的直线方程可以是通过现有技术来实现,例如,基于lbd匹配的空间直线恢复方案,该方案可以将图像中检测到的直线恢复到三维空间下对应的状态。
[0129]
步骤二,判断所述直线方程在相机坐标系的z轴是否存在偏移量。
[0130]
得到直线方程后,可以在直线方程上任意取几个点,观察这些点在z轴方向上的取值是否存在偏移量。例如,取该直线方程上两点a和b,其坐标分别为(1,1,2)和(2,6,2),可以发现,a、b两点在z轴上并不存在偏移量,说明该直线方程是x-y面上的直线方程,在z轴方向的变化量为0。
[0131]
步骤三,若不存在,则将所述直线确定为不具备导航功能的直线。
[0132]
如果该直线只存在于x-y面上,在z轴方向的变化量为0,则确定该直线为三维空间中的空间斜线,由于空间斜线无法用于计算航向角,因此将其作为不具备导航功能的直线。
[0133]
本技术实施例中,通过相机坐标系下z轴方向的变化量确定直线中的空间斜线,从而排除了空间斜线在航向角计算过程中的干扰。
[0134]
参见图6,为直线筛选的一种结果,导航直线都交于一点,该点为z轴方向上的消影点。
[0135]
本技术实施例中,通过排除三维空间中的竖直直线和空间斜线,并通过光心投影坐标筛选出导航直线,用于后续航向角的计算,实现了将外部环境中的结构信息转化为可用于航向角确定的方向信息。
[0136]
一个例子中,参见图7,根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角,包括:
[0137]
s301、确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系。
[0138]
消影点在像素坐标系下的坐标信息为(u1,v1),将消影点三维坐标投影到图像的投影公式如下:
[0139][0140]
其中,d指预设消影点三维坐标p(x,y,z)距成像平面的深度,k是相机内参。
[0141]
s302、计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标。
[0142]
在图像中,很容易获取到经过消影点的导航直线上的坐标点信息,针对ax+by=c的二维直线方程,a、b、c为待求解常数,可以通过将坐标点信息带入二维直线方程的方式确定出导航直线的二维直线方程。
[0143]
由于预设消影点p是相机坐标系下的无穷远点,所以d与z值均为无穷大,可以依据这一约束对相机坐标系z轴方向进行降维,从上述投影公式得到如下关系:
[0144][0145]
将旋转矩阵r代入上式,整理可得
[0146][0147]
对上式取极限得到
[0148][0149]
k为相机内参
[0150][0151]
k代表每个像素在水平方向上的尺寸,l代表每个像素在竖直方向上的尺寸,f为相机焦距。
[0152]
将相机内参代入式中可以得到
[0153][0154]
v1=y[0155]
根据上式可以通过相机光心投影坐标cy计算出消影点在像素坐标系下v轴的位置,在确定
[0156]
v1后,可以根据导航直线的二维直线方程计算得到u1的大小,作为消影点二维坐标(u1,v1)。值得注意的是,通过单一直线计算出的消影点二维坐标会存在误差,为了减小这些误差对航向角计算的影响,可以将多条直线计算结果输入滤波器过滤,获取局部最优解从而有效提高航向角的计算精度。
[0157]
s303、根据所述消影点二维坐标确定航向角大小。
[0158]
由于
[0159][0160]
而,u1、f、c
x
或可以通过计算得到,或为已知参数,因此,可以根据上式确定航向角θ的大小。
[0161]
本技术实施例中,根据消影点三维坐标与预设消影点三维坐标之间的偏差,基于消影点三维坐标处理得到消影点二维坐标,从而计算出航向角的大小,实现了利用真实环境中的固定结构信息确定航向角。
[0162]
利用单帧图像计算出的航向角会受直线检测模型的模型检测效果、地面平整程度、图像纹理等环境因素影响,存在不确定性。为了提高计算航向角的可靠性,可以通过滤波将多帧图像的计算结果融合,以减弱测量和计算误差的干扰。将滤波器输出结果传输给底层控制器,用于调整行进方向以消除移动机器人真实运行轨迹与规划轨迹之间的偏差。
[0163]
经过计算获取到航向角大小后,将这一航向角值反馈给计算机,计算机会根据航向角值与计算值的偏差,使用这一偏差调整行进方向,以消除运动轨迹的误差。例如,移动机器人要在地面上旋转30
°
,但通过imu多传感系统实际指导机器人只旋转了25
°
,也就是说,航向角值25
°
与计算值30
°
存在5
°
的偏差,计算机会使用该偏差修正机器人的运动轨迹,从而消除运动轨迹的误差。
[0164]
本技术实施例通过设计多个滤波器降低测量误差、减弱环境因素变化对方案可靠性的影响,提升了方案的可靠性。
[0165]
一个例子中,行进方向调整方案的流程图如图8所示,前视rgb相机是部署在移动机器人上的相机,用于采集环境中的图像,环境感知模块包括直线提取和直线筛选两部分。在相机拍摄得到图像后,要经历直线提取和直线筛选这两个过程,直线提取的结果是提取出图像中的所有直线,直线筛选则是排除直线中不具备导航功能的直线,包括三维空间中的竖直直线和空间斜线,筛选得到具备导航功能的直线,决策控制模块包括依据空间结构关系降维、计算行进偏差角以及调整行进方向三部分。得到具备导航功能的直线后,再依据空间结构关系降维,计算行进偏差角,根据行进偏差角调整行进方向。
[0166]
本技术实施例在航向角计算过程中实现降维,通过单目相机完成前视行进方向调整方案。相比于采用三维重构或借助深度信息调整行进方向,本技术实施例借助消影点在深度上无穷大的特性实现降维,将三维航向角计算问题简化为二维图像平面上的消影点计算问题,极大降低了计算成本和传感器造价成本。
[0167]
第二方面,本技术实施例提供了一种航向角确定装置,参见图9,包括:
[0168]
图像获取模块901,用于获取相机拍摄得到的图像;
[0169]
导航直线确定模块902,用于确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;
[0170]
消影点确定模块903,用于根据至少两条所述导航直线确定直线交点,得到消影点;
[0171]
消影点三维坐标确定模块904,用于确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
[0172]
航向角计算模块905,用于根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。
[0173]
一个例子中,上述装置还包括:
[0174]
直线提取模块,用于通过预先训练的直线检测模型提取所述图像中的直线;
[0175]
非导航直线确定模块,用于确定所述直线中不具备导航功能的直线。
[0176]
一个例子中,上述不具备导航功能的直线包括三维空间中的竖直直线,所述非导航直线确定模块包括斜率值计算模块和竖直直线确定模块:
[0177]
所述斜率值计算模块,用于计算所述直线的斜率值;
[0178]
所述竖直直线确定模块,用于通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。
[0179]
一个例子中,上述不具备导航功能的直线包括三维空间中的空间斜线,所述非导航直线确定模块包括直线方程确定模块和非导航直线选定模块:
[0180]
所述直线方程确定模块,用于确定所述直线在相机坐标系下的直线方程;
[0181]
所述非导航直线选定模块,用于判断所述直线方程在相机坐标系的z轴是否存在偏移量;若不存在,则将所述直线确定为不具备导航功能的直线。
[0182]
一个例子中,所述导航直线确定模块包括待选择直线确定模块和导航直线选定模块,
[0183]
所述待选择直线确定模块,用于确定所述直线中除不具备导航功能的直线之外的直线,作为待选择直线;
[0184]
所述导航直线选定模块,用于根据相机光心在像素坐标系下的投影坐标,将经过所述投影坐标的待选择直线确定为导航直线。
[0185]
一个例子中,所述消影点三维坐标确定模块,具体用于:基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;
[0186]
其中,所述变换关系为:
[0187][0188]
r为变换关系,θ为航向角;
[0189]
所述消影点三维坐标通过下式得到
[0190][0191]
p
′
为消影点三维坐标,p为预设消影点三维坐标。
[0192]
一个例子中,所述航向角计算模块包括对应关系确定模块、消影点二维坐标确定模块、航向角确定模块:
[0193]
所述对应关系确定模块,用于确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系;
[0194]
所述消影点二维坐标确定模块,用于计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标;
[0195]
所述航向角确定模块,用于根据所述消影点二维坐标确定航向角大小。
[0196]
第三方面,本技术实施例还提供了一种机器人,参见图10,包括:
[0197]
相机1001,用于拍摄图像,将拍摄到的图像发送给处理器1003;
[0198]
移动底盘1002,用于响应处理器1003的控制,进行移动;
[0199]
处理器1003,用于控制移动底盘1002的移动以及实现上述任一航向角确定方法。
[0200]
其中,相机1001和处理器1003安装在移动底盘1002上。一个例子中,机器人还可以包括惯性测量单元、加速计等硬件,以获取行程和位置信息;处理器除了用于实现上述任一航向角确定方法外,还可以实现同时定位与建图方法,以建立当前场景中的电子地图。
[0201]
第四方面,本技术实施例还提供了一种电子设备,包括:
[0202]
存储器,用于存放计算机程序;
[0203]
处理器,用于执行存储器上所存放的程序时,实现上述任一航向角确定方法。
[0204]
第五方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一航向角确定方法。
[0205]
本技术实施例还提供了一种电子设备,如图11所示,包括:
[0206]
存储器1101,用于存放计算机程序;
[0207]
处理器1102,用于执行存储器1101上所存放的程序时,实现上述任一航向角确定方法。
[0208]
并且上述电子设备还可以包括通信总线和/或通信接口,处理器1102、通信接口、存储器1101通过通信总线完成相互间的通信。
[0209]
上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0210]
通信接口用于上述电子设备与其他设备之间的通信。
[0211]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0212]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0213]
在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一航向角确定方法。
[0214]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)等。
[0215]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0216]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0217]
以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
技术特征:
1.一种航向角计算方法,其特征在于,所述方法包括:获取相机拍摄得到的图像;确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;根据至少两条所述导航直线确定直线交点,得到消影点;确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。2.根据权利要求1所述的方法,其特征在于,在所述确定所述图像中的导航直线之前,所述方法还包括:通过预先训练的直线检测模型提取所述图像中的直线;确定所述直线中不具备导航功能的直线;所述确定所述图像中的导航直线,包括:确定所述直线中除不具备导航功能的直线之外的直线,得到待选择直线;根据相机光心在像素坐标系下的投影坐标,将经过所述投影坐标的待选择直线确定为导航直线。3.根据权利要求2所述的方法,其特征在于,所述不具备导航功能的直线包括三维空间中的竖直直线;所述确定所述直线中不具备导航功能的直线,包括:计算所述直线的斜率值;通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线。4.根据权利要求2所述的方法,其特征在于,所述不具备导航功能的直线包括三维空间中的空间斜线,所述确定所述直线中不具备导航功能的直线,包括:确定所述直线在相机坐标系下的直线方程;判断所述直线方程在相机坐标系的z轴是否存在偏移量;若不存在,则将所述直线确定为不具备导航功能的直线。5.根据权利要求1所述的方法,其特征在于,所述确定所述消影点在相机坐标系下的坐标信息,作为消影点三维坐标,包括:基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;其中,所述变换关系为:r为变换关系,θ为航向角;所述消影点三维坐标通过下式得到p
′
为消影点三维坐标,p为预设消影点三维坐标。6.根据权利要求1所述的方法,其特征在于,所述根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角,包括:
确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系;计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标;根据所述消影点二维坐标确定航向角大小。7.一种航向角计算装置,其特征在于,所述装置包括:图像获取模块,用于获取相机拍摄得到的图像;导航直线确定模块,用于确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;消影点确定模块,用于根据至少两条所述导航直线确定直线交点,得到消影点;消影点三维坐标确定模块,用于确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;航向角计算模块,用于根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。8.根据权利要求7所述的装置,其特征在于,所述装置还包括:直线提取模块,用于通过预先训练的直线检测模型提取所述图像中的直线;非导航直线确定模块,用于确定所述直线中不具备导航功能的直线;所述导航直线确定模块包括待选择直线确定模块和导航直线选定模块,所述待选择直线确定模块,用于确定所述直线中除不具备导航功能的直线之外的直线,作为待选择直线;所述导航直线选定模块,用于根据相机光心在像素坐标系下的投影坐标,将经过所述投影坐标的待选择直线确定为导航直线;所述不具备导航功能的直线包括三维空间中的竖直直线,所述非导航直线确定模块包括斜率值计算模块和竖直直线确定模块:所述斜率值计算模块,用于计算所述直线的斜率值;所述竖直直线确定模块,用于通过所述斜率值确定三维空间中的竖直直线,作为不具备导航功能的直线;所述不具备导航功能的直线包括三维空间中的空间斜线,所述非导航直线确定模块包括直线方程确定模块和非导航直线选定模块:所述直线方程确定模块,用于确定所述直线在相机坐标系下的直线方程;所述非导航直线选定模块,用于判断所述直线方程在相机坐标系的z轴是否存在偏移量;若不存在,则将所述直线确定为不具备导航功能的直线;所述消影点三维坐标确定模块,具体用于:基于变换关系以及预设消影点三维坐标,确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;其中,所述变换关系为:r为变换关系,θ为航向角;所述消影点三维坐标通过下式得到
p
′
为消影点三维坐标,p为预设消影点三维坐标;所述航向角计算模块包括对应关系确定模块、消影点二维坐标确定模块、航向角确定模块:所述对应关系确定模块,用于确定所述消影点三维坐标与所述消影点在像素坐标系下的坐标信息之间的对应关系;所述消影点二维坐标确定模块,用于计算经过所述消影点的导航直线的二维直线方程,基于所述二维直线方程和所述对应关系确定出所述消影点在像素坐标系下的坐标信息,得到消影点二维坐标;所述航向角确定模块,用于根据所述消影点二维坐标确定航向角大小。9.一种机器人,其特征在于,包括:相机,用于拍摄图像,将拍摄到的图像发送给处理器;移动底盘,用于响应处理器的控制,进行移动;处理器,用于控制移动底盘的移动以及实现权利要求1-6任一所述的方法,所述相机和所述处理器安装在所述移动底盘上。10.一种电子设备,其特征在于,包括:存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法。
技术总结
本申请实施例提供了一种航向角计算方法、装置、机器人、电子设备及存储介质,包括:获取相机拍摄得到的图像;确定所述图像中的导航直线,所述导航直线为相机坐标系下与相机光轴平行的直线;根据至少两条所述导航直线确定直线交点,得到消影点;确定所述消影点在相机坐标系下的坐标信息,得到消影点三维坐标;根据所述消影点三维坐标与预设消影点三维坐标的偏差,计算航向角;所述预设消影点三维坐标是在不存在航向角的情况下消影点的位置。实现了利用真实环境中的固定结构信息准确地确定出了航向角。航向角。航向角。
技术研发人员:徐艺峰
受保护的技术使用者:杭州萤石软件有限公司
技术研发日:2023.06.28
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/