睿诚科技协会

无人机MATLAB建模与仿真如何实现?

无人机MATLAB建模与仿真:完整指南

本指南将分为以下几个核心部分:

无人机MATLAB建模与仿真如何实现?-图1
(图片来源网络,侵删)
  1. 理论基础:理解无人机的基本物理模型。
  2. 数学建模:建立无人机的运动学和动力学方程。
  3. MATLAB/Simulink 实现:将数学模型转化为可仿真的代码和模块。
  4. 控制器设计:设计能让无人机稳定飞行的控制器(PID)。
  5. 3D 可视化:使用 MATLAB 3D 工具箱实现逼真的飞行仿真。
  6. 扩展与进阶:介绍更高级的仿真技术。

理论基础:四旋翼无人机

我们以最常见的四旋翼无人机为例,它有四个旋翼,通过改变四个电机的转速,产生不同的升力和力矩,从而实现六个自由度的运动(三个平移:x, y, z;三个旋转:滚转、俯仰、偏航)。

  • 结构:通常为“X”型或“+”型布局。
  • 自由度:6个自由度,但在悬停时主要控制3个。
  • 控制
    • 垂直:同时增加/减小四个电机的转速。
    • 俯仰:增加后侧两个电机的转速,减小前侧两个电机的转速(或反之)。
    • 滚转:增加右侧两个电机的转速,减小左侧两个电机的转速(或反之)。
    • 偏航:利用反扭矩实现,对角线上的两个电机转向相同,另一对相反,增加一对电机的转速,其反扭矩会使无人机向另一对电机方向偏航。

数学建模:建立无人机动力学方程

建模是仿真的核心,我们通常使用牛顿-欧拉方程来描述无人机的运动。

A. 坐标系定义

  1. 惯性坐标系:固定在地球上的坐标系,记为 I = (X_I, Y_I, Z_I)Z_I 指向地心。
  2. 机体坐标系:固定在无人机上的坐标系,记为 B = (X_B, Y_B, Z_B)
    • X_B:指向机头(俯仰轴)。
    • Y_B:指向右侧(滚转轴)。
    • Z_B:指向机身下方(垂直轴)。

B. 状态变量

  • 位置p = [x, y, z]^T (在惯性坐标系中)
  • 速度v = [u, v, w]^T (在机体坐标系中)
  • 姿态角
    • (滚转角 Roll)
    • (俯仰角 Pitch)
    • (偏航角 Yaw)
  • 角速度ω = [p, q, r]^T (在机体坐标系中)

C. 动力学方程

根据牛顿第二定律,在机体坐标系中,合外力 F 和合力矩 可以表示为:

平移动力学 (力方程) m * dv/dt = R * F_gravity + F_thrust

无人机MATLAB建模与仿真如何实现?-图2
(图片来源网络,侵删)
  • m: 无人机质量
  • v = [u, v, w]^T: 机体坐标系下的速度
  • R: 从机体坐标系到惯性坐标系的旋转矩阵
  • F_gravity = [0, 0, -mg]^T: 重力
  • F_thrust: 旋翼产生的总推力,方向沿机体 Z_B 轴负方向,即 F_thrust = [0, 0, -T]^TT 是总推力大小。

旋转动力学 (力矩方程) I * dω/dt + ω × (I * ω) = τ

  • I: 无人机的转动惯量矩阵 (3x3)
  • ω = [p, q, r]^T: 机体坐标系下的角速度
  • τ = [τ_φ, τ_θ, τ_ψ]^T: 旋翼产生的总力矩(滚转、俯仰、偏航)

D. 运动学方程

位置运动学 dp/dt = R * v

  • 它将机体坐标系下的速度 v 转换到惯性坐标系下的位置变化率 dp/dt

姿态运动学 d[φ, θ, ψ]^T/dt = E(φ, θ) * ω

  • E(φ, θ) 是一个将机体角速度 转换为姿态角变化率的矩阵,对于小角度,可以简化。

E. 输入与输出的关系

电机输入 U = [U_1, U_2, U_3, U_4]^T 与力和力矩的转换关系:

  • 总推力: T = U_1 = k_f * (ω_1^2 + ω_2^2 + ω_3^2 + ω_4^2)
  • 滚转力矩: τ_φ = U_2 = k_f * l * (ω_4^2 - ω_2^2)
  • 俯仰力矩: τ_θ = U_3 = k_f * l * (ω_3^2 - ω_1^2)
  • 偏航力矩: τ_ψ = U_4 = k_m * (ω_1^2 - ω_2^2 + ω_3^2 - ω_4^2)

k_f 是升力系数,k_m 是力矩系数,l 是电机到中心的距离。


MATLAB/Simulink 实现

有两种主流方法:脚本编程Simulink 框图,Simulink 更直观,适合处理连续时间动态系统。

Simulink 实现 (推荐)

  1. 创建新模型:打开 MATLAB,在命令窗口输入 simulink,创建一个空白模型。

  2. 搭建模块

    • 无人机模型 (Plant)
      • 使用 MATLAB Function 模块,将上面推导的动力学和运动学方程编写成 MATLAB 函数,这是最核心的部分。
      • 输入:总推力 T 和力矩 τ_φ, τ_θ, τ_ψ
      • 输出:位置 p、速度 v、姿态角 [φ, θ, ψ]、角速度 。
      • 注意:这个函数需要求解微分方程组,在函数内部,使用 ode45 等求解器来更新状态,或者,更简单的方法是,将整个模型分解为积分器模块。
    • 积分器
      • dv/dt, dp/dt, d[φ,θ,ψ]/dt 等表达式分别用 Simulink 的数学模块(加法器、增益、三角函数等)构建出来。
      • 将这些输出连接到 Integrator 模块的输入端,积分器的输出就是 v, p, [φ,θ,ψ] 等状态变量。
    • 旋转矩阵 R
      • Trigonometric Function 模块计算 cossin,然后构建 R 矩阵。
    • 传感器模型
      • 为了模拟真实传感器,可以添加噪声,使用 Band-Limited White NoiseTransfer Fcn 模块来模拟 IMU(陀螺仪、加速度计)和 GPS 的噪声和动态特性。
    • 控制器

      暂时留空,后面再添加。

  3. 基本模型结构


控制器设计:PID 控制器

PID 是最经典、最易于实现的控制器,我们的目标是让无人机悬停在某个设定点 [x_d, y_d, z_d, φ_d, θ_d, ψ_d]

A. 分层控制结构

  1. 位置环 (外环)
    • 目标:控制无人机的位置 (x, y, z)
    • 输入:期望位置 (x_d, y_d, z_d) 和实际位置 (x, y, z)
    • 输出:期望的姿态角 (φ_d, θ_d, z_d) 和总推力 T_d
分享:
扫描分享到社交APP
上一篇
下一篇