前言
这篇博客主要记录昨日与实验室大佬针对UR5机器人拖动示教功能实现的思路。由于本人并非主攻力控方面。直到昨天在做实验的时候,与力控组的大佬讨论过后才了解UR机器人实现导纳控制的思路。
关于导纳控制/零力拖动
导纳控制与阻抗控制单从字面去理解很容易记混淆,实际上只要从算法输入输出就可以进行区分。
导纳控制: 机器人感知外力,根据控制律,输出电机的位移与速度;
阻抗控制: 机器人感知目标位移,目标速度与当前位移,当前速度的差值,根据控制律,输出电机的力矩。
导纳控制可以应用于零力拖动(示教)等任务场景。下图就是导纳控制的经典框图,参考仓库
可以看出输入到机器人的是位移与速度项
双编码器思路
对于外力的感知,是构建导纳控制的关键。有多种方法可以对外力的进行估计与测量,比如直接使用力传感器,动量估计算法等等… 但是在这里则是采用双编码器思路,一个编码器固定于电机端,另一个编码器固定于运动输出端,二者通过减速器进行连接。当施加外力使得机器人的关节偏离原位后,两个编码器之间的差值通过类似胡克定律的方式计算出外力。此即为双编码器思路。
当感知到外力后,就需要按照上面的控制律分别计算出机器人关节的加速度项,从而实现导纳控制。
关于重力补偿
从上面的控制律表达式可以看到,并没有动力学方程中的 G ( q ) G(q) G(q)项,因此并没有重力补偿的需求。