运动学描述的是机器人末端和各个关节位置的几何关系。而动力学描述的是关节位置和力矩之间的力学关系。
机器人控制从全局上我们可以讲电机力矩作为输入,末端位置作为输出。
机器人的控制架构上可以分成非集中控制(uncentralized control)和集中控制(centralized control)。
非集中控制是目前最常见最简易的,各个电机作为独立的子系统来生成力矩控制律,电机之间的相互作用视为干扰量,但实际上是由于动力学产生的,我们可以不用显性考虑,所以动力学模型不是必要的,对于动态响应要求不高,机器人不是太庞大的情况下,不考虑动力学效果也不差。反之可以考虑动力学作为前馈补偿。这种控制方法实际中输入力矩的控制律实际上都交给底层伺服电机了,所以对上层控制来说实现起来较为简单。底层伺服算法一般是多阶PID,这里不展开。
总结一下非集中控制的基本流程:
从上层算法获得末端位置坐标点
通过逆运动学计算出各个关节所需要的位置,逆运动学存在多解,要考虑取舍。
各个关节的驱动自己完成位置控制。
运动学在这里扮演的角色是做一个几何映射,从末端坐标,到各个轴的坐标。最后真正的运动控制是各个驱动器分布式完成的。
简单来说,就是把机器人的控制问题转化成了电机的控制问题。
这里我们虽然我们没有对动力学显性建模,但实际上动力学是物理上客观存在的。指由于动力学的客观作用,比如重力,惯性力,摩擦力等,电机之前会有互相作用。只是在没有考虑运动学的情况下,对这些外力没有信息,就都视为干扰。让电机的控制器自行补偿。
在考虑动力学模型的情况下,我们将这个互相作用的力计算出来,作为一种前馈补偿,直接告诉电机现在应该用什么力,而不是完全靠电机自己去计算。在控制效果上会得到一定增强。而且模型并不需要太精确,伺服会补偿掉不剩下的误差,鲁棒性很高。
而对于集中控制,动力学就是必要的了。相比之前动力学只是作为前馈而言,这里我们才可以说是真正意义上的动力学控制。这里我们是通过动力学模型,直接生成力矩控制力,讲机器人系统作为的一个整体来考虑,而不是分成子系统。所以才叫集中控制。
基本流程如下:
从上层算法获得末端位置坐标点
通过逆运动学计算出各个关节所需要的目标位置。
根据动力学模型,设计控制规则,这里系统的输入(控制器输出)是力矩。这里展开就多了,一般来说可以有重力补偿PD控制,鲁棒控制,自适应控制,滑膜控制等。
各个电机仅仅通过电流环做力矩控制。
这样控制的优势在于对力有一定的控制作用,可以做柔顺控制,力控制。实现更多的功能。实际上应用的极少,至少在产品级的工业机器人方面,即使四大家族无法实现集中控制。这里主要的有几个因素:
摩擦力辨识极难,但是高速时摩擦力影响能达到30%以上。
对反馈要求高,但是现有加速度传感器噪声往往过大。
最后总结一下:
在非集中控制中,运动学和动力学都为是底层电机控制服务的,运动学提供目标量,动力学提供前馈或者不用。
在集中控制中,动力学作为系统模型来设计控制率,运动学作为辅助计算机器人的几何关系。