一种障碍物检测方法、终端及计算机可读存储介质
技术领域
本发明实施例涉及计算机视觉领域,特别涉及一种障碍物检测方法、终端及计算机可读存储介质。
背景技术
机器人在进行导航、避障、操作等多种任务时,需要对自身所在的环境进行充分的理解。实时准确地获取周围环境信息是机器人顺利工作的重要前提。机器人可以基于即时定位与地图构建(simultaneous localization and mapping,SLAM)技术,一边进行定位,一边构建环境地图。在建图过程中,机器人可以通过一种或多种传感器对周边的环境进行了障碍物检测。
然而,发明人发现现有技术中至少存在如下问题:虽然机器人可以通过一种或多种传感器对周边的环境进行了障碍物检测,但是,受限于目前主流的SLAM用传感器的缺点,避障问题并无法得到很好的解决。比如,在实际的场景中一些散落在地上的小物体、不平整的地面等因素都会导致机器人无法正确避障。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施方式的目的在于提供一种障碍物检测方法、终端及计算机可读存储介质,使得能够更准确的检测周围环境的障碍物,进而更好地进行避障等操作。
为解决上述技术问题,本发明的实施方式提供了一种障碍物检测方法,包括以下步骤:获取终端所在场景的图像数据;根据图像数据,对终端所在场景进行三维重建;通过障碍检测算法,识别终端所在场景中的障碍物;根据三维重建的结果,以及障碍检测算法的识别结果,确定终端所在场景中的障碍物信息。
本发明的实施方式还提供了一种终端,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施方式提及的障碍物检测方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的障碍物检测方法。
本发明实施方式相对于现有技术而言,在采用障碍检测算法识别障碍物的基础上,对终端所在场景进行三维重建,利用三维重建的结果来辅助终端进行障碍物判断,使得终端能够获知障碍检测算法无法识别的障碍物,得到更加准确的障碍物信息,进而可以更合理地规划避障路径,更准确地进行避障。
另外,根据三维重建的结果,以及障碍检测算法的识别结果,确定终端周围的障碍物信息,具体包括:若确定识别结果指示待测位置存在障碍物,或,三维重建的结果指示待测位置存在障碍物,确定障碍物信息指示待测位置存在障碍物;若确定识别结果指示待测位置不存在障碍物,且,三维重建结果指示待测位置不存在障碍物,确定障碍物信息指示待测位置不存在障碍物。该实现中,使得终端能够识别更多的障碍物,得到更准确的障碍物信息。
另外,三维重建的结果包括物体的三维模型;在根据三维重建的结果,以及障碍检测算法的识别结果,确定终端所在场景中的障碍物信息之后,障碍物检测方法还包括:根据障碍物信息,规划路径,并按照规划的路径移动;在移动过程中,若确定物体与终端的距离大于预设值,删除物体的三维模型。该实现中,能够释放终端的内存,
另外,根据图像数据,对终端所在场景进行三维重建,具体包括:对图像数据进行语义分割,确定图像数据中的物体的参量,物体的参量包括物体所占区域的面积,和/或,物体与终端的距离;根据物体的参量,确定图像数据中的待重建物体;对待重建物体进行三维重建。该实现中,避免了三维重建对终端造成过大的负担,造成不必要的性能损耗的问题,减少了三维重建对终端的计算性能和存储空间的损耗。
另外,物体的参量为物体所占区域的面积,或,物体与终端的距离;根据物体的参量,确定图像数据中的待重建物体,具体包括:判断物体的参量是否小于第一阈值;若确定是,将物体作为待重建物体。该实现中,减少了三维重建过程的计算量。
另外,物体的参量为物体所占区域的面积;在根据物体的参量,确定图像数据中的待重建物体之前,障碍物检测方法还包括:按照公式a,计算第一阈值;公式a:P=fp/(d-fd)2;公式a中,P表示第一阈值,fp表示第一调节因子,d表示物体与终端的距离,fd表示第二调节因子。该实现中,动态调整第一阈值,使得对细小物体的判断更为准确,
另外,物体的参量包括物体所占区域的面积,以及物体与终端的距离;根据物体的参量,确定图像数据中的待重建物体,具体包括:在确定物体所占区域的面积小于第二阈值,且,物体与终端的距离小于第三阈值后,根据物体所占区域的面积和物体与终端的距离,确定判断因子;判断判断因子是否大于第四阈值;若确定是,将物体作为待重建物体。该实现中,使得终端既能准确识别细小的物体,又能减少对大体积物体或远距离物体进行三维重建所造成的资源浪费,保证终端操作的实时性。
另外,判断因子与物体所占区域的面积、物体与终端的距离的约束关系为:公式b:公式b中,V表示判断因子,d表示物体与终端的距离,fd表示第二调节因子,D表示第三阈值,P表示第五阈值,s表示物体所占区域的面积,sd表示第三调节因子,其中,第五阈值等于第二阈值除以第三调节因子。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明的第一实施方式的障碍物检测方法的流程图;
图2是本发明的第二实施方式的障碍物检测方法的流程图;
图3是本发明的第二实施方式的避障方法的流程示意图;
图4是本发明的第三实施方式的障碍物检测装置的结构示意图;
图5是本发明的第四实施方式的终端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种障碍物检测方法,应用于终端,例如,机器人等。如图1所示,该障碍物检测方法包括以下步骤:
步骤101:获取终端所在场景的图像数据。
具体地说,终端可以通过传感器获取终端所在场景的图像数据。图像数据中包括彩色图像数据和深度数据,彩色图像数据可以来自彩色摄像头,深度数据可以来自深度摄像头,也可以由两个或多个彩色摄像头的彩色图像数据计算能得到。其中,在基于彩色图像数据和深度数据进行障碍物检测前,可以先将彩色图像数据和深度数据对齐。
在一个例子中,终端可以获取连续的图像数据,即传感器持续拍摄图像,以使终端可以根据自身所在的实时环境,对周围环境的障碍物进行检测。
步骤102:根据图像数据,对终端所在场景进行三维重建。
具体地说,基于三维重建技术,终端根据图像数据,对终端所在场景进行三维重建。
需要说明的是,本领域技术人员可以理解,终端可以对周围环境进行全局三维重建,也可以根据需要,对周围环境进行局部三维重建,本实施方式不限制三维重建的范围。
在一个例子中,终端对周围环境进行局部三维重建。具体地说,终端对图像数据进行语义分割,确定图像数据中的物体的参量,物体的参量包括物体所占区域的面积,和/或,物体与终端的距离;根据物体的参量,确定图像数据中的待重建物体;对待重建物体进行三维重建。其中,物体所占区域是指物体的图像在图像数据中的区域。
值得一提的是,对周围环境进行局部三维重建,可以避免三维重建对终端造成过大的负担,造成不必要的性能损耗的问题,减少了三维重建对终端的计算性能和存储空间的损耗。
以下对选择不同的参量时,确定待重建物体的方法进行举例说明。
情况1:物体的参量为物体所占区域的面积,或,物体与终端的距离。该情况下,终端判断物体的参量是否小于第一阈值;若确定是,将物体作为待重建物体。当物体的参量为物体所占区域的面积时,若物体的所占区域大于第一阈值,则认为该物体为尺寸较大的物体,通过传感器会比较容易感知到,即可以通过障碍检测算法检测到,无需对该物体进行三维重建,故不会将该物体作为待重建物体。当物体的参量为物体与终端的距离时,若物体与终端的距离大于第一阈值,则物体与终端距离较远,该物体对终端的运动影响较小,无需对该物体进行三维重建,故不会将该物体作为待重建物体。
在一个例子中,终端可以通过距离传感器检测物体与终端的距离,也可以根据SLAM模块得到的位姿信息,以及物体在图像数据中的位置信息,计算物体与终端的距离,本实施方式不限制确定终端与物体的距离的方法。
在一个例子中,当物体的参量为物体所占区域的面积时,发明人考虑到,物体的远近也会影响物体所占区域的面积在图像数据上的大小变化。将远近关系看作相似变换,那么,对于相同的物体,其与终端的距离越远,它所占区域的面积也就越小,阈值对应的第一阈值也就越小,由此可见,第一阈值和物体与终端的距离成反比关系。故,当物体的参量为物体所占区域的面积时,终端可以按照公式a,计算第一阈值。
公式a:P=fp/(d-fd)2;
公式a中,P表示第一阈值,fp表示第一调节因子,d表示物体与终端的距离,fd表示第二调节因子。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据需要,设置第一调节因子和第二调节因子的数值,例如,可以将第一调节因子设置为0-0.5中的任意数值,如0.25第二调节因子设置为0-1中的任意数值,如0.3。
需要说明的是,本领域技术人员可以理解,第一阈值可以根据需要设置,物体所占区域的面积对应的第一阈值和物体与终端的距离对应的第一阈值可以相同,也可以不同,此处不作限定。
值得一提的是,终端不对能够通过障碍检测算法检测到的物体,或,与终端距离较远的物体进行三维重建,减少了三维重建过程的计算量。
情况2:物体的参量包括物体所占区域的面积,以及物体与终端的距离。在确定物体所占区域的面积小于第二阈值,且,物体与终端的距离小于第三阈值后,根据物体所占区域的面积和物体与终端的距离,确定判断因子;判断判断因子是否大于第四阈值;若确定是,将物体作为待重建物体。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据情况1中物体的参量为物体所占区域的面积时,第一阈值的计算方式,来计算第二阈值,此处不再赘述。
在一个例子中,判断因子与物体所占区域的面积、物体与终端的距离的约束关系为:
公式b:
公式b中,V表示判断因子,d表示物体与终端的距离,fd表示第二调节因子,D表示第三阈值,P表示第五阈值,s表示物体所占区域的面积,sd表示第三调节因子,其中,第五阈值等于第二阈值除以第三调节因子。
通过公式b可知,对于同一物体,物体距离终端越远,d越大,s越小;根据公式a可知,d越大,P越小;而d越大,s越小,P越小,V越小。终端综合考虑距离因素和物体所占区域的面积因素,筛选距离终端较近的细小物体,提高了识别细小物体的准确率。
需要说明的是,本领域技术人员可以理解,第二调节因子、第三阈值、第五阈值和第三调节因子等参数可以实际场景的变化来预先设置,以使约束关系适应不同的场景情况。
在一个例子中,终端中存储有场景和第二调节因子的取值、第三阈值的取值、第五阈值的取值和第三调节因子的取值的对应关系,在按照约束关系,对判断因子进行计算之前,终端先确定当前的场景,根据当前的场景,确定第二调节因子的取值、第三阈值的取值、第五阈值的取值和第三调节因子的取值。
例如,在室内情况下,可以令fd=0.3,D=5,即5米范围内,sd=0.5*0.2,即0.5*0.2的面积作为阈值。
需要说明的是,本领域技术人员可以理解,sd的具体取值可以根据实际情况来确定,D的取值则可以根据终端的摄像头的扫描范围和实际重建区域来变动,例如,D可以设置为3~5米之间,P的具体取值可以根据公式a计算。
需要说明的是,本领域技术人员可以理解,实际应用中,第四阈值可以根据需要设置,例如,可以将第四阈值设置为[3,10]中的任意数值,本实施方式不限制第四阈值的取值范围。
值得一提的是,终端综合考虑物体与自身的距离和物体所占区域的面积因素,筛选自身周围环境中的细小的物体,使得终端能够更准确地判定物体的实际大小,进而使得终端既能准确识别细小的物体,又能减少对大体积物体或远距离物体进行三维重建所造成的资源浪费,保证终端操作的实时性。
在一个例子中,终端在基于当前帧的图像数据完成三维重建后,可以根据后续帧中的图像数据,对三维重建的结果进行优化,使得三维重建的结果更为准确。
步骤103:通过障碍检测算法,识别终端所在场景中的障碍物。
具体地说,终端可以通过障碍检测算法,或者成为避障算法,对终端的行进路线上出现的障碍物进行检测。基于障碍检测算法,终端可以检测到诸如桌椅、行人、车辆等尺寸较大的障碍物。
需要说明的是,为阐述清楚,本实施方式中,将步骤103作为步骤102的后续步骤,实际应该中,步骤103和步骤102可以同时进行,也可以先执行步骤103,再执行步骤102,本实施方式不限制步骤102和步骤103的执行顺序。
步骤104:根据三维重建的结果,以及障碍检测算法的识别结果,确定终端所在场景中的障碍物信息。
具体地说,障碍检测算法可以对终端所在场景中的尺寸较大的障碍物进行检测,但对于细小的物体或处于视野死角的物体,终端无法通过障碍检测算法识别细小物体。本实施方式中,新增一个三维重建的过程。终端基于三维重建技术,将这些不易被感知的物体以三维的形式表现出来,辅助终端进行障碍物的检测判断,使得终端能够更准确地检测周围环境中的障碍物,进而更好的进行避障等操作。
在一个例子中,终端结合三维重建的结果和障碍检测算法的识别结果,确定障碍物信息的过程如下:终端若确定识别结果指示待测位置存在障碍物,或,三维重建的结果指示待测位置存在障碍物,确定障碍物信息指示待测位置存在障碍物。终端若确定识别结果指示待测位置不存在障碍物,且,三维重建结果指示待测位置不存在障碍物,确定障碍物信息指示待测位置不存在障碍物。
需要说明的是,本领域技术人员可以理解,实际应用中,终端可以在获取到障碍物信息后,基于应用场景的需求,进行其他操作,本实施方式不限制障碍物信息的使用方式。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的障碍物检测方法,在采用障碍检测算法识别障碍物的基础上,对终端所在场景进行三维重建,利用三维重建的结果来辅助终端进行障碍物判断,使得终端能够获知障碍检测算法无法识别的障碍物,得到更加准确的障碍物信息,进而可以更合理地规划避障路径,更准确地进行避障。除此之外,终端对周围环境中的物体进行筛选,有选择的对一部分物体进行三维重建,使得能够减少三维重建对终端性能上的压力,保证终端操作的实时性。
本发明的第二实施方式涉及一种障碍物检测方法。本实施方式在第一实施方式的基础上做了进一步改进,具体改进之处为:本实施方式中,终端动态地对三维重建的结果进行更新。
具体的说,如图2所示,在本实施方式中,包含步骤201至步骤206,其中,步骤201至步骤204分别与第一实施方式中的步骤101至步骤104大致相同,此处不再赘述。下面主要介绍不同之处:
步骤201:获取终端所在场景的图像数据。
步骤202:根据图像数据,对终端所在场景进行三维重建。
步骤203:通过障碍检测算法,识别终端所在场景中的障碍物。
步骤204:根据三维重建的结果,以及障碍检测算法的识别结果,确定终端所在场景中的障碍物信息。
步骤205:根据障碍物信息,规划路径,并按照规划的路径移动。
具体地说,终端可以在得到障碍物信息后,将障碍物信息反馈至SLAM模块,以便SLAM模块基于障碍物信息进行进一步的定位建图和路径规划。在SLAM模块完成路径规划后,终端按照规划的路径移动,以避开障碍物。
步骤206:在移动过程中,若确定物体与终端的距离大于预设值,删除物体的三维模型。
具体地说,终端在移动过程中,可以连续拍摄图像数据,并基于拍摄的图像数据,持续更新终端所在场景的三维重建的结果,即三维重建得到的模型。随着终端的移动,有些物体与终端的距离增大,其对终端的行进影响减小。当物体与终端的距离大于预设值时,可以认为该物体对终端接下来的运动几乎不会产生影响,该情况下,终端可以删除该物体的三维模型,即从内存中移除该物体的三维模型,以减少性能损耗。
需要说明的是,本领域技术人员可以理解,实际应用中,可以根据终端的计算性能、内存大小等因素,确定预设值,例如,可以将预设值设置为5米。本实施方式不限制预设值的具体取值。
以下对终端的避障方法进行举例说明。具体地说,终端的避障方法的流程示意图如图3所示,包括以下步骤:
步骤301:输入图像数据。图像数据包括彩色图像数据和深度数据。终端将传感器获得的彩色图像数据与深度数据进行对齐,确保每个彩色图像都与深度图像是对应的,然后将图像数据进行校正,减少传感器带来的图像失真影响。
步骤302:进行SLAM定位跟踪。开发人员可以根据需要,选择合适的SLAM技术。终端基于SLAM技术,对当前场景进行建图,同时对终端进行定位,计算当前的位置姿态信息。在行走过程中,终端机器人可以通过SLAM技术实时确定当前所在位置,同时可以在丢失姿态信息后进行重定位,重新确定当前情况,以及遇到障碍物后重新进行路径规划。
步骤303:障碍检测算法检测障碍。终端通过障碍检测算法(又称为避障算法)对于行进路线上出现的障碍物进行判断,诸如桌椅、行人、车辆等。这些障碍物通常尺寸较大,通过传感器可以很容易感知到。
步骤304:细小物体判断。终端可以参考第一实施方式提及的确定待重建物体的方法的相关内容,确定周围环境中的细小物体,将细小物体作为待重建物体,此处不再准赘述。
步骤305:进行局部三维重建。终端将基于SLAM技术得到的当前姿态信息,以及图像数据送入到三维重建模块,用于对周围环境中的细小物体进行三维重建。三维重建的结果将用于辅助终端对障碍物的检测,减少视野盲区以及细小障碍物的影响。
步骤306:重建优化。由于基于初始帧得到的三维模型比较粗糙,终端可以基于后续帧,对三维模型进行优化,使得三维模型更为完善,因此,若当前的图像数据是初始帧,不进行优化过程,若当前的图像数据不是初始帧,可以基于该图像数据,对之前创建的三维模型进行优化。
步骤307:障碍物判断。终端可以得到基于三维重建,对周围环境中的障碍物进行判断。例如,终端若确定周围的某一位置存在物体的三维模型,则认为该位置存在障碍物。
步骤308:避障结果优化。终端结合障碍检测算法检测到的障碍物,以及基于三维重建的结果确定的障碍物,确定终端周围的障碍物信息。终端确定障碍物信息的方式可参考第一实施方式的步骤104的相关内容,此处不再赘述。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的障碍物检测方法,在采用障碍检测算法识别障碍物的基础上,对终端所在场景进行三维重建,利用重建的三维信息来辅助终端进行障碍物判断,使得终端可以更准确地识别周围环境中的障碍物,能够更合理地规划避障路径。除此之外,终端将超出预设范围的物体的三维模型移除,可以减少终端的性能损耗,释放终端内存。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第三实施方式涉及一种障碍物检测装置,如图4所示,包括:获取模块401、三维重建模块402、检测模块403和确定模块404。获取模块401用于获取终端所在场景的图像数据。三维重建模块402用于根据图像数据,对终端所在场景进行三维重建。检测模块403用于通过障碍检测算法,识别终端所在场景中的障碍物。确定模块404用于根据三维重建的结果,以及障碍检测算法的识别结果,确定终端所在场景中的障碍物信息。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明的第四实施方式涉及一种终端,如图5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述实施方式提及的障碍物检测方法。
该终端包括:一个或多个处理器501以及存储器502,图5中以一个处理器501为例。处理器501、存储器502可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述障碍物检测方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器502中,当被一个或者多个处理器501执行时,执行上述任意方法实施方式中的障碍物检测方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明的第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。