无人机物理模型的模型文件是Model.slx
,打开可以看到如下图所示的内容:
可以看到,模型由两个大的模块,Actuator
和Kinematic_Equation
,每个模块为一个subsystem
(子系 统),里面包含了更多的模块,有点类似于写代码时候的函数封装。点进去可以看到模块内部的细节。
下面我们分别说下Actuator
和Kinematic_Equation
这两个模块的设计。
作动器建模
作动器即提供动力的器件,对于无人机来说,作动器就是固定在机臂末端的电机了,且这里一般都是无 刷电机。除了电机以外,还会有电调来驱动电机。电调的特性会改变电机的相应速度,控制精度等,所 以严格来说,电调也应该算到作动器的模型中去。
当我们给定一个 PWM 信号,该信号会传给电调控制器,然后电调再输出电压控制电机。当我们给定一 个 PWM 指令后,电机并不会马上达到目标速度,而是会有一个延时,这个延时跟电调,电机都会有关 系。这里,我们将其简化为一个一阶的惯性环节:
其中 为时间常数。此外,我们还需要知道输入的 PWM 波与实际电机对应的转速之间的关系。因为根据 前面的公式我们可以知道,电机所产生的力和力矩,都是跟电机的转速对应的。在电调内部,其实也是 存在一个控制器,一般是 PID 控制器,来对电机的转速进行反馈控制,所以我们可以认为电机的转速跟输入的 PWM 信号的占空比是线性相关的。
所以,用 Simulink 实现的作动器模型如下所示:
下面我们要对电机进行建模。这里我们仅关注电机的主要效应,如产生的力矩和力,而忽略那些次要的 效应,对电磁感应等。根据之前章节电机产生力矩和力的公式,我们可以 Simulink 模块搭建出来,具体的实现细节,可以参考模型的源码,这里就不再过多的赘述。
动力学方程
下面我们来说下无人机的动力学方程。动力学方程是描述一个刚体运动的基本物理方程,它描述一个刚 体在受到外力的作用下所表现出来的运动状态。我们的无人机就是一个刚体,四个电机固定在机臂的尾端。当电机转动时,四个电机都是产生一个向上的力,四个力之和即为总拉力。这个拉力除了会为机体提供升力之外,还会产生一个导致机体旋转的力矩。
下图是姿态的动力学的 Simulink 模型 :
最左边Inertia_Matrix
是机体的转动惯量,一般可以通过实验测得或者理论推算。这里我们假设机体是 完全对称的,故只有对角线上有元素。
Quaternion_Update
模块使用1阶龙格库塔算法来对四元数进行更新。
其中 ,表示在b系测的的b系相对于n系的角速度。
然后我们看下位置的动力学模型,如下图所示:
这里用到的位置的动力学公式在之前的章节也已经有说过。这里有个body_to_earch模块,是用来进行坐标变换的,即把信号从B系转到I系。其中用到的旋转矩阵为:
其中为姿态四元数。
仿真
模型搭建好后,我们可以来做个仿真简单测试模型的性能。如下所示,我们给模型输入四个同样的 PWM 信号,PWM 值为 1500,表示油门在中间值。所以我们预期是飞机将垂直最匀加速运动。
以下是部分的仿真结果,跟我们预期的一致。
网友评论