写在前面,这篇文章是借鉴Drexel University 的Senior Design project的matlab simulink四旋翼模型,在此基础上针对六旋翼进行的基本改进,这里只对“+”型模型进行了改造,学习追溯帖。
数学模型
自然坐标系下,以无人机本身为参考系
说明:
- 基础变量是线性加速度
- 左上:以体坐标系下的微分
- 右上:体坐标系下的加速度
- 下标:这个变量是质心相对于惯性系
- 这里使用+号坐标系法,x的正方向指向motor1
Mass Moment of Inertia Matrix 质量惯性矩阵
对应轴的转动惯量
推力系数Thrust Coefficient
其中:
ρ是空气密度
CT是特定一个旋翼的系数
Ar是螺旋桨旋转的扫掠面积
r是旋翼半径
是旋翼角速度
Torque Coefficient 转矩系数
马达效应
A current-carrying wire or coil can exert a force on a permanent magnet. This is called the motor effect
同时考虑马达效应和推力,和旋翼的角速度成正比
将常量化为一个系数最后得到:
初试矩阵的建设 initial matrix construction
通过输入测试得到的数据,我们提供了一个程序来方便计算这些系统系数,通过这些信息,我们能够建立一个Initial matrix,分别表示推力以及体坐标系下各轴转矩。
百分比控制 Throttle Command Relation
调速命令
为了控制,由于系数是从推力转矩与rpm之间转换的,所以需要线性回归来将调速命令转换成为rpm
解释:
throttle是比例
Cr是rpm的转换系数,b是y的偏移
陀螺力Gyroscopic Forces
陀螺力是由每个马达的转动惯量,以及转速,还有角速度Roll and Pitch rate,反力的方向参考这篇文章,简单来说,反力的方向是:
pi/30代表从rpm转换到角度速度的转换
最后方程建设
将之前得到的转矩和陀螺力加起来
这里
代表由推力空气动力学推力和扭矩生成的力矩,主体部分收到的推力可以由以下表达。
其中f代表在基坐标系下,由空气阻力和推力同时作用下的力。
状态方程
角速度状态方程,其中包含每个角度的状态方程:
其中:后面一项可以理解为刚体的科氏加速度,推导借鉴这里以下是借鉴推导部分,Ω矩阵将wb叉乘转化为点乘
这个部分是角速度
下一个状态方程是欧拉运动方程,描述了欧拉角在惯性系下的运动速率
笛卡尔坐标系下,使用旋转矩阵转换描述机体坐标系表达的一切向量。
利用欧拉角组成旋转矩阵
cb是旋转方程相乘得到
这可以用来解决速度和位置方程
通过引入这个旋转矩阵
角速度可以表达为:
最后欧拉运动学方程能用如下的的运动学方程来表示
虽然这种方法很有效,但是有一个缺陷,当θ等于正负90度时,有奇异点出现,这样当飞行器的的pitch角度达到正负90时候,精确性就要打折了,
但是对于保守的设计来说够了。
解决方法:
使用四元数来模拟就可以解决
下一个是速度状态方程
考虑施加在主体质心的加速度和力
这里开头是线性加速度实在对应惯性系下的线性加速度,变量m是总质量,gb是转换以后的重力加速度,使用这个可以计算出xyz方向的加速度
最后一个状态方程是位置状态方程,描述了无人机质心的线性速度
这里v代表无人机的速度由c来转化以后的速度,让我们得到无人机的速度。
工程体现
在工程中我们需要修改电机的数量,初试条件的举矩阵等,本着不多事的原则,我只修改了电机数量,内外反馈没有进行改动。
这是修改内容
整体改了六个旋翼,改了控制器和输入输出状态,反馈回路没有修改。
经过测试,整体上还是比较稳定的:
可视化界面,这里修改了模型。
状态指标:
文件地址:
https://cloud.189.cn/t/YFVVveMr63ym (访问码:6kgs)
文章出处登录后可见!