为什么要做机器人动力学分析?

先来一个最简单的动作,在枪上挂一个装了1L(1kg)水的水壶,然后抬起手臂并保持稳定(1kg并不困难,一般的笔记本重量大约在1.5~2kg,试着感受一下),瞄准10米外的靶子 。


为什么要做机器人动力学分析?

文章插图

很简单吧,接下来我们增加一点点难度,假设挂着你手臂上的水壶会不定时的随机的改变它的重量,可能会变轻,也可能会变重,这时会发生什么情况?对,你无法很好的一直瞄准目标了 。

当水壶突然变轻时,由于你本来的用力大于实际所需,胳膊会往上抬,偏离目标;

当水壶突然变重时,由于你本来的用力小于于实际所需,胳膊会往下掉,同样偏离目标;

但是不管哪一种情况,偏离目标后,你都可以通过观察手臂朝向与靶标的差距,重新进行瞄准(当然前提是沙袋不要变得太重导致你举不起来) 。

////////////////在这里需要插入一丢丢控制理论的知识///////////////////

你通过眼睛观察到了偏差,大脑就会控制手臂移动去减小偏差,与此同时眼睛仍在观察,直到最终瞄准目标,这种基于“偏差/误差/error”进行控制的方法称为反馈控制,PID控制器就是经典的反馈控制之一 。

很显然,如果你无法看到需要瞄准的目标,或者虽然你看到了目标但是无法判断到底有多少偏差,那么就无法进行瞄准 。即,没有偏差,就无法进行反馈控制 。

偏差是反馈控制的基础,也是这种控制策略一些缺点的主要原因 。控制之前需要等待产生偏差,会导致控制系统响应变慢 。

人通过眼睛来完成绝大部分任务的过程都可以看做是反馈控制,更具体的,由于视觉的存在,有一个专用名词,即“视觉伺服 Visual Servo” 。

很多人在研究如何给机器人加上一双好用的眼睛,只不过距离人眼+人类大脑的水平还差的太远 。在射击运动中,你可以认为在人的大脑中产生了一个用于射击的反馈控制器,用于控制人手精确的射击目标 。

只不过有的人大脑中的控制参数不行,给定一个目标后,瞄准时间长,射击准确度差(初学射击的人);

而有的人参数调的好,通过大量的练习/训练(肉身完成一次训练时间巨长的学习),可以达到快速瞄准,精准涉及的目的(射击运动员);///////////////////赶快回来继续动力学//////////////////////////

为什么会发生偏离目标的情况?因为你不知道沙袋会在什么时候改变重量,也不知道沙袋会变重还是变轻以及变化量是多少,所以在沙袋变化的瞬间你只能以一个旧的稳定状态的出力来处理一个新的状态,导致了控制效果变差 。因此简单的反馈控制无法快速处理这种时变非线性的情况 。而现实的情况是,机器人上所使用的关节控制器/电机控制器绝大部分使用经典的PID算法,因此在这种情况下也会面临这样的问题(绝大部分机器人内部都会配备两种控制器,一种是用来控制电机的关节驱动器,里面通常是传统的PID控制,只能控制一个或者少数几个电机/关节的转动;另一种类似于人类的大脑,用来处理上层的感知,规划,通信以及协调各电机/关节控制器等任务) 。如何能改善这种情况呢?一个自然而然的思路就是想办法知道什么时候水壶的重量会发生变化,以及变化到多重,提前告知你,你就可以在水壶重量变化的一瞬间加把劲或者略微放松一些来保持手臂的水平,继续瞄准目标(当然这是理想情况,人类的精度控制水平是很模糊的,这里需要意会,你懂的) 。

这种提前把那些会影响你动作的外界因素告知大脑以提高控制精度的方法,在控制理论中被称为前馈控制 。

在这个例子中,有哪些外界因素需要提前告知呢?水壶的质量以及变化的时间 。

其中,质量Mass这个参数就属于动力学的范畴(终于讲到动力学了,呼~) 。在这里我们把水壶当成了一个点来考虑,假设水壶换成了一个棍子横在你的胳膊上,你就要考虑这个棍子的重心Center of Mass在什么地方了,毕竟重心在不在胳膊的上方差别很大 。

重量变化这个假设对应到机器人上是很常见的,各关节在运动过程中相互位置发生变化,由于重力产生的力也随之变化,例如手臂伸直和垂下两种状态,对肘关节的力量输出要求是不一样的 。

质量和重心两个参数与平动有关,涉及到转动时就要换成另外一组动力学参数,即惯量inertia和惯性主轴axes of moment,就不再说具体例子了 。

这是引入动力学的第一个好处,可以显著提高控制的准确性和响应速度 。

我们继续,现在射击任务要求有一些变化 。

你需要射击10次目标,每次射击前都要求手臂先回到垂直向下状态,然后抬起射击,最终完成10次射击的时间越短越好 。

假设一开始水壶是空的,相当于没有额外负载,你轻车熟路,每次都使劲全力快速举枪、射击、放下,20秒完成了10次射击,成绩优异 。(20秒是我瞎掰的) 。

再来一次,不知道谁使坏给你挂上了一个装满水的纯净水桶,估摸有20来公斤吧,你浑然不知,仍然全力举枪 。

啊~!good bye,肱二头肌 。举枪时,手臂末端画出了一个圆弧,我们称这个圆弧为路径规划Path Planning,然后为了更快的完成任务,我们尽全力赋予了这个圆弧运动一个速度(按照之前的假设,2s一次射击),整个过程我们称之为轨迹规划Trajectory Planning 。当枪的重量远低于手臂力量时,你以多大速度举枪不会有太大影响,因为这在你的肌肉承受范围之内 。但是如果你需要举起的力量超出了合理范围(例如前面所说单手横举满的纯净水桶),你仍然要以2s的时间完成一次完整动作,就会造成肌肉拉伤,因为不合理的速度/加速度要求超出了肌肉的物理限制 。

肌肉如此,机器人的电机也是如此,只不过人对于手臂的控制没有那么精确,而电机有精确的参数 。

这里用到的参数就是电机的力矩/转矩Torque,由力矩和惯量就可以得到所允许的最大加速度 。

因此动力学的第二个作用,是在规划机器人的运动时,充分考虑机器人动力系统的限制,在不损坏电机的情况下,规划出符合要求的轨迹(时间最短、功耗最优等) 。ok,枪打完了,我们换另一个的例子 。

基本上每个人都有过细微调整某些重物位置的经历,例如调整衣柜位置,对准设备的螺丝孔等等,由于比较重,力气小了推不动,稍微用点力,又推过了,神烦 。

这是由于摩擦力是非线性的,静摩擦很大,而动起来之后速度较低时的动摩擦又比较小,动静之间切换时控制对象变化过快导致控制精度变差 。

在电机低速控制中,有一种速度忽快忽慢的“蠕动”现象就是由于这个原因引起的 。

因此,在高精度机器人控制中,也要考虑摩擦力的影响 。

除此之外,由于参考系变化“产生”的科氏力,也在基本的动力学方程中,感兴趣的可以回去翻翻教科书 。

摩擦力和科氏力同样是动力学的范畴 。

尾声

例子不多,不过足以说明动力学算法对机器人轨迹规划以及运动性能的重要性了 。

所以,如果大家要把机器人用在精度、速度要求比较高的场合,先问问机器人厂商,有动力学算法么?价格谈不下来的时候,问问厂商:有动力学算么?

【为什么要做机器人动力学分析?】

好吧,上一段算是开玩笑吧,不过珞石科技作为有梦想,负责任的机器人公司,不惜成本也要把动力学的各种算法完善,以期为中国用户提供拥有完善动力学算法的机器人产品,最终名副其实地成为国产小负载机器人的首选品牌 。

以下是珞石科技在做动力学算法过程中的一些小图:


为什么要做机器人动力学分析?

文章插图


为什么要做机器人动力学分析?

文章插图

其他网友观点

谢邀 。

不过本人对CAE专业,谈谈自己的理解吧 。

考虑下面这个一轴的机械臂(连杆长L,质量不计),它的目标就是把黑色重物(质量M)从正下方距离L的蓝点送到正上方距离L的红点那里 。设重力加速度为g 。假设没有摩擦,电机没有转角、功率限制,只有力矩限制|τ|≤T,并且T=?GML

为什么要做机器人动力学分析?

文章插图

下面我们来从不同的角度看看这个设计可不可行 。

运动学上来看木有一点问题:假如把轴放在原点,Forward kinematics的解应该是

为什么要做机器人动力学分析?

文章插图

θ=-180°和θ=0°的时候分别能到达蓝点和红点,所以肯定没问题,妥妥的 。

静力学上乍一看也没问题:不就τ=-MGLsinθ嘛,最高点和最低点的时候都不费劲儿 。

但再仔细一看,不对,假如从-180°缓慢的往上转,临界情况需要的力矩是τ=MgL>T 这力矩不够咋整啊?换个打电机?

那是不是不换大电机就无解了呢?显然不是

把动力学搬出来想一想:系统的动力学模型是


为什么要做机器人动力学分析?

文章插图

由于是个二阶无阻尼振荡系统,其实完全可以通过左右摇摆~~摇上去的啊!

因此,此处说明了在进行设计的时候,除了考虑运动学和静力学之外,还应考虑动力学 。当然这只是一个极度简化的例子,但希望对于你的理解有帮助 。

    推荐阅读