位置控制原理
最近一段时间一直在忙着写官方的C型板教程,这个教程咕了两个多月没写了,现在回来把坑填完。
C型板教程的写作思路是首先介绍板子上各个外设的基本原理,讲一下cube的配置和HAL库的API,然后讲解示例工程,论详细度和专业度比我这边这个教程要强多了,语言上也比我这边写的要严谨多了哈哈哈,链接如下,希望各位关注关注。
回归正题,RM机器人上最复杂的控制计构就是双轴云台了,赛场上的情况对双轴云台的控制稳定度与响应灵敏度双方面都提出了很高的要求,云台控制的好坏在一定程度上就能够代表一支队伍的实力。
但双轴云台的控制与底盘控制存在直接的区别在于,底盘是一个单环控制系统,用户对底盘的输入值为底盘的速度期望,底盘的输出也同样是速度。而云台则是一个双环控制系统,用户对云台的输入值为云台的转动角度期望,而云台电机能够直接输出的是转速。
输入是角度的期望,输出的是电机的速度。就是由于这个原因,必须多引入一级控制器,实现将角度控制转换成速度期望,然后再通过第二级控制器完成速度的闭环控制,这就是为什么云台一定要使用双环控制系统。
针对云台的控制系统的结构,我们可以画出简化的系统框图如下:
第一环控制器被称为角度控制器(Angle_Controller),因为它的输入为期望角度和实际角度之间的差值。第二环控制器被称为速度控制器(Speed_Controller),因为它的输入为期望速度和实际速度之间的差值。
我们给整个系统的输入值reference就是整个云台的角度期望,将其与实际的输出角度angle_feedback(这个值一般是云台电机编码器的反馈角度值或者IMU反馈的角度值)做差,将差值作为角度控制器(Angle_controller)的输入,计算第一环的PID,角度控制器的输出值直接作为速度控制器(Speed_Controller)的输入,输入与角速度的反馈值(一般是IMU反馈的角速度值或者将云台编码器的反馈角度值进行差分,在上面的系统图中公式\(\frac{△u}{△t}\)表示对角度值求导获得角速度)做差,得到速度控制器的输出,该输出值直接给电机。
一般第一次接触双环控制者的疑问是,为什么可以直接将角度控制器的输出作为速度控制器的输入?角度控制器的输出似乎没有什么物理含义,为什么就可以被看成是速度的期望?
从定性的角度来解释这个问题,这是因为角度控制器的输出确实在一定程度上反映了速度的期望,角度控制器的输出值越大,说明总体上角度的误差是比较大的,也就是目前的云台位置和期望的云台位置差的越远,我们就会越希望云台以更快的速度达到期望的位置,速度期望较大;而当云台的实际位置和期望位置接近时,角度控制器的输出较小,同样我们会希望云台尽可能细微的调节自身的位置,因此云台的速度期望就会小。
由此可见位置控制器的输出实际上和速度期望之间是存在正相关关系的,如果将其直接视作简单的线性关系