概述
1.姿态控制:对于飞行器来说,我们首要的是控制他的姿态来保证稳定的飞行,那么在控制算法的设计中,姿态环选取的状态变量是什么?
虽然我们明确说的控制的是“姿态”,但是姿态的描述有很多种方式,我们应该选取哪一种方式去描述姿态?
实际上我们在算法里是以四元数作为状态变量,大家都知道四元数描述的是旋转,那么这个用于控制的四元数描述的是从哪个坐标系旋转到哪个坐标系呢?
我在这里需要定义几个坐标系:bodyheading坐标系(bodyheading这一词从开源飞控里学来的),直译的话就是机头坐标系、当前机体坐标系、目标机体坐标系
bodyheading坐标系:x为机头朝向(与地面平行),y为朝向机头左方(与地面平行),z为上方
那么要保证飞机不炸鸡的关键就是要控制好这个旋转矩阵。
这个旋转矩阵的几何意义是Body系的各坐标轴在Bodyheading系下面的投影
只要我们能够实时控制这个矩阵达到我们的目标值,也就是让,就能控制住飞机的姿态(roll,pitch分量)
由于程序里面一般进行运算的是四元数,也就是,要想拿到需要融合好陀螺仪和加速度计。
这个四元数的几何意义是Bodyheading系绕着某个轴转某个角度旋转到了Body系
我在控制算法框架里面输入的目标值就是,需要反馈过来的是。
是根据用户设定或者是位置控制器输出先得到目标角度,然后通过目标角度构造的。
是从估计器拿到的四元数。
这里插一条四元数的性质:如果,则有
OK,这里有两种可以表示姿态误差的方式
第一种是采用相对变换的方式:
可得误差四元数:
就是从当前机体坐标系旋转到目标机体坐标系的四元数,接着求的旋转向量再转化为目标角速度,再与机体角速度进行作差。
第二种是采用绝对变换的方式:
可得误差四元数:
这里涉及到左乘右乘的问题,对于矩阵和四元数,左乘是绝对变换,右乘是相对变换。
是表示从bodyheading坐标系作一个小旋转,叠加到上可与目标机体坐标系重合。
的旋转向量是在Bodyheading系的,转化为目标角速度也是在Bodyheading系的,需要转到Body系才能与机体角速度作差。
那是用绝对变换还是相对变换?从原理上是没区别的,只看怎么算方便
为什么acfly里用的是绝对变换?因为他要做前馈计算,前馈量是算在Bodyheading系的
2.姿态刚体动力学
3.,控制目标是使得,从而使得
跟踪误差的微分方程:
最后
以上就是雪白乐曲为你收集整理的control 学习笔记的全部内容,希望文章能够帮你解决control 学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复