一种充电桩的识别方法、识别装置及机器人
技术领域
本发明涉及机器人技术领域,尤指一种充电桩的识别方法、识别装置及机器人。
背景技术
随着技术的发展,机器人的应用越来越广泛,但若要保证机器人可以长时间运行,需要为机器人充电,一般可以通过设置充电桩,在机器人识别到充电桩后可以实现自行充电,因此,对充电桩的识别就尤为重要。
那么,如何实现对充电桩的识别,是本领域技术人员亟待解决的技术问题。
发明内容
本发明实施例提供了一种充电桩的识别方法、识别装置及机器人,用以实现对充电桩的识别。
第一方面,本发明实施例提供了一种充电桩的识别方法,所述充电桩包括凹陷结构和非凹陷结构,所述充电桩应用于机器人;该识别方法包括:
在获取到所述机器人周围的点云数据时,对获取到的所述点云数据进行分区得到多个子区域,并对各所述子区域进行筛选处理,将筛选出所述子区域定义为第一子区域;
根据所述第一子区域内的点云数据、以及预设的直线拟合算法,确定所述第一子区域对应的第一参考直线;
根据所述第一子区域对应的所述第一参考直线,确定所述第一子区域对应的用于表示所述非凹陷结构的第一点云数据、以及用于表示所述凹陷结构的第二点云数据;
在根据所述第一子区域对应的所述第一点云数据和所述第二点云数据、以及预设的霍夫曼算法,确定出满足预设的识别规则时,根据所述第一子区域内的点云数据,对所述充电桩进行识别。
可选地,在本发明实施例中,根据所述第一子区域内的点云数据、以及预设的直线拟合算法,确定所述第一子区域对应的第一参考直线,具体包括:
根据所述第一子区域内的点云数据、以及预设的直线拟合算法,确定所述第一子区域对应的第一直线;所述第一直线包含多个点,且各所述第一直线被依次确定出;
根据各所述第一子区域对应的第一直线的数量,对各所述第一子区域进行筛选,将筛选出的所述第一子区域定义为第二子区域;
针对任一所述第二子区域:根据该第二子区域首次和第二次确定出的两条第一直线、以及该第二子区域内的点云数据,确定所述第一参考直线,并确定所述第一参考直线的斜率和截距。
可选地,在本发明实施例中,根据该第二子区域首次和第二次确定出的两条第一直线、以及该第二子区域内的点云数据,确定所述第一参考直线,具体包括:
判断该第二子区域首次和第二次确定出的两条第一直线的斜率差值是否小于第一阈值;
若否,根据该第二子区域内各所述点分别到所述两条第一直线的距离,确定出所述两条第一直线对应的点集合时,从所述两条第一直线对应的点集合中选择出包含所述点最多的点集合,并按照所述直线拟合算法,对选择出的点集合包含的各所述点进行拟合后,确定所述第一参考直线;
若是,根据该第二子区域内各所述点到首次确定出的第一直线的距离,确定首次确定出的第一直线对应的点集合,并按照所述直线拟合算法,对该点集合中的各所述点进行拟合后,确定所述第一参考直线。
可选地,在本发明实施例中,根据所述第一子区域对应的所述第一参考直线,确定所述第一子区域对应的用于表示所述非凹陷结构的第一点云数据、以及用于表示所述凹陷结构的第二点云数据,具体包括:
确定所述第一子区域包括的各点到对应的所述第一参考直线之间的距离;
根据确定出的距离,对所述第一子区域包括的各所述点进行分类,得到所述第一子区域对应的所述第一点云数据和所述第二点云数据。
可选地,在本发明实施例中,所述预设的识别规则为同时满足以下条件:
对于任一所述第一子区域:
该第一子区域对应的所述第一点云数据所表示的所述非凹陷结构的数量不小于第二阈值;
在确定出该第一子区域对应的所述第一点云数据所表示的各所述非凹陷结构的总长度时,所述总长度未超出第一预设范围;所述总长度为各所述非凹陷结构对应的第一长度的总和,所述第一长度为:在将该第一子区域内的点云数据转换成数组后,根据位于所述数组中用于表示每个所述非凹陷结构的点中位于首部和尾部的两个所述点确定出的长度;
该第一子区域对应的所述第二点云数据中的各点到对应所述第一参考直线的距离的平均值未超出第二预设范围;
在将该第一子区域对应的所述第二点云数据中各点在第一方向上的坐标值带入至对应所述第一参考直线对应的函数中,得到各所述点对应的第一数值时,计算出各所述点在第二方向上的坐标值与对应所述第一数值之间的差值,各所述点对应的差值的平均值大于零;
以及,在根据预设的霍夫曼直线检测算法、以及该第一子区域内的点云数据,确定出该第一子区域对应的两条检测直线时,该第一子区域对应的所述两条检测直线的斜率的差值不大于第三阈值;其中,该第一子区域根据所述霍夫曼直线检测算法确定出多条第二直线,所述第二直线包括多个点,所述两条检测直线为各所述第二直线中包括所述点最多的两条第二直线。
可选地,在本发明实施例中,还包括:
在判断出任一第一子区域对应的总长度超出所述第一预设范围时,或在判断出该第一子区域对应的各所述点对应差值的平均值不大于零时,对该第一子区域赋予第一标记。
可选地,在本发明实施例中,在确定出不满足所述识别规则时,还包括:
将具有所述第一标记的第一子区域定义为第三子区域、以及不具有所述第一标记的第一子区域为第四子区域;
根据所述霍夫曼直线检测算法,将所述第三子区域对应的第一参考直线转换为第二参考直线;
根据所述第三子区域对应的第二参考直线,确定所述第三子区域对应的用于表示所述非凹陷结构的第一点云数据、以及用于表示所述凹陷结构的第二点云数据;
根据所述第三子区域对应的所述第一点云数据和所述第二点云数据、以及所述霍夫曼算法,判断是否满足所述识别规则;
若是,根据所述第三子区域和所述第四子区域内的点云数据,对所述充电桩进行识别;
若否,根据所述第四子区域内的点云数据,对所述充电桩进行识别。
可选地,在本发明实施例中,根据所述第一子区域内的点云数据,对所述充电桩进行识别,具体包括:
根据各所述第一子区域内的点云数据、以及所述充电桩的实际结构,从各所述第一子区域中筛选出目标子区域;
根据所述目标子区域内的点云数据,确定所述充电桩的位置信息。
可选地,在本发明实施例中,对各所述子区域进行筛选处理,具体包括:
针对任一所述子区域均执行以下过程:
判断任一所述子区域包括的点的数量是否小于第四阈值;
若是,则舍弃该子区域;
若否,则继续判断该子区域包括的各所述点与传感器之间的距离中的最小值是否大于第五阈值;
若大于,则舍弃该子区域;
若不大于,则继续判断该子区域的长度是否超出第三预设范围;所述子区域的长度为:在将所述子区域内的点云数据转换成数组后,根据位于所述数组中首部和尾部的两个所述点确定出的长度;
若超出,则舍弃该子区域;
若未超出,则保留该子区域。
可选地,在本发明实施例中,在判断该子区域包括的各所述点与传感器之间的距离中的最小值是否大于第五阈值之前,且在判断出任一所述子区域包括的点的数量不小于第四阈值之后,还包括:
对该子区域包括的无效点进行过滤处理;
其中,所述无效点为:该子区域包括的各所述点中与所述传感器之间的距离为零的点。
第二方面,本发明实施例提供了一种充电桩的识别装置,所述充电桩包括凹陷结构和非凹陷结构,所述充电桩应用于机器人;该识别装置包括:
第一单元,用于在获取到所述机器人周围的点云数据时,对获取到的所述点云数据进行分区得到多个子区域,并对各所述子区域进行筛选处理,将筛选出所述子区域定义为第一子区域;
第二单元,用于根据所述第一子区域内的点云数据、以及预设的直线拟合算法,确定所述第一子区域对应的第一参考直线;
第三单元,用于根据所述第一子区域对应的所述第一参考直线,确定所述第一子区域对应的用于表示所述非凹陷结构的第一点云数据、以及用于表示所述凹陷结构的第二点云数据;
第四单元,用于在根据所述第一子区域对应的所述第一点云数据和所述第二点云数据、以及预设的霍夫曼算法,确定出满足预设的识别规则时,根据所述第一子区域内的点云数据,对所述充电桩进行识别。
第三方面,本发明实施例提供了一种机器人,包括:传感器、以及如本发明实施例提供的上述识别装置;
其中,所述传感器用于:采集所述机器人周围的点云数据并发送至所述识别装置,以使所述识别装置根据所述点云数据对所述充电桩进行识别。本发明有益效果如下:
本发明实施例提供的一种充电桩的识别方法、识别装置及机器人,通过采用直线拟合算法和霍夫曼算法相结合的方式对充电桩进行识别,不仅可以匹配出充电桩的形状,还可以准确地计算出充电桩的位置信息,如此,可以准确地识别充电桩中的充电口,使得机器人可以准确地对准充电口进行充电,提高充电桩识别的准确性,从而降低了与充电桩结构相似物体的误识别的几率。
附图说明
图1为本发明实施例中提供的一种充电桩的结构示意图;
图2为本发明实施例中提供的一种识别方法的流程图;
图3为本发明实施例中提供的对各子区域的筛选过程的流程图;
图4为本发明实施例中提供的实施例的流程图;
图5为本发明实施例中提供的一种识别装置的结构示意图;
图6为本发明实施例中提供的一种机器人的结构示意图。
具体实施方式
下面将结合附图,对本发明实施例提供的一种充电桩的识别方法、识别装置及机器人的具体实施方式进行详细地说明。需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在介绍识别方法之前,首先介绍一个充电桩的结构。
在本发明实施例中,如图1所示,充电桩可以包括凹陷结构2和非凹陷结构1,其中,非凹陷结构1可以包括非凹陷结构和/或平面结构,也即在图1中,充电桩包括三个平面结构1、两个凹陷结构2、还有一个充电口3,其中凹陷结构2位于两个平面结构1之间。
说明一点,在本发明实施例中,充电桩的结构并不限于图1所示,只要是具有凹陷结构和非凹陷结构的充电桩,均可以采用下面将要介绍的识别方法进行识别。
具体地,本发明实施例提供了一种充电桩的识别方法,该充电桩应用于机器人,如图2所示,可以包括:
S201、获取机器人周围的点云数据;
其中,点云数据可以通过设置在机器人中的传感器(例如但不限于激光雷达)进行采集而获取,在采集点云数据时,可以保持传感器的位置不变,转动传感器的采集结构(例如用于采集点云数据的开口),且从0°转动至360°时,采集到的数据即为一帧点云数据。
每获取到一帧点云数据时,均需要执行S202至S205的过程,以便于对机器人周围的点云数据进行识别。
当然,获取点云数据的方式并不限于上述方式,还可以是其他可以获取点云数据的方式,在此并不限定。
S202、对获取到的点云数据进行分区得到多个子区域,并对各子区域进行筛选处理,将筛选出子区域定义为第一子区域;
其中,在将点云数据进行分区后,可以将每个分区内的点云数据转换成对应的数组,每个分区对应一个数组,且每个数组中包括对应分区内的全部的点;由于分区的每个点对应的数据包括:在采集该点时对应的角度信息、以及在采集该点时该点距离传感器的距离信息,所以在转换成数组时,可以根据对应分区内各点的角度信息,按照角度从小到大的顺序,依次将每个分区内的各店添加至对应的数组内,以便于后续识别过程中使用。
当然,在将分区转换成数组时,并不限于按照各点的角度从小到大的顺序进行转换,还可以按照其他规则进行转换,在此并不限定。
S203、根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一参考直线;
S204、根据第一子区域对应的第一参考直线,确定第一子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据;
S205、在根据第一子区域对应的第一点云数据和第二点云数据、以及预设的霍夫曼算法,确定出满足预设的识别规则时,根据第一子区域内的点云数据,对充电桩进行识别。
在本发明实施例中,通过采用直线拟合算法和霍夫曼算法相结合的方式对充电桩进行识别,不仅可以匹配出充电桩的形状,还可以准确地计算出充电桩的位置信息,如此,可以准确地识别充电桩中的充电口,使得机器人可以准确地对准充电口进行充电,提高充电桩识别的准确性,从而降低了与充电桩结构相似物体的误识别的几率。
在具体实施时,在本发明实施例中,对各子区域进行筛选处理,具体包括:
针对任一子区域均执行以下过程:
判断任一子区域包括的点的数量是否小于第四阈值;
若是,则舍弃该子区域;
若否,则继续判断该子区域包括的各点与传感器之间的距离中的最小值是否大于第五阈值;
若大于,则舍弃该子区域;
若不大于,则继续判断该子区域的长度是否超出第三预设范围;子区域的长度为:在将子区域内的点云数据转换成数组后,根据位于数组中首部和尾部的两个点确定出的长度;
若超出,则舍弃该子区域;
若未超出,则保留该子区域。
如此,通过对子区域的筛选,可以筛选出表示的并不是充电桩的点云数据对应的子区域(可以暂且称之为干扰子区域),以减少这些干扰子区域对后续识别过程造成的干扰,并且还可以减少后续识别过程的运算量,提高识别效率和准确率。
具体地,在本发明实施例中,在判断该子区域包括的各点与传感器之间的距离中的最小值是否大于第五阈值之前,且在判断出任一子区域包括的点的数量不小于第四阈值之后,还包括:
对该子区域包括的无效点进行过滤处理;
其中,无效点为:该子区域包括的各点中与传感器之间的距离为零的点。
如此,可以对非干扰子区域(也即包含有用于表示充电桩的点云数据的子区域)内的点进行筛选,去掉无效点,以减少无效点对后续识别过程造成的干扰,并且还可以减少后续识别过程的运算量,提高识别效率和准确率。
下面以具体实施例对各子区域的筛选过程进行说明。
结合图3所示。
S301、判断各子区域中是否存在包括的点的数量小于第四阈值的子区域;若是,执行S302;若否,执行S303;
S302、将包括的点的数量小于第四阈值的子区域删除或舍弃;执行S303;
S303、对各子区域包括的无效点进行过滤处理;
其中,该步骤S303中提及的各子区域可以理解为:经过S302处理之后剩余的子区域,或S301中提及的各子区域。
S304、判断S303中的各子区域中是否存在包括的各点与传感器之间的距离中的最小值大于第五阈值的子区域;若是,执行S305;若否,执行S306;
S305、将包括的各点与传感器之间的距离中的最小值大于第五阈值的子区域删除或舍弃;执行S306;
S306、判断各子区域中是否存在长度超出第三预设范围的子区域;若是,执行S307;若否,执行S308;
其中,该步骤S306中提及的各子区域可以理解为:经过S305处理之后剩余的子区域,或S303中提及的各子区域。
S307、将长度超出第三预设范围的子区域删除或舍弃;执行S308;
S308、将保留下来的子区域定义为第一子区域,得到多个第一子区域。
在具体实施时,在本发明实施例中,根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一参考直线,具体包括:
根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一直线;第一直线包含多个点,且各第一直线被依次确定出;
根据各第一子区域对应的第一直线的数量,对各第一子区域进行筛选,将筛选出的第一子区域定义为第二子区域;
针对任一第二子区域:根据该第二子区域首次和第二次确定出的两条第一直线、以及该第二子区域内的点云数据,确定第一参考直线,并确定第一参考直线的斜率和截距。
如此,可以通过上述简单的方式确定出第一参考直线,以便于后续根据第一参考直线确定出第一点云数据和第二点云数据,从而实现充电桩的识别。
可选地,直线拟合算法可以为但不限于最小二乘法直线拟合算法,此时,在根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一直线时,可以采用以下方式实现:
根据第一子区域对应的数组内包含的各点,从对应数组的第一个点开始选取m个点,按照最小二乘法直线拟合算法对m个点进行拟合得到一条第一直线(标记为直线0);
然后,选取第m+1个点,计算第m+1个点与直线0的距离(定义为距离A);
若距离A大于预设的阈值1时,则将第m+1个点作为新的起点并从第m+1个点开始再次选取m个点,按照最小二乘法直线拟合算法对这m个点重新进行拟合得到第二条第一直线(标记为直线1);接着,再选取第2m+1个点,计算第2m+1个点与直线1的距离,并重复上述过程;
若距离A不大于预设的阈值1时,则将第m+1个点拟合至直线0中。
对于该数组中剩余的点依次重复上述过程,直至该数组中的最后一点,最后得到至少一条第一直线,并将得到的这些第一直线存储至用于记录第一直线信息的新的数组中,使得各第一子区域均对应有一个用于存储第一直线的数组。
其中,阈值1可以根据实际需要设置,在此并不限定阈值1的具体取值,以满足不同应用场景的需要,提高设计的灵活性。
如此,通过简单的方法即可确定各第一子区域对应的第一直线,以便于后续确定出第一参考直线,从而实现完成后续的识别过程。
可选地,在根据各第一子区域对应的第一直线的数量,对各第一子区域进行筛选时,可以采用以下方式实现:
判断各第一子区域对应的数组中是否存在包含的第一直线的数量不大于阈值2的第一子区域;
若存在,将中存在包含的第一直线的数量不大于阈值2数组对应的第一子区域删除或舍弃;
若不存在,则暂时对各第一子区域不作任何删除或舍弃操作。
其中,阈值2可以根据实际需要设置,在此并不限定阈值2的具体取值,以满足不同应用场景的需要,提高设计的灵活性。
如此,可以去掉那些包含第一直线的数量较少的数组对应的第一子区域(暂且称之为干扰第一子区域),由于这些干扰第一子区域中的点云数据反映的可能并不是充电桩的信息,而可能是背景信息,所以将这些干扰第一子区域剔除,以减少后续识别过程的运算量,提高识别效率。
可选地,在确定第一参考直线的斜率和截距时,可以根据最小二乘法的公式,计算出第一参考直线的斜率和截距,具体的计算过程可以参见现有技术,在此不再详述。
可选地,在本发明实施例中,根据该第二子区域首次和第二次确定出的两条第一直线、以及该第二子区域内的点云数据,确定第一参考直线,具体包括:
判断该第二子区域首次和第二次确定出的两条第一直线的斜率差值是否小于第一阈值;
若否,根据该第二子区域内各点分别到两条第一直线的距离,确定出两条第一直线对应的点集合时,从两条第一直线对应的点集合中选择出包含点最多的点集合,并按照直线拟合算法,对选择出的点集合包含的各点进行拟合后,确定第一参考直线;
若是,根据该第二子区域内各点到首次确定出的第一直线的距离,确定首次确定出的第一直线对应的点集合,并按照直线拟合算法,对该点集合中的各点进行拟合后,确定第一参考直线。
例如,以某个第二子区域为例,对应的第一直线分别为A、B、C、D和E,且这五条第一直线按照从A到E的顺序被依次确定,此时:
可以判断第一直线A和第一直线B的斜率差值是否小于第一阈值;
若是,则根据该第二子区域内各点到第一直线A的距离,确定第一直线A对应的点集合,即点集合A,然后采用直线拟合算法,对点集合A进行拟合后,得到的直线即为第一参考直线;
若否,根据该第二子区域内各点到第一直线A的距离,确定第一直线A对应的点集合,即点集合A,以及根据该第二子区域内各点到第一直线B的距离,确定第一直线B对应的点集合,即点集合B;然后从点集合A和点集合B中选择出包含的点的数量最多的点集合,若假使选择出的点集合为点集合B时,采用直线拟合算法,对点集合B进行拟合后,得到的直线即为第一参考直线。
如此,由于边缘效应的影响,在第一子区域对应的多条第一直线中,首次确定出的第一直线(如上述内容中提及的直线0)可能是错误的数据拟合而成,所以在确定第一参考直线时,需要将首次和第二次确定出的第一直线进行比较,然后根据比较结果再确定第一参考直线,以提高确定出的第一参考直线的准确性,从而减少后续误识别的几率。
在具体实施时,在本发明实施例中,根据第一子区域对应的第一参考直线,确定第一子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据,具体包括:
确定第一子区域包括的各点到对应的第一参考直线之间的距离;
根据确定出的距离,对第一子区域包括的各点进行分类,得到第一子区域对应的第一点云数据和第二点云数据。
如此,可以通过简单的方式即可确定第一点云数据和第二点云数据,从而有利于后续识别过程的进行,降低识别的难度,提高识别的效率。
可选地,在根据确定出的距离,对第一子区域包括的各点进行分类,得到第一子区域对应的第一点云数据和第二点云数据时,可以采用以下方式实现:
判断第一子区域中各点到第一参考直线的距离是否大于阈值3;
若是,则确定距离大于阈值3的点属于第二点云数据;
若否,则确定距离不大于阈值3的点属于第一点云数据。
其中,阈值3可以根据实际需要设置,在此并不限定阈值3的具体取值,以满足不同应用场景的需要,提高设计的灵活性。
例如,针对某一个第一子区域而言,包含k1个点,从该第一子区域对应的数组(也即包含点的数组)中依次判断各点到第一参考直线的距离,那么:
若第一个点至第i个点到第一参考直线的距离均不大于阈值3,且第i+1个点到第一参考直线的距离大于阈值3时,确定第一个点至第i个点表示一个非凹陷结构;
若第i+1个点至第i+x1个点到第一参考直线的距离均大于阈值3,且第i+x1+1个点到第一参考直线的距离不大于阈值3时,确定第i+1个点至第i+x1个点表示一个凹陷结构;
若第i+x1+1个点至第i+x1+x2个点到第一参考直线的距离均不大于阈值3,且第i+x1+x2+1个点到第一参考直线的距离大于阈值3时,确定第i+x1+1个点至第i+x1+x2个点表示另一个非凹陷结构;
此次类推,直至该数组中的最后一个点,即可确定出该第一子区域包含的点所表示的凹陷结构的个数和非凹陷结构的个数。
其中,第一点云数据包括表示全部非凹陷结构对应的点,第二点云数据包括表示全部凹陷结构对应的点。
在具体实施时,在本发明实施例中,预设的识别规则为同时满足以下条件:
对于任一第一子区域:
条件1:该第一子区域对应的第一点云数据所表示的非凹陷结构的数量不小于第二阈值;
其中,若第一子区域对应的第一点云数据所表示的非凹陷结构的数量小于第二阈值时,说明第一子区域中的点云数据标识的非凹陷结构的数量较少,此时,可以认为该第一子区域中的点云数据反映的并不是充电桩,可能是背景,所以需要对第一子区域对应的第一点云数据所表示的非凹陷结构的数量进行判断。
并且,第二阈值的取值可以根据实际需要进行设置,在此并不限定,以满足不同应用场景的需要,提高设计的灵活性。
条件2:在确定出该第一子区域对应的第一点云数据所表示的各非凹陷结构的总长度时,总长度未超出第一预设范围;总长度为各非凹陷结构对应的第一长度的总和,第一长度为:在将该第一子区域内的点云数据转换成数组后,根据位于数组中用于表示每个非凹陷结构的点中位于首部和尾部的两个点确定出的长度;
其中,第一预设范围的取值可以根据实际需要进行设置,在此并不限定,以满足不同应用场景的需要,提高设计的灵活性。
条件3:该第一子区域对应的第二点云数据中的各点到对应第一参考直线的距离的平均值未超出第二预设范围;
其中,第二预设范围的取值可以根据实际需要进行设置,在此并不限定,以满足不同应用场景的需要,提高设计的灵活性。
条件4:在将该第一子区域对应的第二点云数据中各点在第一方向上的坐标值带入至对应第一参考直线对应的函数中,得到各点对应的第一数值时,计算出各点在第二方向上的坐标值与对应第一数值之间的差值,各点对应的差值的平均值大于零;
其中,若点的坐标由x和y表示,第一方向可以为x方向,第二方向可以为y方向。
例如,以某一个点为例,若该点的坐标为(x1、y1),第一参考直线对应的函数为Y=k2×X+b,那么该点在第二方向上的坐标值为y1,该点对应的第一数值为y’=k2×x1+b,该点对应的差值△=y1-y’=y1-k2×x1-b;由于k2表示第一参考直线的斜率,b表示第一参考直线的截距,k2和b的取值是已知,又因x1和y1也是已知的,所以通过上述计算,可以确定出该点对应的差值。
并且,条件4是要判断凹陷结构是否位于充电桩较远的一侧,也即凹陷结构是否位于非凹陷结构远离传感器的一侧。
条件5:以及,在根据预设的霍夫曼直线检测算法、以及该第一子区域内的点云数据,确定出该第一子区域对应的两条检测直线时,该第一子区域对应的两条检测直线的斜率的差值不大于第三阈值;其中,该第一子区域根据霍夫曼直线检测算法确定出多条第二直线,第二直线包括多个点,两条检测直线为各第二直线中包括点最多的两条第二直线。
其中,在根据预设的霍夫曼直线检测算法,确定第一子区域内的点云数据对应的第二直线时,可以参见现有技术,在此不再详述。
如此,通过上述五个条件,即可判断出是否满足预设的识别规则,以便于在满足识别规则时,对充电桩进行识别,完成识别过程,保证识别结果的准确性。
具体地,在本发明实施例中,还包括:
在判断出任一第一子区域对应的总长度超出第一预设范围时,或在判断出该第一子区域对应的各点对应差值的平均值不大于零时,对该第一子区域赋予第一标记。
也就是说,对于上述条件2,在判断出任一第一子区域对应的总长度超出第一预设范围时,对该第一子区域赋予第一标记;
或者,对于上述条件4,在判断出该第一子区域对应的各点对应差值的平均值不大于零时,同样对该第一子区域赋予第一标记。
这样的做的原因在于:
可能由于确定出的第一子区域对应的第一参考直线不准确,存在较大的误差,使得在后续判断过程中,通过该第一参考直线确定出的第一点云数据和第二点云数据并不满足评估规则,最终导致无法识别出充电桩。
为了保证识别出充电桩,提高充电桩的识别的准确性,可以对某些第一子区域赋予第一标记,以便于在判断出根据具有第一标记的第一子区域对应的第一参考直线确定出的第一点云数据和第二点云数据不满足评估规则时,对具有第一标记的第一子区域进行二次处理(也即再次确定具有第一标记的第一子区域的第一点云数据和第二点云数据),从而实现对充电桩的有效识别。
并且,对于上述条件1,如果第一子区域对应的第一点云数据所表示的非凹陷结构的数量小于第二阈值时,则可以将该第一子区域删除或舍弃,也即将该第一子区域过滤掉;
对于条件3,如果第一子区域对应的第二点云数据中的各点到对应第一参考直线的距离的平均值超出第二预设范围,则可以将该第一子区域删除或舍弃,也即将该第一子区域过滤掉;
对于条件5,如果第一子区域对应的两条检测直线的斜率的差值大于第三阈值,则可以将该第一子区域删除或舍弃,也即将该第一子区域过滤掉。
当然,在实际情况中,对于上述5个条件而言,在识别过程中,还可以设置为:
将不满足任一条件的第一子区域赋予第一标记;
同时,若某个第一子区域不满足条件1时,可以将该第一子区域赋予第一标记,且不在进行条件2至条件5的判断;同理,若某个第一子区域满足条件1和条件2,但不满足条件3时,可以将该第一子区域赋予第一标记,且不在进行条件4和条件5的判断。
如此,可以有利于减少识别过程的运算量,提高识别效率,同时保证具有较高的识别准确性。
具体地,在本发明实施例中,在确定出不满足识别规则时,还包括:
将具有第一标记的第一子区域定义为第三子区域、以及不具有第一标记的第一子区域为第四子区域;
根据霍夫曼直线检测算法,将第三子区域对应的第一参考直线转换为第二参考直线;
根据第三子区域对应的第二参考直线,确定第三子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据;
根据第三子区域对应的第一点云数据和第二点云数据、以及霍夫曼算法,判断是否满足识别规则;
若是,根据第三子区域和第四子区域内的点云数据,对充电桩进行识别;
若否,根据第四子区域内的点云数据,对充电桩进行识别。
如此,可以对第三子区域再次处理,以避免出现误判,提高识别的精确度;若再次处理的结果仍然不满足识别规则时,说明第三子区域内的点云数据反映的可能并不是充电桩,所以可以将这些第三子区域过滤掉(或剔除掉),仅依据第四子区域内的点云数据,对充电桩进行识别,以提高识别的准确率。
具体地,在本发明实施例中,在根据第一子区域内的点云数据,对充电桩进行识别时,具体包括:
根据各第一子区域内的点云数据、以及充电桩的实际结构,从各第一子区域中筛选出目标子区域;
根据目标子区域内的点云数据,确定充电桩的位置信息。
也就是说,依据第一子区域的长度、第一子区域内第一点云数据所表示的非凹陷结构的第一长度、第一子区域对应的第二点云数据中的各点到对应第一参考直线的距离、以及霍夫曼检测效果分别与充电桩的实际结构、形状和尺寸的接近程度,从各第一子区域中选择出接近程度较高的至少一个目标子区域;
根据目标子区域,计算充电桩的位置,完成识别过程。
下面以具体实施例对本发明实施例提供的识别方法进行说明。
实施例:以各第一子区域对应的第一点云数据和第二点云数据均满足识别规则为例进行说明,结合图4所示。
S401、获取一帧机器人周围的点云数据;
S402、在对获取到的点云数据进行分区得到多个子区域时,对各子区域进行筛选处理,筛选出的子区域定义为第一子区域,得到多个第一子区域;并按照预设的直线拟合算法,确定各第一子区域对应的至少一条第一直线;
S403、判断各第一子区域对应的第一直线的数量是否小于阈值A;若是,则执行S404;若否,则执行S405;
S404、对第一直线的数量小于阈值A的第一子区域进行过滤处理;执行S405;
其中,在该步骤中,将第一直线数量小于阈值A的第一子区域删除或舍弃。
S405、确定各第一子区域对应的第一参考直线、以及各第一参考直线的斜率和截距,并根据各第一子区域对应的第一参考直线,确定各第一子区域对应的第一点云数据和第二点云数据;
其中,该步骤中提及的各第一子区域可以为:经过S404过滤处理后得到的多个第一子区域,或者S403中提及的各第一子区域。
S406、根据各第一子区域对应的第一点云数据和第二点云数据,判断是否满足第一条件;若否,则执行S407;若是,则执行S408;
其中,第一条件为前述内容提及的条件1至条件4。
S407、将不满足条件的第一子区域赋予第一标记;执行S408;
S408、根据霍夫曼直线检测算法,判断各第一子区域内的点云数据是否满足第二条件;若否,则执行S409;若是,则执行S411;
其中,第二条件为前述内容提及的条件5。
S409、对不满足第二条件的第一子区域进行过滤处理;则执行S410;
S410、判断各第一子区域中是否存在具有第一标记的第一子区域;若否,则执行S411;若是,则执行S412;
其中,该步骤中提及的各第一子区域可以为:经过S409过滤处理后得到的多个第一子区域,或者S408中提及的各第一子区域。
S411、从各第一子区域中筛选出最佳区域,确定充电桩的位置;结束流程;
S412、将具有第一标记的第一子区域定义为第三子区域,将不具有第一标记的第一子区域定义为第四子区域;并根据霍夫曼直线检测算法,将第三子区域对应的第一参考直线转换为第二参考直线;
S413、根据第三子区域对应的第二参考直线,确定第三子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据;
S414、根据第三子区域对应的第一点云数据和第二点云数据,判断是否满足第一条件;若是,则执行S415;若否,则执行S416;
S415、从各第三子区域和各第四子区域中筛选出最佳区域,确定充电桩的位置;结束流程;
S416、从各第四子区域中筛选出最佳区域,确定充电桩的位置。
基于同一发明构思,本发明实施例提供了一种充电桩的识别装置,该识别装置的实现原理与前述一种识别方法的实现原理类似,具体实施方式可参见前述识别方法的实施例,重复之处不再赘述。
具体地,本发明实施例提供的一种充电桩的识别装置,充电桩包括凹陷结构和非凹陷结构,该充电桩应用于机器人;如图5所示,该识别装置可以包括:
第一单元501,用于在获取到机器人周围的点云数据时,对获取到的点云数据进行分区得到多个子区域,并对各子区域进行筛选处理,将筛选出子区域定义为第一子区域;
第二单元502,用于根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一参考直线;
第三单元503,用于根据第一子区域对应的第一参考直线,确定第一子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据;
第四单元504,用于在根据第一子区域对应的第一点云数据和第二点云数据、以及预设的霍夫曼算法,确定出满足预设的识别规则时,根据第一子区域内的点云数据,对充电桩进行识别。
可选地,在本发明实施例中,第二单元502,具体用于:
根据第一子区域内的点云数据、以及预设的直线拟合算法,确定第一子区域对应的第一直线;第一直线包含多个点,且各第一直线被依次确定出;
根据各第一子区域对应的第一直线的数量,对各第一子区域进行筛选,将筛选出的第一子区域定义为第二子区域;
针对任一第二子区域:根据该第二子区域首次和第二次确定出的两条第一直线、以及该第二子区域内的点云数据,确定第一参考直线,并确定第一参考直线的斜率和截距。
可选地,在本发明实施例中,第三单元503,具体用于:
确定第一子区域包括的各点到对应的第一参考直线之间的距离;
根据确定出的距离,对第一子区域包括的各点进行分类,得到第一子区域对应的第一点云数据和第二点云数据。
可选地,在本发明实施例中,第四单元504,还用于:
在判断出任一第一子区域对应的总长度超出第一预设范围时,或在判断出该第一子区域对应的各点对应差值的平均值不大于零时,对该第一子区域赋予第一标记。
可选地,在本发明实施例中,第一单元501,还用于:
在确定出不满足识别规则时,将具有第一标记的第一子区域定义为第三子区域、以及不具有第一标记的第一子区域为第四子区域;
将具有第一标记的第一子区域定义为第三子区域、以及不具有第一标记的第一子区域为第四子区域;
第二单元502还用于:根据霍夫曼直线检测算法,将第三子区域对应的第一参考直线转换为第二参考直线;
第三单元503还用于:根据第三子区域对应的第二参考直线,确定第三子区域对应的用于表示非凹陷结构的第一点云数据、以及用于表示凹陷结构的第二点云数据;
第四单元504,还用于:
根据第三子区域对应的第一点云数据和第二点云数据、以及霍夫曼算法,判断是否满足识别规则;
若是,根据第三子区域和第四子区域内的点云数据,对充电桩进行识别;
若否,根据第四子区域内的点云数据,对充电桩进行识别。
可选地,在本发明实施例中,第四单元504,具体用于:
根据各第一子区域内的点云数据、以及充电桩的实际结构,从各第一子区域中筛选出目标子区域;
根据目标子区域内的点云数据,确定充电桩的位置信息。
基于同一发明构思,本发明实施例提供了一种机器人600,如图6所示,包括:传感器601、以及如本发明实施例提供的上述识别装置602;
其中,传感器601用于:采集机器人600周围的点云数据并发送至识别装置602,以使识别装置602根据点云数据对充电桩进行识别。
本发明实施例提供了一种充电桩的识别方法、识别装置及机器人,通过采用直线拟合算法和霍夫曼算法相结合的方式对充电桩进行识别,不仅可以匹配出充电桩的形状,还可以准确地计算出充电桩的位置信息,如此,可以准确地识别充电桩中的充电口,使得机器人可以准确地对准充电口进行充电,提高充电桩识别的准确性,从而降低了与充电桩结构相似物体的误识别的几率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。