本发明属于移动机器导航,尤其涉及一种家庭级机器人低功耗导航方法、系统、计算机设备和存储介质。
背景技术:
1、在家庭使用场景中,家庭服务机器人的应用非常广泛,机器人需要实现按照一定的路线行驶,这就涉及到如何导航的技术问题。
2、现在很多家庭级机器人是基于多传感器融合的自动驾驶汽车的导航技术,该技术需要在室外借助于gps、陀螺仪、电子罗盘、加速度计等传感器,这些传感器在室外可以使用,但在室内使用时精度很低误差很大。
3、另外地,存在较接近技术是slam技术,但该方法计算量很大,耗费cpu和内存的资源,同时也会耗费电池的电量,增加系统的功耗,而且会降低其他业务进程的响应速度,降低系统的实时性。
4、而且,机器人一般只能在初始位置,例如充电基座所在位置,接收到控制指令后,才出发行驶;当机器人在行驶过程中,遇到障碍物导致停止,此时需要重新规划导航,往往机器人的重定位和重导航能力差,效率低,更进一步地,在动态环境中,避障算法中的路径规划很多都是曲线路径,该路径可以较为圆润地避开障碍物,但是从功耗的角度考虑,该曲线的路径规划功耗较大。
5、以上的现有技术,都存在导航路径功耗高、效率低等问题,如果家庭服务机器人频繁充电会影响用户体验,降低机器人的工作效率,同时降低了电池的使用寿命,也增加了家庭用电开支,大大限制了家庭级机器人的推广和应用。
技术实现思路
1、为了克服现有技术的不足,本发明的目的在于提供一种家庭级机器人低功耗导航方法、系统、计算机设备和存储介质,主要用于解决现有技术中家庭级机器人重定位、重导航能力差,导航路径功耗高、效率低等问题。
2、为解决上述问题,本发明所采用的技术方案如下:
3、第一方面,本发明提供一种家庭级机器人低功耗导航方法,包括:
4、基于家庭场景及目标对象的位置,建立初始地图坐标系,并确定每个目标对象的初始坐标;
5、对机器人进行重定位:根据在机器人预设检测范围内的第一目标对象和第二目标对象之间的相对旋转角度α、机器人与第一目标对象之间的第一距离s1和机器人与第二目标对象之间的第二距离s2,建立重构坐标系,并确定机器人在重构坐标系中的坐标,经过转换计算,重定位出机器人在初始地图坐标系中的坐标;
6、接收作业指令,识别目标作业对象,基于目标作业对象和机器人在初始地图坐标系中的目标,制定导航路线。
7、在一些实施例中,在对机器人进行重定位时:
8、控制机器人原地旋转,使第一目标对象在其拍摄画面的中间,记录第一旋转角度β;
9、再控制机器人原地旋转,使第二目标对象在其拍摄画面的中间,记录第二旋转角度γ;
10、计算第一目标对象和第二目标对象之间的相对旋转角度α=γ-β,其中,若γ>360°,则α=γ+360-β;
11、将相对旋转角度α与机器人内设激光雷达测得的旋转角度α`进行对比,两者相差不超过相对旋转角度α的5%,则求平均值,定义为相对旋转角度α。
12、在一些实施例中,在对机器人进行重定位时:
13、利用机器人的激光扫描传感器,计算得出机器人与第一目标对象之间的第一距离s1和机器人与第二目标对象之间的第二距离s2;
14、设定第一目标对象在重构坐标系中的坐标轴为(0,0),第一目标对象与第二目标对象的连线为x轴,第一目标对象与第二目标对象之间的距离s3为:
15、
16、得到,第二目标对象在重构坐标系中的坐标轴为
17、在机器人所在的坐标点,画一条垂直于x轴的直线,将角度α分为两部分,一部分是α1,另一部分是α2,可得以下公式(2):
18、s1cosα1=s2cos(α-α1)=s2(cosαcosα1+sinαsinα1) (2)
19、公式(2)的变形为
20、(s1-s2cosα)cosα1=sinαsinα1 (3)
21、两边均做平方运算
22、(s1-s2cosα)2cos2α1=sin2α(1-cos2α1) (4)
23、可以获得
24、
25、还可以获得
26、
27、可得,机器人的坐标值(a1x,a1y)为
28、
29、在一些实施例中,在对机器人进行重定位时:
30、将重构坐标系平移(-x2,-y2),其中第一目标对象在初始地图坐标系中的坐标值为(x2,y2);
31、机器人平移后的坐标值(a2x,a2y)可表示为(a2x+x2,a2y+y2),可得以下公式(7)和(8):
32、
33、
34、再将重构坐标系旋转角度-θ,机器人旋转后的坐标值(a3x,a3y),存在以下公式(9):
35、a2x=a3xcos(-θ)-a3ysin(-θ)
36、a2y=a3xsin(-θ)-a3ycos(-θ) (9)
37、基于以上分析,可以得到公式(10)
38、
39、根据公式(10),坐标轴平移和旋转后,机器人在初始地图坐标系中的坐标值(a3x,a3y)可以表示为公式(11)
40、
41、在一些实施例中,制定导航路线时:
42、根据能量守恒定律,可得f*s=p,其中f是机器人的驱动力,s是移动轨迹的距离,p代表机器人运动产生的功耗值。又根据牛顿第二定律,f=ma,m是机器人的质量,a是机器人运动的加速度。加速度是速度的变化量,因此a=δv/δt=dv。通过以上分析可得以下公式:
43、
44、在公式(12)中d是微分符号;ros的/odom话题每秒钟输出15次左右,平均每隔67ms输出一次,该67ms可作为dt,因此p的大小只与dv和ds有关;
45、在/odom话题中,速度的输出为lx、ly、lz、ax、ay、az,其中lx、ly、lz字段代表机器人的在xyz三个方向上的线速度,ax、ay、az字段代表机器人的在xyz三个方向上的角速度;移动轨迹的距离输出为ox、oy、oz、ow、px、py、pz,其中ox、oy、oz、ow字段为四元数,代表机器人旋转的角度值,px、py、pz字段代表机器人的在xyz三个方向上移动的距离;
46、设定机器人到目标作业对象之间的移动距离为s,将旋转距离和直线距离结合在一起计算,当dt为大概67ms时,ds可以作为在dt时间范围内的移动距离;
47、机器人的移动轨迹为曲线,定义机器人的位置为a点,目标作业对象的位置为b点,在dt的67ms范围内,机器人从a点沿曲线移动到b点,实际的移动距离为s1,机器人在a点的朝向指向a点切线方向yawa,机器人在b点的朝向指向b点切线方向yawb,yawa和yawb都是弧度值,机器人在a点的法线和机器人在b点的法线相交于c点,则ac垂直于yawa,bc垂直于yawb;
48、/odom中输出的四元数ox、oy、oz、ow的值分别为x、y、z、w,则机器人的朝向角度yaw可以表示为:
49、
50、则yawa和yawb之间的夹角α可以表示如下:
51、
52、其中ros中的/odom中输出的px,py可以用来表示a点和b点的坐标,其中a点的坐标是(pxa,pya),b点的坐标是(pxb,pyb),则线段ab的长度为:
53、
54、从c做ab的垂直线,与ab相交于d点,通过几何关系可知d为ab的中点,即ad=bd=1/2×ab;
55、通过几何关系可知角度∠acb=α,则∠acd=1/2α,则可得:
56、
57、综合公式(14)-(16),可得
58、
59、因以上角度为弧度值,同时dt的时间为67ms左右,dt非常小,机器人在该时间范围内的移动距离很小,因此s1可以用圆弧s2近似,可得:
60、
61、在一些实施例中,在计算功耗值p时,利用机器人的实测电压值和实测电流值的乘积来计算功耗值p;
62、控制机器人在运动了一段时间后停下,当机器人在停止状态时,/battery话题的输出值里的字段lx、ly、lz、ax、ay、az都为0,其中lx、ly、lz字段代表机器人的在xyz三个方向上的线速度,ax、ay、az字段代表机器人的在xyz三个方向上的角速度,因此求出当lx、ly、lz、ax、ay、az都为0时的平均功耗值a;
63、记录机器人在运动后的功耗值b,计算功耗值p=b-a。
64、在一些实施例中,在数据表中,判断是否存在一行的某字段的值同时大于上一行和下一行的该字段的值的3倍,或者某一行的某字段的值同时小于上一行和下一行的该字段的值的1/3倍;
65、若存在,则判定此值为噪音,将噪音所在行的数据删除。
66、在一些实施例中,制定导航路线时:
67、检测并判断机器人与目标作业对象之间是否存在障碍物;
68、若有,选定一个可绕开所述障碍点的中间点,制定从机器人所在位置到中间点再到目标作业对象的导航路线,其中,所述导航路线由两段直线路线构成;
69、在选取中间点时,以其所构成的导航路线计算全程功耗值,选取功耗值最小的导航路线,确定为中间点。
70、在一些实施例中,所述机器人在中间点执行旋转动作,当车轮旋转角度为2π时,光电编码器的脉冲量为m,当车轮旋转角度为θ时,光电编码器的脉冲量为m,则车轮旋转的角度如下:
71、θ=2πm/m (19)
72、轮子的旋转角度β与机器人的旋转角度α相同,所以β=α;
73、确定机器人的重心a,对左上角的轮子进行标记为z,重心a与轮子z的长度为k,轮子在旋转前后的移动距离表示为弧长s,因此s的值为s=βk;
74、车轮的半径为d,车轮的移动距离为弧s,则s的值为s=θd,因此βk=θd,β可按公式(20)计算。
75、α=β=θd/k=2πmd/mk (20)
76、在公式(20)中,m、d、k可以在机器人上测量获得,m为车轮电机的光电编码器的脉冲量,可以从电机的用户手册中获得,因此机器人的旋转角度α可以根据公式(20)求得;
77、设定光电编码器的光栅误差服从均匀分布,最小误差为0,最大误差为1.8度,因此平均误差为0.9度,因此需要对公式(20)中的α进行修正,修正后的α可由公式(21)求得:
78、α=2πmd/mk+0.9*2π/360 (21)
79、在一些实施例中,对家庭场景进行摩擦力测试,用胶水将大圆尺粘贴在地面,并将其放置在机器人下方,将长的暗线固定在机器人上,其末端在机器人外部,机器人将旋转直到α达到90度,然后检查长暗线的末端指向多少度,以获得测试误差;
80、因此公式(21)加上摩擦力的误差f,可以修改为公式(22):
81、α=2πmd/mk+0.9*2π/360+f (22)
82、在一些实施例中,利用线性svr算法预测机器人的旋转角度值,api是来自sklearn.svm包的linearsvr(),参数如下,epsilon的值为0,loss的值为epsilon_insensitive,intercept_scaling的值为1.0。
83、在一些实施例中,机器人向前移动,移动距离可以按公式(23)计算:
84、s=2πmd/m+(0.9×2π/360+f)×k (23)
85、机器人向后移动,则移动距离可以通过公式(24)计算。
86、s=-2πmd/m-(0.9×2π/360+f)×k (24)
87、在一些实施例中,在机器人按照导航路线行驶过程中,实时检测在机器人预设检测范围内的障碍物,若检测到障碍物位于导航路线上,将机器人停在现处位置,设定为初始位置p0;
88、从预设检测范围内障碍物群组中计算相邻两个障碍物的边缘最窄距离l,若l大于1.2*w,w为机器人的宽度,则判定机器人可从对应的障碍物之间通过;
89、针对每个间距通道,定义一个机器人在通过间距通道后的位置,计算此位置与目标作业对象之间的直线距离,选取最短直线距离对应的间距通道,控制机器人从对应的障碍物之间通过。
90、第二方面,本发明提供一种家庭级机器人低功耗导航系统,应用如上述的一种家庭级机器人低功耗导航方法,包括:
91、初始地图单元,用于基于家庭场景及目标对象的位置,建立初始地图坐标系,并确定每个目标对象的初始坐标;
92、重定位单元,用于对机器人进行重定位:根据在机器人预设检测范围内的第一目标对象和第二目标对象之间的相对旋转角度α、机器人与第一目标对象之间的第一距离s1和机器人与第二目标对象之间的第二距离s2,建立重构坐标系,并确定机器人在重构坐标系中的坐标,经过转换计算,重定位出机器人在初始地图坐标系中的坐标;
93、导航单元,用于接收作业指令,识别目标作业对象,基于目标作业对象和机器人在初始地图坐标系中的目标,制定导航路线。
94、在一些实施例中,导航单元还用于检测并判断机器人与目标作业对象之间是否存在障碍物;
95、若有,选定一个可绕开所述障碍点的中间点,制定从机器人所在位置到中间点再到目标作业对象的导航路线,其中,所述导航路线由两段直线路线构成;
96、在选取中间点时,以其所构成的导航路线计算全程功耗值,选取功耗值最小的导航路线,确定为中间点。
97、第三方面,本发明提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述的方法的步骤。
98、第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质可以为非易失性的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使处理器执行如上述的方法。
99、相比现有技术,本发明至少包括以下有益效果:
100、当机器人在行驶过程中停止,采用几何分析方法对机器人进行重定位,并基于当前坐标,重新进行导航,实现在动态环境中的良好避障,并用于指导得出功耗最低的导航路线,简化了定位过程,节省cpu功耗;
101、从能量守恒的角度推导出了影响机器人移动功耗的主要影响因素,以这些影响因素为目标提高功耗预测的精准度。
102、下面结合附图和具体实施方式对本发明作进一步详细说明。