一种机器人地图构建方法、设备及存储介质
技术领域
本申请涉及人工智能技术领域,特别是涉及机器人地图构建方法、设备及存储介质。
背景技术
随着机器人技术的不断发展,机器人开始在人们的生活和工作中发挥作用,其中,移动机器人因为其灵活性和机动性,更是在很多场景中能够帮助人们完成相应的任务,例如,在物流运输,电力巡检,消防营救,室内引导等场景中,移动机器人已经逐步替代人工独立执行指定的工作。在研究人员的进一步努力下,移动机器人将会在更多的场景下完成更复杂的任务,给人类社会带来更多的便利。为了使移动机器人能够完成指定的任务,它应该具备自主导航的功能。定位与地图构建是实现自主导航需要解决的基本问题,而同时定位与地图构建(SimultaneousLocalization and Mapping,SLAM)技术正是解决上述两个问题的有效方法,但是现有SLAM技术构建的地图还存在局部建图精度差的问题。
发明内容
本申请主要解决的技术问题是提供一种机器人地图构建方法、设备及存储介质,能够生成局部精度更高的地图。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种机器人地图构建方法,该机器人地图构建方法包括:获取点云数据,对点云进行线特征提取,得到多条初始点云线段;对多条初始点云线段进行线段融合,得到多条融合点云线段;将点云线段集中所有点云线段的端点作为拟合点进行直线拟合,得到拟合线段,其中,点云线段集为融合点云线段和未融合的初始点云线段的集合;获取点云在拟合线段上的投影点;利用投影点构建栅格地图。
其中,点云线段的表示参数包括直线角度、直线距离和线段长度,对多条初始点云线段进行线段融合,得到多条融合点云线段包括:遍历每一条点云线段,点云线段包括未融合的初始点云线段和融合点云线段,将两条点云线段融合为一体形成融合点云线段,并计算融合点云线段的直线角度和直线距离;其中,融合点云线段的直线角度为两点云线段的直线角度的加权平均值,每条点云线段的权重为点云线段的线段长度与融合次数的乘积所占乘积总和的比重;融合点云线段的直线距离为两点云线段的直线距离的加权平均值,每条点云线段的权重为点云线段的线段长度与融合次数的乘积所占乘积总和的比重,乘积总和为两点云线段的线段长度与融合次数的乘积的加和。
其中,点云线段的表示参数包括直线角度、直线距离和线段长度,对多条初始点云线段进行线段融合,得到多条融合点云线段包括:遍历每一条点云线段,点云线段包括未融合的初始点云线段和融合点云线段,响应于两条点云线段的角度差小于第一角度阈值、两条点云线段的距离差小于第一直线距离阈值、两条点云线段的重叠区域大于第一重叠阈值、且两条点云线段中每一条点云线段的两个端点到另一条点云线段的垂直距离均小于第一点线距离阈值,将两条点云线段融合为一体,得到融合点云线段。
其中,两条点云线段的重叠区域为两条点云线段的长度和与端点距离的差值,端点距离为一点云线段的起点到另一点云线段的终点的距离。
其中,第一点线距离阈值与第一重叠阈值成正比。
其中,对多条初始点云线段进行线段融合,得到多条融合点云线段还包括:对多条点云线段进行分类;其中,若两条点云线段的角度差小于第二角度阈值、两条点云线段的距离差小于第二线距离阈值、两条点云线段的重叠区域大于第二重叠阈值、且两条点云线段中每一条点云线段的两个端点到另一条点云线段的距离均小于第二点线距离阈值,则将两条点云线段分为一类。
其中,第二角度阈值大于第一角度阈值,第二线距离阈值大于第一线距离阈值,第二重叠阈值小于第一重叠阈值,第二点线距离大于第一点线距离。
其中,将点云线段集中所有点云线段的端点作为拟合点进行直线拟合,得到拟合线段包括:对点云线段集中的点云线段进行分类,得到多个点云线段类;分别将每一点云线段类中的所有点云线段的端点作为拟合点进行直线拟合,得到多条拟合线段。
其中,获取点云在拟合线段上的投影点包括:计算点云到每条拟合线段的垂直距离,获取点云在垂直距离最短的拟合线段上的投影点。
其中,拟合线段的表示参数包括直线角度和直线距离,投影点的坐标为(xnew,ynew),其中,
其中,(x,y)为点云的原坐标,θ为拟合线段的角度,d为拟合线段的距离。
其中,对点云进行线特征提取,得到多条初始点云线段之前还包括:将点云映射到初始栅格地图中,若点云落在障碍物区域则保留该点云,再对该点云进行线特征提取;初始栅格地图是利用原始点云数据构建的。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种机器人地图构建设备,机器人地图构建设备包括处理器,处理器用于执行指令以实现上述的机器人地图构建方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,计算机可读存储介质用于存储指令/程序数据,指令/程序数据能够被执行以实现上述的机器人地图构建方法。
本申请的有益效果是:区别于现有技术的情况,本申请通过对点云线段进行线段融合和直线拟合,使处理后的点云数据考虑进了人类环境中结构化特征较多(线特征)的问题,能够更准确的估计线特征的位置,生成局部精度更高的地图。
附图说明
图1是本申请实施方式中一机器人地图构建方法的流程示意图;
图2是本申请实施方式中另一机器人地图构建方法的流程示意图;
图3是本申请实施方式中机器人地图构建装置的结构示意图;
图4是本申请实施方式中机器人地图构建设备的结构示意图;
图5为本申请实施方式中计算机可读存储介质的结构示意图。
具体实施方式
为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。
本申请提供一种机器人地图构建方法,该方法中考虑到人类环境中结构化特征较多(线特征)的问题,在获取点云数据后,先基于线特征对点云数据进行了预处理,再用处理后的点云数据构建地图,能够更准确的估计线特征的位置,生成局部精度更高的地图。
请参阅图1,图1是本申请实施方式中一机器人地图构建方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施方式包括:
S110:获取点云数据,对点云进行线特征提取,得到多条初始点云线段。
其中,可以利用三维激光雷达获取点云数据,通过获取光脉冲打在物体上并反射回到接收器的传播时间,再根据光速已知的原理,将传播时间转换成据测量物的距离,然后对数据进行记录、分组和采集,形成三维激光点云数据,点云中每一个点包含有三维坐标和激光反射强度信息。在其他实施方式中,还可以利用其他方式获取点云数据,本申请中对点云数据的获取方法不做限定,本申请中将以激光点云数据为例进行描述。
点云数据包括多帧激光点云数据,可以采用点云直线提取算法对每一帧的点云进行线段提取,得到多条初始点云线段,本申请中对初始点云线段的提取方法不做限定。
S120:对多条初始点云线段进行线段融合,得到多条融合点云线段。
其中,初始点云线段为直接对点云进行线特征提取得到的点云线段,融合点云线段是融合形成的点云线段,可以是两条初始点云线段融合形成的融合点云线段,也可以是初始点云线段与融合点云线段融合形成的融合点云线段,还可以是两条融合点云线段融合形成的融合点云线段。即在进行线段融合时,应遍历每一条点云线段,依次判断每一条点云线段是否需要融合,即一次融合后形成的融合点云线段也应参与遍历,以判断其是否需要再次融合。
可以结合点云线段的直线角度、直线距离等直线参数来设定融合条件,以判断是否需要将两条点云线段融合为一体。
S130:将点云线段集中所有点云线段的端点作为拟合点进行直线拟合,得到拟合线段。
其中,在单帧激光测量噪声比较大的时候,会使融合点云线段偏离栅格地图中障碍物位置,使整条线段处于未知或者自由区域,导致与实际情况不符。本实施方式中,对点云线段进行融合后再对点云线段进行直线拟合,能够克服融合点云线段偏离的问题。本申请中对直线拟合的方法不做限定,例如可以基于奇异值分解(Singular ValueDecomposition,SVD)的直线拟合方法进行直线拟合。
S140:获取点云在拟合线段上的投影点。
其中,在投影前应先判断该点云是否属于该拟合线段。可计算点云到拟合线段的垂直距离,判断该垂直距离是否小于预设阈值,若小于则认为该点云属于该拟合线段,进行投影获取投影点。若大于则不对该点云数据进行处理,保留该点云的原始点云数据。
S150:利用投影点构建栅格地图。
利用投影点的坐标替代该点云的原坐标,相当于形成了新的点云数据,然后用新的点云数据构建栅格地图。
该实施方式中,通过对点云线段进行线段融合和直线拟合,使处理后的点云数据考虑进了人类环境中结构化特征较多(线特征)的问题,能够更准确的估计线特征的位置,生成局部精度更高的地图。
在一实施方式中,遍历每一条点云线段,判断两条点云线段是否满足预设的融合条件,当满足融合条件时,将两条点云线段融合为一体形成融合点云线段。其中,所遍历的点云线段包括未融合的初始点云线段和融合点云线段,即一次融合生成的融合点云线段也要参与遍历,以判断其是否需要再次融合,直至所有点云线段均不再需要融合。遍历每一条点云线段时,可按顺序遍历每一帧激光点云,并按顺序对每一帧的点云线段进行融合,如可先提取第一帧点云的点云线段和第二帧点云的点云线段,依次判断第二帧点云的点云线段是否需要与第一帧点云的点云线段进行融合,遍历完第一帧和第二帧的点云线段后,再提取第三帧点云的点云线段,判断第三帧点云的点云线段是否需要与第一二帧融合后的点云线段进行融合……以此类推,直至遍历完所有帧的点云。
在一实施方式中,点云线段的表示参数包括直线角度、直线距离和线段长度,可预先设定点云线段的融合条件为:只有当两条点云线段的角度差小于第一角度阈值、两条点云线段的距离差小于第一直线距离阈值、两条点云线段的重叠区域大于第一重叠阈值、且两条点云线段中每一条点云线段的端点到另一条点云线段的距离均小于第一点线距离阈值时,才会对两条点云线段进行融合。
具体地,对每一条点云线段用如下参数表示:霍夫空间下的直线角度θ,霍夫空间下的直线距离d,线段的两个端点ps,pe。判定两条点云线段是否融合的条件如下:
(a):两条点云线段的角度差Δθ小于第一角度阈值(τ1),距离差Δd小于第一直线距离阈值(ε1)。
|θ1-θ2|<τ1
|d1-d2|<ε1
(b):两条点云线段的重叠区域大于第一重叠阈值(∈1),重叠区域计算方式如下式:
其中,length1为点云线段1的长度,length2为点云线段2的长度,distance()表示两个点之间的距离,
为点云线段1的起点,
为点云线段2的终点。若∈<0,表示条线段不重叠,反之∈>0,表示重叠,且∈越大,重叠区域越大。
(c):两条点云线段中的每一条点云线段的两个端点ps,pe到另一条点云线段的垂直距离均小于第一点线距离阈值(κ1)。其中,第一点线距离阈值(κ1)的大小与点云线段的重叠区域相关,若重叠区域越大,第一点线距离阈值(κ1)值亦越大。
当两条点云线段同时满足上述三个条件时,才能对两条点云线段进行融合。
该实施方式中,在设定融合条件时,不仅考虑了两条点云线段之间的角度差和距离差,还考虑了两条点云线段是否重叠,能够防止误融合,提高线段融合的鲁棒性。
两条点云线段融合后会生成新的融合线段,新的融合线段的参数θnew,dnew如下:
其中,length1为点云线段1的长度,length2为点云线段2的长度,count表示该条点云线段融合的次数,若点云线段为初始点云线段则count为1,若点云线段为一次融合得到的融合点云线段则count为2,依次类推,得到每条点云线段的融合次数。
该实施方式中,采用了基于线段长度的加权平均方法计算融合后的点云线段的长度和距离,比简单的基于次数的加权平均方法更具有鲁棒性。
在一实施方式中,在线段融合后,可能有些本应属于同一类的点云线段还是没有被融合,为提高点云数据的可靠性,在进行线段拟合前还可以对点云线段进行分类。
可预先设置点云线段的分类条件为:若两条点云线段的角度差小于第二角度阈值(τ2)、两条点云线段的距离差小于第二线距离阈值(ε2)、两条点云线段的重叠区域大于第二重叠阈值(∈2)、且两条点云线段中每一条点云线段的两个端点到另一条点云线段的距离均小于第二点线距离阈值(κ2),则将两条点云线段分为一类。即可按照线段融合的规则对点云线段进行分类,只是线段融合时线段会融合形成一条新的线段,但线段分类时,只是将点云线段分成多个类,每个点云线段类中是点云线段的集合,并不会产生新的点云线段。
在一实施方式中,第二角度阈值大于第一角度阈值(τ1<τ2),第二线距离阈值大于第一线距离阈值(ε1<ε2),第二重叠阈值小于第一重叠阈值(∈1>∈2),第二点线距离大于第一点线距离(κ1<κ2)。即在同样的规则下,线段分类的条件参数会比线段融合的条件参数更宽松,这是因为在线段融合过程中,因为线段数量多,且为单次观测,数据的误差较大,所以线段融合过程中的各项参数设置较严,避免出现误融合,但经过线段融合后,只剩下较少的线段,而且这些线段是经过大量数据融合后的结果,可靠性更高,所以线段的分类过程中各项参数的设置较松,得到点云线段类。在进行线段拟合时,可以以一个点云线段类为单位,每一类点云线段类进行一次拟合,得到一个拟合直线,共得到多条拟合直线。
请参阅图2,图2是本申请实施方式中另一机器人地图构建方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图2所示的流程顺序为限。如图2所示,本实施方式包括:
S210:获取点云数据,并利用点云数据构建出初始栅格地图。
其中,可以利用现有SLAM算法对场景进行建图,生成环境的栅格地图,栅格地图是一幅灰度图,灰度值为0表示为障碍物,灰度值为100表示未知区域,灰度值为255表示自由区域。
S220:基于初始栅格地图对每一帧点云数据进行筛选。
由于激光数据存在噪声,以及移动机器人在建图过程中存在激光打地等原因,每一帧的激光点云数据并不一定是环境中障碍物,因此,在对激光点云进行线段提取前,先对其进行预处理,过滤掉部分点云数据,减少线段误提取概率。
其中,初始栅格地图是所有激光点云数据融合后的结果,栅格地图中灰度值为0的区域表示是环境中障碍物的概率很大,因此,将每一帧激光点云投射到初始栅格地图中,若是该点云落在灰度值为0的区域则说明该点云是障碍物的概率较大应保留该点云,否则说明该点云是噪声的概率较大应去除该点云。
S230:对点云进行线特征提取,得到多条初始点云线段。
S240:对多条初始点云线段进行线段融合,得到多条融合点云线段。
S250:对点云线段进行分类,得到多个点云线段类。
S260:将每一点云线段类中所有点云线段的端点作为拟合点进行直线拟合,得到多条拟合线段。
S270:获取点云在所述拟合线段上的投影点。
计算点云到每一条拟合线段的垂直距离,选取垂直最小的一条拟合线段,判断该垂直距离是否小于预设阈值,若小于则认为该点云属于该拟合线段,进行投影获取投影点,若大于则舍弃该点云。遍历每一帧激光点云,得到所有点云的投影点。
其中,投影点的坐标为(xnew,ynew)
其中,(x,y)为点云的原坐标,θ为拟合线段的角度,d为拟合线段的距离。
S280:利用投影点重新构建栅格地图。
使用点云的投影点的坐标代替点云的原坐标,形成新的点云数据,利用新的点云数据重新构建栅格地图。
该实施方式中,通过对点云线段进行线段融合和直线拟合,使处理后的点云数据考虑进了人类环境中结构化特征较多(线特征)的问题,能够更准确的估计线特征的位置,生成局部精度更高的地图。且该方法在构建地图时不需要设置额外参考物。
请参阅图3,图3是本申请实施方式中机器人地图构建装置的结构示意图。该实施方式中,机器人地图构建装置包括获取模块31、融合模块32、拟合模块33、投影模块34和构建模块35。
其中,获取模块31用于获取点云数据,对点云进行线特征提取,得到多条初始点云线段;融合模块32用于对多条初始点云线段进行线段融合,得到多条融合点云线段;拟合模块33用于将点云线段集中所有点云线段的端点作为拟合点进行直线拟合,得到拟合线段,其中,点云线段集为融合点云线段和未融合的初始点云线段的集合;投影模块34用于获取点云在拟合线段上的投影点;构建模块35用于利用投影点构建栅格地图。该机器人地图构建装置在构建地图时,考虑到了人类环境中结构化特征较多(线特征)的问题,在获取点云数据后,先基于线特征对点云数据进行了预处理,再用处理后的点云数据构建地图,能够更准确的估计线特征的位置,生成局部精度更高的地图。
请参阅图4,图4是本申请实施方式中机器人地图构建设备的结构示意图。该实施方式中,机器人地图构建设备10包括处理器11。
处理器11还可以称为CPU(Central Processing Unit,中央处理单元)。处理器11可能是一种集成电路芯片,具有信号的处理能力。处理器11还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器11也可以是任何常规的处理器等。
机器人地图构建设备10可以进一步包括存储器(图中未示出),用于存储处理器11运行所需的指令和数据。
处理器11用于执行指令以实现上述本申请机器人地图构建方法任一实施例及任意不冲突的组合所提供的方法。
请参阅图5,图5为本申请实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质20存储有指令/程序数据21,该指令/程序数据21被执行时实现本申请机器人地图构建方法任一实施例以及任意不冲突的组合所提供的方法。其中,该指令/程序数据21可以形成程序文件以软件产品的形式存储在上述存储介质20中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质20包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。