一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种机器人定位方法、装置及存储介质与流程

2021-12-03 22:59:00 来源:中国专利 TAG:


1.本发明涉及机器人自主定位技术领域,特别涉及一种机器人定位方法、装置及存储介质。


背景技术:

2.移动机器人的自主定位是指机器人利用自身的传感器,例如激光或者码盘来计算机器人在所处场景中的位姿。
3.为了完成机器人的自主定位,通常需要建立机器人所在环境的地图,根据激光数据和地图的匹配情况完成激光定位。然而,机器人所在环境中由于货物经常移动,使得之前建好的地图与机器人实际扫描到的场景差距较大(建地图的时候和之后机器人工作的时候货物的位置发生变化),这种情况会导致机器人自主定位出错。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种移动机器人定位方法、装置及存储介质,能够实现机器人的准确定位,且具有较高的通用性和鲁棒性。
5.为了达到上述目的,本发明提供了如下技术方案:
6.一种机器人定位方法,机器人所在环境中部署有多个反光物体,该方法包括:
7.分别利用机器人的激光传感器和惯性传感器采集激光帧和该激光帧对应的里程信息;
8.判断当前激光帧是否观测到反光物体;
9.如果当前激光帧观测到反光物体,则执行定位操作,所述定位操作包括:
10.确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息;
11.确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
12.一种机器人定位装置,机器人所在环境中部署有多个反光物体,该装置包括:处理器、以及与所述处理器通过总线相连的非瞬时计算机可读存储介质:
13.所述非瞬时计算机可读存储介质,用于存储可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
14.分别利用机器人的激光传感器和惯性传感器采集激光帧和该激光帧对应的里程信息;
15.判断当前激光帧是否观测到反光物体;
16.如果当前激光帧观测到反光物体,则执行定位操作;所述定位操作包括:
17.确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息;
18.确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
19.一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上述机器人定位方法中的步骤。
20.由上面的技术方案可知,本发明分别利用激光传感器和惯性传感器采集激光帧和激光帧对应的里程信息,在当前激光帧观测到反光物体的情况下,利用当前激光帧和当前激光帧之前的n-1个观测到反光物体的激光帧的相关信息,如激光帧观测到的反光物体和激光帧对应的里程信息,来确定当前激光帧对应的机器人位姿,实现机器人定位。在机器人定位过程中,通过对激光帧对应的里程信息的使用,可以有效减少对激光帧中的反光物体的依赖,具有较高的通用性和鲁棒性。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1是本发明实施例一机器人定位方法流程图;
23.图2是本发明实施例二机器人定位方法流程图;
24.图3是本发明实施例三机器人定位方法流程图;
25.图4是本发明实施例四机器人定位方法流程图;
26.图5是本发明实施例五机器人定位方法流程图;
27.图6是本发明实施例六机器人定位方法流程图;
28.图7是本发明实施例提供的半径滤波方法示意图;
29.图8是本发明实施例七机器人定位方法流程图
30.图9是本发明实施例八机器人定位方法流程图
31.图10是本发明实施例九机器人定位方法流程图;
32.图11是本发明实施例十机器人定位方法流程图;
33.图12是本发明实施例机器人定位装置的结构示意图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.针对因机器人所在环境内物体的位置变化而导致的机器人自主定位出错情况,相关技术中,可以通过在机器人所在环境中部署反光条或者反光柱来进行辅助定位,例如专利cn109613550a的方案中,就是通过从激光数据中分离出反光条,利用观测到的反光条对机器人进行定位,然而,此方案要求每次观测到足够数量的反光条(3个及3个以上),否则无
法利用观测到的反光条对机器人进行定位。但是在实际使用过程中,由于激光的开角较小(只有180度),提前部署的反光条被遮挡等原因,很难保证每帧激光都能观测到3个及3个以上的反光条,从而无法利用观测到的反光条对机器人进行定位。
36.本发明实施例中,利用机器人行进移动过程中采集到的多个激光帧中的反光物体的位置信息和该多个激光帧的里程信息,对该多个激光帧的机器人位姿进行预测,从而实现激光帧的定位。
37.以下结合具体实施例对本发明的实现原理进行说明。
38.参见图1,图1是本发明实施例一机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图1所示,该方法包括以下步骤:
39.步骤101、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
40.本实施例中,机器人自身配置有激光传感器和惯性传感器。其中,
41.激光传感器,用于采集机器人所在环境的激光数据。激光传感器在机器人移动过程中会不断的采集激光数据。
42.惯性传感器,如里程计、码盘等,用于采集机器人移动过程中的里程信息。本实施例中,采集时间与激光帧的激光数据采集时间相同的里程信息是该激光帧对应的里程信息。
43.步骤102、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作;所述定位操作包括以下步骤103至步骤104。
44.本实施例中,反光物体是指使用具有高反射率的反光材料制作的物体,例如反光条、反光柱(即使用具有高反射率特的反光材料制作而成的条形物体、柱状物体)等。
45.步骤103、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
46.步骤104、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
47.本发明实施例中,当前激光帧对应的机器人位姿,是指激光传感器采集该激光帧时机器人的位姿。
48.从图1所示方法可以看出,本实施例中,分别利用激光传感器和惯性传感器采集激光帧和激光帧对应的里程信息,在当前激光帧观测到反光物体的情况下,利用当前激光帧和当前激光帧之前的n-1个观测到反光物体的激光帧的相关信息,如激光帧观测到的反光物体和激光帧对应的里程信息,来确定当前激光帧对应的机器人位姿,实现机器人定位,通过激光帧对应的里程信息的使用,将机器人定位过程对反光物体的依赖减到最低,因此具有较高的通用性和鲁棒性。
49.参见图2,图2是本发明实施例二提供的机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图2所示,该方法包括以下步骤:
50.步骤201、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
51.本发明实施例中,机器人自身配置有激光传感器和惯性传感器。其中,
52.激光传感器,用于采集机器人所在环境的激光数据。激光传感器在机器人移动过程中会不断的采集激光数据。
53.惯性传感器,如里程计、码盘等,用于采集机器人移动过程中的里程信息。本发明实施例中,采集时间与激光帧的激光数据采集时间相同的里程信息是该激光帧对应的里程信息。
54.步骤202、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作步骤203至步骤204,否则,执行步骤205。
55.本发明实施例中,反光物体是指使用具有高反射率的反光材料制作的物体,例如反光条、反光柱(即使用具有高反射率特的反光材料制作而成的条形物体、柱状物体)等。
56.步骤203、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
57.步骤204、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
58.本发明实施例中,当前激光帧对应的机器人位姿,是指激光传感器采集该激光帧时机器人的位姿。
59.步骤205、根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿。
60.本实施例中,根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,具体包括:
61.s11、根据当前激光帧对应的里程信息和当前激光帧之前的一个激光帧对应的里程信息,确定当前激光帧和当前激光帧之前的一个激光帧之间的里程变化信息;
62.s12、根据确定的里程变化信息和当前激光帧之前的一个激光帧对应的机器人位姿,确定当前激光帧对应的机器人位姿。
63.上述步骤s11中,当前激光帧之前的一个激光帧,可以是当前激光帧的任一激光帧,例如当前激光帧的前一激光帧。
64.从图2所示方法可以看出,本实施例中,在当前激光帧观测到反光物体的情况下,利用当前激光帧和当前激光帧之前的n-1个观测到反光物体的激光帧的相关信息,如激光帧观测到的反光物体和激光帧对应的里程信息,来确定当前激光帧对应的机器人位姿,实现机器人定位,通过激光帧对应的里程信息的使用,将定位过程对反光物体的依赖减到最低,因此具有较高的通用性和鲁棒性。而在当前激光帧未观测到反光物体的情况下,则直接利用当前激光帧的里程信息,以及当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,定位方法较为简单。
65.参见图3,图3是本发明实施例三提供的机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图3所示,该方法包括以下步骤:
66.步骤301、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
67.步骤3021、判断当前激光帧是否满足作为关键帧的条件,如果满足,则执行步骤3022、否则,执行步骤305;
68.步骤3022、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行步骤3023。
69.步骤3023、将当前激光帧设置为关键帧,并执行定位操作;所述定位操作包括:步骤303至步骤304;
70.步骤303、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
71.步骤304、确定由当前激光帧的前n个关键帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
[0072]“确定由当前关键帧的前n-1个关键帧和当前关键帧组成的关键帧序列,根据该关键帧序列中每一关键帧观测到的反光物体在该关键帧的机器人坐标系中的位置信息、以及该关键帧对应的里程信息确定当前关键帧对应的机器人位姿”的实现方式参考图8所示方法的步骤8041至8044,这里不做详述。
[0073]
以上步骤304是图1所示步骤104的具体细化,即在本实施例中,将当前激光帧的前n-1个关键帧作为当前激光帧之前的n-1个观测到反光物体的激光帧,并与当前激光帧组成激光帧序列。
[0074]
步骤305、根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿。
[0075]
本实施例中,根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,与图2所示步骤205的实现方法相同,即也包括步骤s11和s12。
[0076]
需要说明的是,本实施例中,当前激光帧之前的一个激光帧,可以是当前激光帧的任一激光帧,较佳地,可以是当前激光帧的前一激光帧、或当前激光帧之前的最近一个关键帧。
[0077]
以上步骤3021至3023和步骤3021至305两个分支流程,是图1所示步骤102中“判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作”的具体细化。
[0078]
从图3所示方法可以看出,本实施例中,在当前激光帧满足作为关键帧的条件且观测到反光物体的情况下,将当前激光帧设置为关键帧,利用当前激光帧和当前激光帧的前n-1个关键帧的相关信息,如:关键帧观测到的反光物体和激光帧对应的里程信息,来确定当前激光帧对应的机器人位姿,实现机器人定位,通过关键帧对应的里程信息的使用,将机器人定位过程对反光物体的依赖减到最低,因此具有较高的通用性和鲁棒性。
[0079]
参见图4,图4是本发明实施例四机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图4所示,该方法包括以下步骤:
[0080]
步骤401、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0081]
步骤4021a、确定当前激光帧与当前激光帧之前的最近一个关键帧之间的间隔帧
数。
[0082]
步骤4021b、判断该间隔帧数是否大于预设间隔帧数阈值,如果是,则确定当前激光帧满足作为关键帧的条件,执行步骤4022;否则,确定当前激光帧不满足作为关键帧的条件,执行步骤405。
[0083]
本实施例中,预设间隔帧数阈值,为一正整数,例如预设间隔帧数阈值为5。
[0084]
以上步骤4021a只4021b是图3所示3021的一种可能的实现方案。
[0085]
步骤4022、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下步骤4023。
[0086]
步骤4023、将当前激光帧设置为关键帧,并执行定位操作;所述定位操作包括步骤403至步骤404。
[0087]
步骤403、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0088]
步骤404、确定由当前激光帧的前n个关键帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
[0089]
以上步骤404是图1所示步骤104的具体细化,即在本实施例中,将当前激光帧的前n-1个关键帧作为当前激光帧之前的n-1个观测到反光物体的激光帧,并与当前激光帧组成激光帧序列。
[0090]
步骤405、根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿。
[0091]
本实施例中,根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,与图2所示步骤205的实现方法相同,即也包括步骤s11和s12。
[0092]
需要说明的是,本实施例中,当前激光帧之前的一个激光帧,可以是当前激光帧的任一激光帧,较佳地,可以是当前激光帧的前一激光帧、或当前激光帧之前的最近一个关键帧。
[0093]
以上步骤4021a至4023和步骤4021a至405两个分支流程,是图1所示步骤102中“判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作”的具体细化。
[0094]
从图4所示方法可以看出,本实施例除了具有图3所示实施例的优点外,还当前激光帧与当前激光帧之前的最近一个关键帧之间的间隔帧数是否不小于预设间隔帧数阈值来作为确定当前激光帧是否满足作为关键帧的条件,这种方法可以避免参与当前激光帧的定位计算的n个激光帧之间的帧间隔过小而导致的定位效果较差,因为关键帧之间的帧间隔较小时,相应的机器人位姿就会比较接近,而机器人位姿过于接近时会影响最终的定位结果。
[0095]
参见图5,图5是本发明实施例四提供的机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图5所示,该方法包括以下步骤:
[0096]
步骤501、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0097]
步骤5021a、计算当前激光帧对应的里程信息与当前激光帧之前的最近一个关键帧对应的里程信息的里程差值。
[0098]
步骤5021b、判断该里程差值是否大于预设里程阈值,如果是,则确定当前激光帧满足作为关键帧的条件,执行步骤5022;否则,确定当前激光帧不满足作为关键帧的条件,执行步骤505。
[0099]
本实施例中,预设间隔帧数阈值,为一正整数,例如预设间隔帧数阈值为8。
[0100]
以上步骤5021a只5021b是图3所示3021的另一种可能的实现方案。
[0101]
步骤5022、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下操作步骤5023。
[0102]
步骤5023、将当前激光帧设置为关键帧,并执行定位操作;所述定位操作包括以下步骤503至步骤504;
[0103]
步骤503、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0104]
步骤504、确定由当前激光帧的前n-1个关键帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
[0105]
以上步骤504是图1所示步骤104的具体细化,即在本实施例中,将当前激光帧的前n-1个关键帧作为当前激光帧之前的n-1个观测到反光物体的激光帧,并与当前激光帧组成激光帧序列。
[0106]
步骤505、根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿。
[0107]
本实施例中,根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,与图2所示步骤205的实现方法相同,即也包括步骤s11和s12。
[0108]
需要说明的是,本实施例中,当前激光帧之前的一个激光帧,可以是当前激光帧的任一激光帧,较佳地,可以是当前激光帧的前一激光帧、或当前激光帧之前的最近一个关键帧。
[0109]
以上步骤5021a至5023和步骤5021a至505两个分支流程,是图1所示步骤102中“判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作”的具体细化。
[0110]
从图5所示方法可以看出,本实施例除了具有图3所示实施例的优点外,还当前激光帧与当前激光帧之前的最近一个关键帧之间的里程差值是否不小于预设里程阈值来作为确定当前激光帧是否满足作为关键帧的条件,这种方法可以避免参与当前激光帧的定位计算的n个激光帧之间的距离间隔过小而导致的定位效果较差,因为关键帧之间的距离间隔较小时,相应的机器人位姿就会比较接近,而机器人位姿过于接近时会影响最终的定位结果。
[0111]
以上图4所示步骤4021a至4021b和图5所示步骤4021a至4021b给出了图3所示步骤4021的两种可能实现方案,在实际应用中,还可以采用第三种实现方案,即将图4所示步骤4021a至4021b和图5所示步骤4021a至4021b给出的两种可能实现方案结合起来,即图3所示
步骤4021还可以采用以下方法实现:
[0112]
确定当前激光帧与当前激光帧之前的最近一个关键帧之间的间隔帧数,并计算当前激光帧对应的里程信息与当前激光帧之前的最近一个关键帧对应的里程信息的里程差值,如果该间隔帧数大于预设间隔帧数阈值和/或该里程差值大于预设里程阈值,则确定当前激光帧满足作为关键帧的条件,否则,确定当前激光帧不满足作为关键帧的条件。
[0113]
参见图6,图6是本发明实施例六机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图6所示,该方法包括以下步骤:
[0114]
步骤601、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0115]
步骤602、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下定位操作步骤6031至步骤604。
[0116]
本实施例中,所述激光帧中包括激光点信息,每个激光点信息包括该激光点的反射率、激光传感器与该激光点的距离、以及激光传感器对该激光点的观测角度等信息。
[0117]
本实施例中,反光物体是指使用具有高反射率的反光材料制作的物体,例如反光条、反光柱(即使用具有高反射率特的反光材料制作而成的条形物体、柱状物体)等。
[0118]
本实施例中,判断当前激光帧是否观测到反光物体的方法,具体可以如下:
[0119]
根据当前激光帧中每个激光点的反射率,判断当前激光帧中是否包含属于反光物体的激光点(即反射率超过预设反射率阈值的激光点),如果包含,则确定当前激光帧观测到反光物体,否则,确定当前激光帧未观测到反光物体。
[0120]
步骤6031、根据激光传感器与当前激光帧中每个激光点的距离和对该激光点的观测角度确定该激光点在当前激光帧的机器人坐标系中的位置信息;
[0121]
在实际应用中,对于激光传感器观测到的每个激光点来说,激光传感器与该激光点的距离和激光传感器对该激光点的观测角度,决定了该激光点在以激光传感器为原点构建的坐标系(即机器人坐标系)中的位置信息。
[0122]
步骤6032、根据当前激光帧中每个激光点的反射率,确定属于反光物体的激光点,根据属于反光物体的激光点在当前激光帧的机器人坐标系中的位置信息,将激光点之间的距离小于第一预设距离阈值的属于反光物体的激光点划分到同一分组;
[0123]
在实际应用,激光帧中每一激光点的反射率决定了该激光点是否属于反光物体,反射率高于预设反射率阈值,则属于反光物体,反之,则不属于反光物体。由于反光物体是分散部署在机器人所处环境中的,一个激光帧中包括多个反光物体时,属于同一反光物体的所有激光点之间的距离较近,属于不同反光物体的位置点之间的距离较远,因此可以根据该激光帧中各激光点的位置信息进行分组,将距离较近的激光点划分到同一分组,该分组中激光点属于同一反光物体。
[0124]
步骤6033、将每组激光点覆盖的区域确定为当前激光帧观测到的一个反光物体,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息。
[0125]
在实际应用中,由于激光传感器采集的激光帧中有光斑的存在,所以对当前激光帧中的激光点分组后,每组激光点中都可能会有噪声(也称为离群点),这会导致根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器
人坐标系中的位置信息时结果不够准确。
[0126]
为此,本发明实施例中,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息之前,还可以进一步对该组激光点进行离群点剔除处理,可以采用半径滤波(radius outlierremoval)的方法对该组激光点中的离群点进行剔除,具体方法为:针对该组激光点中的每一激光点,如果该组激光点中与该激光点的距离小于第二预设距离阈值的激光点数小于预设激光点数,则从该组激光点中剔除该激光点。
[0127]
如图7所示的本发明实施例提供的半径滤波方法示意图,在一组激光点中,每个激光点在一定距离范围内(即第二预设距离阈值范围内,在图7中第二预设距离阈值即为图7中所示的圆的半径)要有足够多的近邻,例如,如果指定至少要有1个邻居(预设激光点数=1),则圆圈1中心的激光点需要被删除;如果指定至少要有2个邻居(预设激光点数=2),则除了圆圈1中心的激光点外,圆圈2和圆圈3的中心的激光点也需要被删除。
[0128]
本发明实施例中,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息的方法,具体可以为:
[0129]
计算该组激光点在当前激光帧的机器人坐标系中的横坐标均值和纵坐标均值,将由该横坐标均值和纵坐标均值确定的坐标位置作为该反光物体在当前激光帧的机器人坐标系中的位置信息。
[0130]
例如,使用坐标{x
k
,y
k
}表示该组激光点中的第k个激光点在当前激光帧的机器人坐标系中的位置信息,则坐标即该反光物体在当前激光帧的机器人坐标系中的位置信息,其中,m为该组激光点中的激光点个数。
[0131]
以上步骤6031至6033是图1所示步骤103的一种具体细化。
[0132]
步骤604、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
[0133]
从图6所示方法可以看出,本实施例中,利用了反光物体具有高反射率的特点确定当前激光帧中属于反光物体的激光点并据此识别出当前激光帧中的反光物体,对反光物体的识别准确率较高。另外,本发明还利用当前激光帧和当前激光帧的前n-1个关键帧的相关信息,如:关键帧观测到的反光物体和激光帧对应的里程信息,来确定当前激光帧对应的机器人位姿,实现机器人定位,通过关键帧对应的里程信息的使用,将机器人定位过程对反光物体的依赖减到最低,因此具有较高的通用性和鲁棒性。
[0134]
参见图8,图8是本发明实施例七机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图8所示,该方法包括以下步骤:
[0135]
步骤801、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0136]
步骤802、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下操作步骤803至步骤8044。
[0137]
步骤803、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0138]
步骤8041、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列;
[0139]
步骤8042、根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息,并使用该激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息;
[0140]
在实际应用中,该激光帧序列中的每一激光帧观测到的反光物体的个数可能有多个。本发明实施例中,对于某一激光帧来说,可以仅确定该激光帧中的一个反光物体在世界坐标系中的第一位置信息和第二位置信息;也可以确定该激光帧中的多个反光物体在世界坐标系中的第一位置信息和第二位置信息;还可以确定该激光帧中的所有反光物体在世界坐标系中的第一位置信息和第二位置信息。
[0141]
步骤8043、根据该激光帧序列中相邻两个激光帧各自对应的里程信息计算该两个激光帧之间的第一位姿变化信息,并使用该两个激光帧的假定位姿变量描述该两个激光帧之间的第二位姿变化信息;
[0142]
步骤8044、确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化、且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化时各激光帧的假定位姿变量取值,将当前激光帧的假定位姿变量取值确定为当前激光帧对应的机器人位姿。
[0143]
以上步骤8042至步骤8044是图1所示步骤104中“根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿”的具体细化。
[0144]
以上步骤8041至步骤8044是图1所示步骤104的具体细化。
[0145]
从图8所示方法可以看出,本实施例中,利用激光帧序列中每一激光帧观测到的反光物体在机器人坐标系中的位置信息确定该反光物体的第一位置信息,同时使用该反光物体在机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体的第二位置信息;另外还利用激光帧序列中每一激光帧的里程信息计算相邻激光帧之间的第一位姿变化,同时还利用激光帧序列中每一激光帧的假定位姿变量描述相邻激光帧之间的第二位姿变化,通过逼近反光物体的第一位置信息和第二位置信息,以及相邻激光帧之间的第一位姿变化和第二位姿变化,确定激光帧序列中所有激光帧的机器人位姿,从而实现当前激光帧的定位。本发明中,确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化、且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化时各激光帧的假定位姿变量取值时,即使只有一个各激光帧中仅有一个反光物体,也可以执行使其第一位置信息和第二位置信息的差值最小化的操作,与现有技术中要求激光帧中至少有3个反光物体才能够实现定位的方案相比,对反光物体的依赖明显降低,因此具有较高的通用性和鲁棒性。
[0146]
参见图9,图9是本发明实施例八机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图9所示,该方法包括以下步骤:
[0147]
步骤901、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0148]
步骤902、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下操作步骤903至步骤9044。
[0149]
步骤903、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0150]
步骤9041、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列;
[0151]
步骤9042a、根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、和该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该反光物体的预估位置;
[0152]
本发明实施例中,激光帧中的一个反光物体在该激光帧的机器人坐标系下的位置信息(包括坐标)可以使用以下公式1转换为该反光物体在世界坐标系中的位置信息:
[0153][0154]
在上述公式1中,(lwx,lwy)是该反光物体在世界坐标系中的坐标;(lx,ly)是该反光物体在该激光帧对应的机器人坐标系中的坐标;(x,y,t)是该激光帧对应的机器人位姿(世界坐标系中的机器人位置);是该激光帧对应的机器人坐标系到世界坐标系的转换矩阵。
[0155]
本实施例中,在由当前激光帧和当前激光帧之前的n-1个观测到反光物体的激光帧组成的激光帧序列中,除当前激光帧之外,其它激光帧之前已经被定位。又因为该激光帧序列中相邻两个激光帧之间的采集时间间隔较短,相应的位姿差别也比较小,因此在根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体的第一位置信息时,可以利用该激光帧序列中当前激光帧的前一激光帧的机器人位姿对该反光物体的第一位置信息进行预估。
[0156]
这里,根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、和该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该反光物体的预估位置,实际上是将该激光帧的前一激光帧对应的机器人位姿作为该激光帧对应的机器人位姿,然后利用上述公式1得到该反光物体的预估位置。
[0157]
因此,本实施例中,根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、和该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该反光物体的预估位置,具体包括:
[0158]
s21、根据该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该前一激光帧对应的机器人坐标系到世界坐标系的转换矩阵,将该转换矩阵作为该激光帧对应的
机器人坐标系到世界坐标系的转换矩阵;
[0159]
s22、根据该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧对应的机器人坐标系到世界坐标系的转换矩阵,计算该反光物体的预估位置。
[0160]
上述步骤s22中,根据该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧对应的机器人坐标系到世界坐标系的转换矩阵,计算该反光物体的预估位置,具体是将该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧对应的机器人坐标系到世界坐标系的转换矩阵代入上述公式1,即可得到该反光物体的预估位置。
[0161]
步骤9042b、根据该激光帧序列中每个激光帧观测到的反光物体的预估位置,计算该反光物体与机器人所在环境的先验地图中各反光物体之间的距离,将机器人所在环境的先验地图中距离该反光物体的最近的反光物体的位置确定为该反光物体在世界坐标系中的第一位置信息。
[0162]
以上步骤9042a至步骤9042b是图8所示步骤8042中“根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息”的具体细化。
[0163]
步骤9042c、使用该激光帧序列中每个激光帧的假定位姿变量描述该激光帧对应的机器人坐标系到世界坐标系的转换矩阵;
[0164]
本发明实施例中,对于由当前激光帧和当前激光帧之前的n-1个观测到反光物体的激光帧组成的激光帧序列,虽然除当前激光帧之外的其它激光帧之前已经被定位过,但是在对当前激光帧定位时,可以再对激光帧序列中的每个激光帧设置一个假定位姿变量,例如,设置激光帧序列中第i个激光帧的假定位姿为(x
i
,y
i
,t
i
),之后就可以根据激光帧序列中每个激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量确定该反光物体再世界坐标系中的第二位置信息,即以下步骤9042d。
[0165]
步骤9042d、使用该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息与该激光帧对应的机器人坐标系到世界坐标系的转换矩阵的乘积,表示该反光物体在世界坐标系中的第二位置信息。
[0166]
本实施例中,步骤9042d采用上述公式1实现,即:将该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧对应的机器人坐标系到世界坐标系的转换矩阵代入上述公式1。
[0167]
例如,假设该反光物体在该激光帧的机器人坐标系中的位置坐标是(lx
i
,ly
i
),该激光帧对应的假定位姿变量是(x
i
,y
i
,t
i
),则可以执行以下操作:
[0168]
1)使用该激光帧的假定位姿变量,将该激光帧对应的机器人坐标系到世界坐标系的转换矩阵描述为
[0169]
2)将该激光帧对应的机器人坐标系到世界坐标系的转换矩阵
和该反光物体在该激光帧的机器人坐标系中的位置信息(lx
i
,ly
i
)代入到上述公式1,即可得到如下等式:
[0170][0171]
上述等式中,(lwx
i
,lwy
i
)是该反光物体在世界坐标系中的第二位置信息。
[0172]
以上步骤9042c至9042d,是图8所示步骤8042中“使用该激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息”的具体细化。
[0173]
步骤9043、根据该激光帧序列中相邻两个激光帧各自对应的里程信息计算该两个激光帧之间的第一位姿变化信息,并使用该两个激光帧的假定位姿变量描述该两个激光帧之间的第二位姿变化信息;
[0174]
步骤9044、确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化、且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化时各激光帧的假定位姿变量取值,将当前激光帧的假定位姿变量取值确定为当前激光帧对应的机器人位姿。
[0175]
以上步骤9042a至步骤9044是图1所示步骤104中“根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿”的具体细化。
[0176]
以上步骤9041至步骤9044是图1所示步骤104的具体细化。
[0177]
从图9所示方法可以看出,本实施例中,对于激光帧序列中每一激光帧观测到的反光物体,先利用该激光帧在激光帧序列中的前一激光帧对应的机器人位姿预估得到该反光物体的第一位置信息,然后利用该激光帧的假定位姿变量描述该反光物体的第二位置信息,从而使得后续可以通过将激光帧序列中不同激光帧观测到的反光物体的第一位置信息和第二位置信息进行逼近,从而求解出当前激光帧的假定位姿变量取值,实现当前激光帧的定位。本实施例与现有技术中要求激光帧中至少有3个反光物体才能够实现定位的方案相比,对反光物体的依赖明显降低,因此具有较高的通用性和鲁棒性。
[0178]
参见图10,图10是本发明实施例九机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图10所示,该方法包括以下步骤:
[0179]
步骤1001、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0180]
步骤1002、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下操作步骤1003至步骤10044。
[0181]
步骤1003、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0182]
步骤10041、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列;
[0183]
步骤10042、根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息,并使用该激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息;
[0184]
步骤10043a、根据该激光帧序列中相邻两个激光帧各自对应的里程信息计算该两个激光帧之间的第一位姿变化信息;
[0185]
在实际应用中,在已知两个激光帧对应的里程信息时,可以利用该两个激光帧对应的里程信息确定该两个激光帧之间的位姿变化信息,具体是利用机器人的不同车轮在该两个激光帧之间的位移确定机器人的位姿变化,可以采用现有方法实现,本实施例中对此不做限定。
[0186]
步骤10043b、使用该激光帧序列中相邻两个激光帧中每一激光帧的假定位姿变量描述该激光帧对应的机器人坐标系到世界坐标系的转换矩阵;
[0187]
图9所示步骤9042d已经提到了如何根据该激光帧的假定位姿变量来描述该激光帧对应的机器人坐标系到世界坐标系的转换矩阵,此处不再赘述。
[0188]
步骤10043c、使用该激光帧序列中相邻两个激光帧之间的位姿变换矩阵与该两个激光帧各自对应的机器人坐标系到世界坐标系的转换矩阵之间的换算关系,表示该两个激光帧之间的第二位姿变化信息。
[0189]
本发明实施例中,两个激光帧之间的位姿变化信息(δx
p
,δy
p
,δt
p
)对应一位姿变换矩阵后续将其称为该两个激光帧之间的位姿变换矩阵。假设该两个激光帧分别是第i-1个激光帧与第i个激光帧,则在实际应用中,第i-1个激光帧与第i个激光帧之间的位姿变换矩阵与该两个激光帧各自对应的机器人坐标系到世界坐标系的转换矩阵具有如下换算关系(换算公式):
[0190]
其中,(x
i-1
,y
i-1
,t
i-1
)和(x
i
,y
i
,t
i
)分别是第i-1个激光帧和第i个激光帧的假定位
姿变量;是第i-1个激光帧对应的机器人坐标系到世界坐标系的转换矩阵;是第i个激光帧对应的机器人坐标系到世界坐标系的转换矩阵。
[0191]
本发明实施例中,将该两个激光帧之间的位姿变换矩阵与该两个激光帧各自对应的机器人坐标系到世界坐标系的转换矩阵代入到上述换算关系中,即可得到关于δx
p
、δy
p
、和δt
p
的公式。
[0192]
以上步骤10043b至步骤10043c是图8所示步骤8043中“使用该两个激光帧的假定位姿变量描述该两个激光帧之间的第二位姿变化信息”的具体细化。
[0193]
以上步骤10043a至步骤10043c是图8所示步骤8043的具体细化。
[0194]
步骤10044、确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化(趋近于0)、且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化(趋近于0)时各激光帧的假定位姿变量取值,将当前激光帧的假定位姿变量取值确定为当前激光帧对应的机器人位姿。
[0195]
以上步骤10042至步骤10044是图1所示步骤104中“根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿”的具体细化。
[0196]
以上步骤10041至步骤10044是图1所示步骤104的具体细化。
[0197]
从图10所示方法可以看出,本实施例中,对于激光帧序列中相邻两个激光帧观测,利用该两个激光帧各自对应的里程信息计算该连个激光帧之间的第一位姿变化信息,以及利用该两个激光帧各自对应的假定位置变量描述该两个激光帧之间的第二位姿变化信息,从而使得后续可以通过将激光帧序列中相邻两个激光帧的第一位姿变化信息和第二位姿变化信息进行逼近,从而求解出当前激光帧的假定位姿变量取值,实现当前激光帧的定位。本实施例与现有技术中要求激光帧中至少有3个反光物体才能够实现定位的方案相比,对反光物体的依赖明显降低,因此具有较高的通用性和鲁棒性。
[0198]
参见图11,图11是本发明实施例十机器人定位方法流程图,机器人所在环境中部署有多个反光物体;如图11所示,该方法包括以下步骤:
[0199]
步骤1101、分别利用机器人的激光传感器和惯性传感器采集机器人移动过程中的激光帧和该激光帧对应的里程信息。
[0200]
步骤1102、判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行以下操作步骤1103至步骤11044d。
[0201]
步骤1103、确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息。
[0202]
步骤11041、确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光
帧组成的激光帧序列;
[0203]
步骤11042、根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息,并使用该激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息;
[0204]
步骤11043、根据该激光帧序列中相邻两个激光帧各自对应的里程信息计算该两个激光帧之间的第一位姿变化信息,并使用该两个激光帧的假定位姿变量描述该两个激光帧之间的第二位姿变化信息;
[0205]
步骤11044a、将该激光帧序列中相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值记为第一残差e1,将e1
t
、预设第一权重矩阵ω1、e1进行乘法计算得到该两个激光帧对应的第一矩阵;
[0206]
本步骤中,e1
t
是e1的转置矩阵,第一矩阵可表示为:e1
t
×
ω1×
e1,用于表示相邻两个激光帧之间的位姿变化的预测值和实际测量值之间的偏差。
[0207]
步骤11044b、将该激光帧序列中每个激光帧中的反光物体的第一位置信息和第二位置信息的差值记为第二残差e2,将e2
t
、预设第二权重矩阵ω2、e2进行乘法计算得到该激光帧对应的第二矩阵;
[0208]
本步骤中,e2
t
是e2的转置矩阵,第二矩阵可表示为:e2
t
×
ω2×
e2,用于表示激光帧观测到的反光物体的位置的预测值和实际测量值之间的偏差。
[0209]
步骤11044c、将该激光帧序列中相邻两个激光帧对应的第一矩阵进行累加得到第一累加矩阵,将该激光帧序列中每个激光帧对应的第二矩阵进行累加得到第二累加矩阵,利用第一累加矩阵和第二累加矩阵构建关于该激光帧序列中各激光帧的假定位姿变量的非线性方程;
[0210]
本步骤中,第一累加矩阵可表示为:m是激光帧序列中相邻激光帧的个数;第二累加矩阵可表示为n小于或等于激光帧序列中每个激光帧观测到的反光物体的个数总和,且大于或等于激光帧序列中激光帧的数量(每个激光帧中至少有一个反光物体)。
[0211]
本发明实施例中,利用第一累加矩阵和第二累加矩阵构建的关于该激光帧序列中各激光帧的假定位姿变量的非线性方程具体可以如下所示:
[0212]
其中,state是激光帧序列中的激光帧的假定位姿变量集合,即state={(x1,y1,t1),(x2,y2,t2),

,(x
r
,y
r
,t
r
)}。
[0213]
步骤11044d、求解使该非线性方程最小化(即趋近于0)时该激光帧序列中各激光帧的假定位姿变量取值。
[0214]
本发明实施例中,可以利用非线性优化算法(例如高斯牛顿法)求解所述非线性方程即可得到该激光帧序列中各激光帧的假定位姿变量的取值。
[0215]
以上步骤11044a至步骤11044d是图8所示8044的具体细化。
[0216]
以上步骤11042至步骤11044d是图1所示步骤104中“根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿”的具体细化。
[0217]
以上步骤11041至步骤11044d是图1所示步骤104的具体细化。
[0218]
从图11所示方法可以看出,本实施例中,由于e1
t
×
e1和e2
t
×
e2的取值均不会小于0,因此f(state)的取值最小化(趋近于0)时,可以保证该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化(趋近于0),且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化(趋近于0)。本发明中,由于将相邻激光帧之间的位姿变化参与到确定激光帧序列中各激光帧的假定位姿变量的取值过程中,可以使得机器人定位过程对反光物体的依赖减到最低,因此具有较高的通用性和鲁棒性。
[0219]
以上对本发明实施例机器人定位方法进行了具体说明,本发明还提供了一种机器人定位装置,以下结合图12进行详细说明。
[0220]
参见图12,图12是本发明实施例机器人定位装置的结构示意图,机器人所在环境中部署有多个反光物体,该装置1200包括处理器1201、以及与所述处理器1201通过总线相连的非瞬时计算机可读存储介质1202:
[0221]
所述非瞬时计算机可读存储介质1202,用于存储可在所述处理器1201上运行的计算机程序,所述处理器1201执行所述程序时实现以下步骤:
[0222]
分别利用机器人的激光传感器和惯性传感器采集激光帧和该激光帧对应的里程信息;
[0223]
判断当前激光帧是否观测到反光物体;
[0224]
如果当前激光帧观测到反光物体,则执行定位操作;所述定位操作包括:
[0225]
确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息;
[0226]
确定由当前激光帧之前的n-1个观测到反光物体的激光帧和当前激光帧组成的激光帧序列,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿。
[0227]
图12所示装置中,
[0228]
所述处理器1201,进一步用于:如果当前激光帧未观测到反光物体,则根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿。
[0229]
图12所示装置中,
[0230]
所述处理器1201,判断当前激光帧是否观测到反光物体,如果当前激光帧观测到反光物体,则执行定位操作,包括:
[0231]
判断当前激光帧是否满足作为关键帧的条件;
[0232]
如果不满足,则根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿;
[0233]
如果满足,则执行判断当前关键帧是否观测到反光物体,当确定当前关键帧观测
到反光物体时,将当前激光帧设置为关键帧,并执行定位操作;
[0234]
所述定位操作包括:
[0235]
确定当前关键帧观测到的反光物体以及当前关键帧观测到的反光物体在当前关键帧的机器人坐标系中的位置信息;
[0236]
确定由当前关键帧的前n-1个关键帧和当前关键帧组成的关键帧序列,根据该关键帧序列中每一关键帧观测到的反光物体在该关键帧的机器人坐标系中的位置信息、以及该关键帧对应的里程信息确定当前关键帧对应的机器人位姿。
[0237]
图12所示装置中,
[0238]
所述处理器1201,判断当前激光帧是否满足作为关键帧的条件,包括:
[0239]
确定当前激光帧与当前激光帧之前的最近一个关键帧之间的间隔帧数;判断该间隔帧数是否大于预设间隔帧数阈值,如果是,则确定当前激光帧满足作为关键帧的条件,否则,确定当前激光帧不满足作为关键帧的条件;或,
[0240]
计算当前激光帧对应的里程信息与当前激光帧之前的最近一个关键帧对应的里程信息的里程差值;判断该里程差值是否大于预设里程阈值,如果是,则确定当前激光帧满足作为关键帧的条件,否则,确定当前激光帧不满足作为关键帧的条件;或,
[0241]
确定当前激光帧与当前激光帧之前的最近一个关键帧之间的间隔帧数,并计算当前激光帧对应的里程信息与当前激光帧之前的最近一个关键帧对应的里程信息的里程差值,如果该间隔帧数大于预设间隔帧数阈值和/或该里程差值大于预设里程阈值,则确定当前激光帧满足作为关键帧的条件,否则,确定当前激光帧不满足作为关键帧的条件。
[0242]
图12所示装置中,
[0243]
所述处理器1201,判断当前激光帧是否观测到反光物体时,用于:
[0244]
根据当前激光帧中每个激光点的反射率,判断当前激光帧中是否包含属于反光物体的激光点,如果包含,则确定当前激光帧观测到反光物体,否则,确定当前激光帧未观测到反光物体。
[0245]
图12所示装置中,
[0246]
所述处理器1201,根据当前激光帧对应的里程信息、当前激光帧之前的一个激光帧对应的机器人位姿和里程信息,确定当前激光帧对应的机器人位姿,包括:
[0247]
根据当前激光帧对应的里程信息和当前激光帧之前的一个激光帧对应的里程信息,确定当前激光帧和当前激光帧之前的一个激光帧之间的里程变化信息;
[0248]
根据确定的里程变化信息和当前激光帧之前的一个激光帧对应的机器人位姿,确定当前激光帧对应的机器人位姿。
[0249]
图12所示装置中,
[0250]
所述激光帧中包括激光点信息,每个激光点信息包括该激光点的反射率、激光传感器与该激光点的距离、以及激光传感器对该激光点的观测角度;
[0251]
所述处理器1201,确定当前激光帧观测到的反光物体以及当前激光帧观测到的反光物体在当前激光帧的机器人坐标系中的位置信息,包括:
[0252]
根据激光传感器与当前激光帧中每个激光点的距离和对该激光点的观测角度确定该激光点在当前激光帧的机器人坐标系中的位置信息;
[0253]
根据当前激光帧中每个激光点的反射率,确定属于反光物体的激光点,根据属于
反光物体的激光点在当前激光帧的机器人坐标系中的位置信息,将激光点之间的距离小于第一预设距离阈值的属于反光物体的激光点划分到同一分组;
[0254]
将每组激光点覆盖的区域确定为当前激光帧观测到的一个反光物体,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息。
[0255]
图12所示装置中,
[0256]
所述处理器1201,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息之前,进一步用于:
[0257]
针对该组激光点中的每一激光点,如果该组激光点中距离该激光点的距离小于第二预设距离阈值的激光点数小于预设激光点数,则从该组激光点中剔除该激光点。
[0258]
图12所示装置中,
[0259]
所述处理器1201,根据该组激光点在当前激光帧的机器人坐标系中的位置信息确定该反光物体在当前激光帧的机器人坐标系中的位置信息,包括:
[0260]
计算该组激光点在当前激光帧的机器人坐标系中的横坐标均值和纵坐标均值,将由该横坐标均值和纵坐标均值确定的坐标位置作为该反光物体在当前激光帧的机器人坐标系中的位置信息。
[0261]
图12所示装置中,
[0262]
所述处理器1201,根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息、以及该激光帧对应的里程信息确定当前激光帧对应的机器人位姿,包括:
[0263]
根据该激光帧序列中每一激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息,并使用该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息;
[0264]
根据该激光帧序列中相邻两个激光帧各自对应的里程信息计算该两个激光帧之间的第一位姿变化信息,并使用该两个激光帧的假定位姿变量描述该两个激光帧之间的第二位姿变化信息;
[0265]
确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化、且相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化时各激光帧的假定位姿变量取值,并将当前激光帧的假定位姿变量取值确定为当前激光帧对应的机器人位姿。
[0266]
图12所示装置中,
[0267]
所述处理器1201,根据该激光帧序列中每个激光帧观测到的反光物体在该激光帧的机器人坐标系中的位置信息确定该反光物体在世界坐标系中的第一位置信息,包括:
[0268]
根据该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该反光物体的预估位置;
[0269]
根据该反光物体的预估位置计算该反光物体与机器人所在环境的先验地图中各反光物体之间的距离,将机器人所在环境的先验地图中距离该反光物体的最近的反光物体的位置确定为该反光物体在世界坐标系中的第一位置信息。
[0270]
图12所示装置中,
[0271]
所述处理器1201,根据该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该反光物体的预估位置,包括:
[0272]
根据该激光帧序列中该激光帧的前一激光帧对应的机器人位姿确定该前一激光帧对应的机器人坐标系到世界坐标系的转换矩阵,将该转换矩阵作为该激光帧对应的机器人坐标系到世界坐标系的转换矩阵;
[0273]
根据该反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧对应的机器人坐标系到世界坐标系的转换矩阵,计算该反光物体的预估位置。
[0274]
图12所示装置中,
[0275]
所述处理器1201,使用该激光帧中的反光物体在该激光帧的机器人坐标系中的位置信息和该激光帧的假定位姿变量描述该反光物体在世界坐标系中的第二位置信息,包括:
[0276]
使用该激光帧的假定位姿变量描述该激光帧对应的机器人坐标系到世界坐标系的转换矩阵;
[0277]
使用该反光物体在该激光帧的机器人坐标系中的位置信息与该激光帧对应的机器人坐标系到世界坐标系的转换矩阵的乘积,表示该反光物体在世界坐标系中的第二位置信息。
[0278]
图12所示装置中,
[0279]
所述处理器1201,使用该两个激光帧的机器人位姿描述该两个激光帧之间的第二位姿变化信息,包括:
[0280]
使用该两个激光帧中每一激光帧的假定位姿变量描述该激光帧对应的机器人坐标系到世界坐标系的转换矩阵;
[0281]
使用该两个激光帧之间的位姿变换矩阵与该两个激光帧各自对应的机器人坐标系到世界坐标系的转换矩阵之间的换算关系,表示该两个激光帧之间的第二位姿变化信息。
[0282]
图12所示装置中,
[0283]
所述处理器1201,确定使该激光帧序列中每个激光帧观测到的反光物体的第一位置信息和第二位置信息的差值最小化,且相邻两个记挂哪个帧之间的第一位姿变化信息和第二位姿变化信息的差值最小化时各激光帧的假定位姿变量取值,包括:
[0284]
将该激光帧序列中相邻两个激光帧之间的第一位姿变化信息和第二位姿变化信息的差值记为第一残差e1,将e1
t
、预设第一权重矩阵ω1、e1进行乘法计算得到该两个激光帧对应的第一矩阵;
[0285]
将该激光帧序列中每个激光帧中的反光物体的第一位置信息和第二位置信息的差值记为第二残差e2,将e2
t
、预设第二权重矩阵ω2、e2进行乘法计算得到该激光帧对应的第二矩阵;
[0286]
将该激光帧序列中相邻两个激光帧对应的第一矩阵进行累加得到第一累加矩阵,将该激光帧序列中每个激光帧对应的第二矩阵进行累加得到第二累加矩阵,利用第一累加矩阵和第二累加矩阵构建关于该激光帧序列中各激光帧的假定位姿变量的非线性方程;
[0287]
求解使该非线性方程最小化时该激光帧序列中各激光帧的假定位姿变量取值。
[0288]
本发明实施例还提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如图1-6、8-11所示的机器人定位方法中的步骤。
[0289]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献