EmmaChen

机器人有啥牛的?没了它,连直线都走不了

EmmaChen 在 2018-3-26 建立的討論區
最後回覆由cnhtzxb@163.com於2018-4-3提供

咱们官微发了一篇文章,当前热点应用相关科普的同时也觉得有趣也蛮有料,转发分享给坛子里面的小伙伴们,欢迎大家点评讨论~

 

在高科技泛滥的时代,什么样的机器人都有。地上跑的,天上飞的,水里游的,甚至于模拟人后空翻的,哇!那叫一个精彩啊。诺,就是下面这货,一气呵成,动作相当连贯,表演完了还不忘举手卖萌。

8机器人后空翻.gif

However,大家知道吗?我们现在看到的一些先进的机器人,其实也有过一段艰辛历程。一开始做出来的人型走路机器人,就像这位一样,动作歪歪斜斜,平地上行走都能把自己摔倒。为啥?因为这个时候的机器人,还不懂得自身的平衡,一步歪,步步歪。

2机器人萌萌摔.gif

再瞅瞅Robo Master的机器人比赛,虽然这个机器人有四个轮子,不容易摔倒,但想要随心所欲地实现跑直线、转弯漂移等,也是需要非常棒的自身平衡控制系统的。

3红方机器人灵活走位.gif

同样是机器人,为何差距就这么大呢?了解机器人控制系统的坛友们肯定知道,这主要是无法避免地系统误差原因引起的。比如机械安装误差,以及轮子不同程度的磨损造成不同的摩擦力等,这些因素都会导致机器人越来越“不听话”,不按预期效果“表演”才艺。

 

PID科普的文章中提到过反馈控制,反馈控制的好处就是:假设有传感器去测量实际数据,那就有办法消除误差,使得实际数据稳定在期望的数据上。那该如何让机器人察觉到误差,并及时消除误差呢?

 

简单举个栗子:假设我们的目标是让机器人走出一条直线,结果它却走得歪歪曲曲。这是为什么呢?分析原因,是因为在它行进过程中的各种扰动使得它发生了绕着垂直于地面方向的旋转。所以,我们得寻找一种传感器,可以用来测量机器人垂直于地面方向的旋转量,然后再通过在系统中不停地加入计算结果,最后达到消除误差的目的。

0000.png

一般来讲,找寻传感器会从物理原理上找。首先从理论上来研究,物体在旋转时会有一个向心力,所以F和外界因素(偏移旋转半径R)关联,但R不可测,所以不考虑向心力。不过科里奥利力中谈到,如果旋转物体中,有质点由于惯性进行了直线运动,相对于旋转物体产生了偏移,那就会产生这个力。公式为:F=2mwv ; V是内部产生的可测量的震动。这个力和向心力有所不同,它和旋转半径没有任何关系,所以这个思路是非常不错的。

 

在现实中,就正好有样的一种传感器可以利用这个原理测量角速度,这种传感器叫MEMS陀螺仪(微机械陀螺仪)。MEMS陀螺仪在测得角速度之后,再将其进行积分就可以得到相对角度(此时主要是通过参考自身的某一状态,比如刚启动时的状态),最后再利用PID修正角度,达到直行的效果。

00000.png

然而我们也知道,凡是测量总会有误差。靠积分获得的角度在一定时间内虽然是可靠的,但这个积分同时也在将误差进行累计。所以在一段时间后,这个角度也会越来越不准,这个时间的长短基本正相关于器件的价格。

01.png

利用类似原理的还有机械式陀螺仪和光纤陀螺仪。机械式陀螺仪是唯一一个真的有个陀螺在转的传感器。在光学中,一般是基于萨格纳克(Sagnac)效应的陀螺。

4机械式陀螺仪.gif

实际上,这几种传感器更准确的叫法应该是:角速度传感器。但由于各种原因,现在一般都叫陀螺仪。结合成本和测量方法,我们一般选用 MEMS 陀螺仪。

 

获取旋转角度

以ADI公司的ADIS16470陀螺仪为例,下面和大家聊聊陀螺仪是如何获取角度的。

微信图片_20180326105400.jpg

上面谈到,陀螺仪可以测出角速度,将角速度进行积分就可以得到角度了。而如果想要获得实时的角度,那就还得知道每次测量的时间间隔,利用时间和角速度再进行积分,就可以得到实时的角度。那么又该如何来获得时间间隔呢?

 

一种办法是装一个计时器,但是计时器计算时间会存在时间间隔,然后再告知陀螺仪也会有时间延迟,所以不合适,不然就会出现下面这种“犯二”的情况。

12.png

另一种就是陀螺仪自己计算时间间隔。ADIS16470陀螺仪就有计时功能,它可以自己给自己汇报时间,而且不会存在误差。

 

陀螺仪误差

但是刚刚也谈过了,测量总会有误差,陀螺仪自身的误差产生于各种外力干扰和温度变化。误差会导致用陀螺仪修正过的机器人在工作时左右摆动,走不出平滑的线,或者静止时会慢慢地自旋,这就是漂移现象。当然,这点误差对于地面机器人的影响可能不大,但是对于无人机或者其他精度要求超高的机器人来说,稍微有点偏差都很致命。

5发生左右抖动.gif

如何根除误差

温度因素引起的误差:

温度导致的飘移简称温漂,属于无法避免的静态误差,主要原因是内部测量器件会随着温度的变化而变化,一般有两种方法解决:

1、  硬件式:在陀螺仪旁边加一个大电阻进行加热,强制陀螺仪达到某一个温度,就可以保持恒温状态;

2、  软件式:先测量不同温度下的温漂情况,然后进行拟合和补偿,也就是温漂标定,使陀螺仪在不同的温度下有不同的拟合和补偿。

 

其它因素误差:

除了测量相对角度,还有传感器可以测量绝对角度(参考系设为大地坐标系)。我们可以用绝对角度和相对角度进行互补来矫正角度。

另一种传感器就可以帮助我们,它叫地磁计,相当于电子式的指南针,可以指出地磁场的方向。这种传感器测量的是自己与地磁场的角度,也就是绝对角度。

21.png

由于磁场环境非常的敏感,电机转动和房屋的钢筋结构都会对磁场造成影响,所以磁场的角度一般是不准的,但是在同一环境内是稳定的。

 

可以得知,陀螺仪适合短时和动态的,长时间下会有漂移;磁力计适合长时和静态的,动态情况下会有误差。我们可以各取所长,将两个数据进行融合,并使用比较合适的滤波和算法融合手段,最终得到准确的角度值。这个过程也就是姿态解算。

6数据融合.gif

一般用卡尔曼滤波器进行解算,除了卡尔曼滤波算法,还有其他的融合算法,比如一阶的互补滤波、二阶互补滤波和权重参数自适应互补滤波等等。它们的复杂程度不同,我们要根据实际需求选择适合的算法。

 

对于角度值的求取解算,一个传感器往往是无能为力的,需要多个传感器取长补短。而陀螺仪数据就是最核心的部分,其他传感器基本是为了抑制陀螺仪的漂移而打辅助。在实际的工程中,测量一个物体的姿态是非常常见的需求,所以很多产品都会把多种传感器比如陀螺仪、加速度计、电子罗盘等等集成到一个模块上,不需要我们一一安装,是不是方便又体贴呀。

 

通过上述一系列方法,我们获得了一个物体相对于起始位置的角度,就可以利用 PID 反馈控制让机器人随心所欲地奔跑了。我们还可以把这样一套传感器安装在云台上,将底盘的运动视为扰动。在底盘来回抖动时,云台会以地面为参考系保持静止,我们就可以单独地控制云台。

7云台静止,机身扭动.gif

总而言之,机器人走直线或是做出像上图一样的扭腰动作,看起来是一个很简单的事情,但事实上影响因素非常多,每一步的实现都需要进行全面的考量。所以,陀螺仪在这些需要进行方向选择的机器人控制中,有着举足轻重的作用;只有选择了合适的传感器,才能更好地解决问题。

結果