跳转至

MATLAB/Simulink — 建模与控制开发平台


MATLAB/Simulink 是 RflySim 工具链中建模与底层控制算法开发的核心平台,支持基于模型的设计(MBD)流程,覆盖从模型搭建到自动代码生成再到固件部署的完整链路。


在 RflySim 中的角色

graph LR
    A[Simulink 建模] --> B[控制器设计]
    B --> C[离线仿真验证]
    C --> D[自动代码生成 C/C++]
    D --> E[编译并上传至 Pixhawk]
    E --> F[HITL 硬件在环仿真]
    F --> G[真机部署]
  • 运动建模:在 Simulink 中搭建多旋翼 / 固定翼 / 无人车等动力学模型
  • 控制器设计:使用模块化拖拽方式设计姿态/位置控制器
  • 自动代码生成:将 Simulink 模型自动转换为 C/C++ 代码
  • 固件自动部署:生成的控制器作为 px4_simulink_app 模块加载到 PX4 中

推荐版本与工具箱

要求 说明
MATLAB 版本 R2022b 或更高版本
Simulink 必装核心组件

关键工具箱

工具箱 功能
Aerospace Blockset/Toolbox 飞行器运动建模、任务规划、环境分析
MATLAB Coder MATLAB 代码 → C/C++ 转换
Simulink Coder Simulink 模型 → C/C++ 代码生成
Embedded Coder 嵌入式代码优化与下载
UAV Toolbox 无人机控制器设计与任务规划
ROS/ROS 2 Toolbox ROS 通信接口

安装提示

在安装 MATLAB 时,请勾选 SimulinkAerospace 及所有相关工具箱,以确保 RflySim 工具链的完整功能。


RflySim 内置了两套 Simulink 工具箱:

SimulinkPSP(Pixhawk Target Blocks)

由 Simulink 官方提供,面向 Pixhawk/PX4 自驾仪的底层控制算法开发:

子库 功能
ADC and Serial ADC 模数转换读取、串口读写
Miscellaneous Utility Blocks 日志存储、打印函数、QGC 参数传递
Sensors and Actuators 电池监控、遥控器指令、电机控制、LED、传感器数据
uORB Read and Write PX4 uORB 消息的读取和写入

RflySimPSP

由 RflySim 团队扩展开发的高层功能库:

子库 功能
RflySim APIs 底层控制进阶库:姿态/速度/位置/力矩读写接口
RflySim Model 运动模型库:建模模块 + 外部通信 + 三维模型通信
RflySim PHM 故障建模与健康评估:电池/风/载荷/GPS/电机/传感器故障注入
RflySim Swarm 集群控制库:多机状态获取、动捕数据订阅、MAVLink 编解码
RflySim Vision 视觉控制库:Simulink 内订阅视觉图像,实现视觉闭环

MATLAB 命令行接口

RflySim 提供了专用的 MATLAB 命令行接口:

命令 功能
PX4Upload 将编译好的固件上传到 Pixhawk
PX4CMD 切换 PX4 固件版本
PX4SitlSet 生成 SITL 模式固件
PX4AppName 重命名控制器模块(支持多控制器)

自动代码生成流程

  1. 在 Simulink 中设计控制器:使用 RflySimPSP/SimulinkPSP 模块搭建控制逻辑
  2. Simulink Coder 生成 C/C++ 代码:自动转换为嵌入式代码
  3. 构建为 px4_simulink_app:作为 PX4 独立模块
  4. 通过 uORB 消息总线通信:订阅传感器数据、发布控制指令
  5. 上传至 Pixhawk:使用 PX4Upload 命令
  6. 接管执行器控制权:替代 PX4 原生控制模块

关于 uORB

uORB(Micro Object Request Broker)是 PX4 系统中用于数据传输的核心"发布-订阅"式消息总线,类似于 ROS 的中间件机制。所有的传感器数据、控制指令、中间状态都通过 uORB 消息在模块间传递。


相关例程

例程 路径
Simulink 模型搭建 RflySimAPIs\4.VehicleModeling\
控制器设计与代码生成 RflySimAPIs\5.RflySimFlyCtrl\1.BasicExps\e5-AttitudeCtrl
自动代码生成实验 RflySimAPIs\2.RflySimUsage\1.BasicExps\