CopterSim — 载具运动仿真器¶
CopterSim 是 RflySim 工具链中的核心运动仿真软件。它一方面负责载具动力学模型的加载与运行,另一方面承担整套系统中的通信枢纽角色,将 PX4 / APM、RflySim3D、QGroundControl、Python / Simulink 控制程序等组件连接成一个完整的闭环仿真系统。
如果把 RflySim 工具链理解为一条研发链路,那么 CopterSim 主要负责两件事:
- 让载具“按真实动力学”运动起来。
- 让不同控制器、显示器和外部程序“按统一接口”协同起来。
CopterSim 是什么¶
软件定位¶
CopterSim 不是单纯的三维显示软件,也不是单纯的飞控软件,而是介于二者之间的运动仿真核心。它的典型定位如下:
| 角色 | 说明 |
|---|---|
| 运动仿真器 | 根据载具模型、控制输入和环境参数计算实时运动状态 |
| 通信枢纽 | 与 PX4 / APM、RflySim3D、QGC、Python / Simulink 之间做数据交换 |
| 模型承载器 | 支持内置模型、DLL 模型、XML 模型等多种接入方式 |
| 闭环验证平台 | 支撑 SIL、SITL、HITL、多机仿真和虚实结合等实验 |
核心能力¶
1. 载具运动仿真
- 根据设定的载具动力学参数直接计算模型并运行仿真。
- 支持导入不同载具的 DLL 动力学模型,可由 Simulink 自动代码生成或由 C++ 直接编写。
- 支持多旋翼、固定翼、复合翼、无人车、拖车等不同类型载具。
2. 通信中转
| 通信路径 | 方式 | 说明 |
|---|---|---|
| CopterSim ↔ PX4 / APM | 串口 / TCP / UDP | MAVLink 双向通信 |
| CopterSim → RflySim3D | UDP 结构体 | 发送位姿、电机状态、真值等信息 |
| CopterSim ↔ Python / Simulink | UDP | 控制输入与状态回传 |
| CopterSim → QGroundControl | UDP | 转发 MAVLink 遥测消息 |
| CopterSim ↔ 多机 / 分布式节点 | UDP / 结构体广播 | 多机联机与集群仿真 |
安装位置与可执行文件¶
CopterSim 默认安装在 [安装目录]\CopterSim 目录下,通常为 E:\PX4PSP\CopterSim。常用可执行文件如下:
| 文件 | 说明 |
|---|---|
CopterSim.exe |
带 GUI 的日常使用版本,适合调试和单机实验 |
CopterSimNoUI.exe |
无界面版本,适合命令行调用、批量启动和大规模多机仿真 |
支持平台: Windows / Linux
版本体系¶
| 功能 | 免费版 | 完整版 | 定制版 |
|---|---|---|---|
| 无人机数量上限 | 8架 | 无限制 | 无限制 |
| PX4_HITL(硬件在环) | ✅ | ✅ | ✅ |
| PX4_SITL(标准软件在环) | ✅ | ✅ | ✅ |
| PX4_SITL_RFLY(RFly 软件在环) | ✅ | ✅ | ✅ |
| Simulink&DLL_SIL(模型在环) | ✅ | ✅ | ✅ |
| PX4_HITL_NET(网络硬件在环) | ❌ | ✅ | ✅ |
| APM_SITL_NET(APM 软件在环) | ❌ | ✅ | ✅ |
| PX4_SIH 系列 | ❌ | ✅ | ✅ |
| EXT_HITL_COM / EXT_SIM_NET | ❌ | ✅ | ✅ |
| 波特率 / GPS 坐标自定义 | ❌ | ✅ | ✅ |
| 多机联机(非首架) | ❌ | ✅ | ✅ |
| Redis 通信模式 | ❌ | ❌ | ✅ |
| 自定义 LOGO | ❌ | ❌ | ✅ |
版本识别方式: CopterSim 窗口标题栏会显示版本名,例如 CopterSim Full v4.13。
快速上手¶
最常见的使用链路¶
对于大多数用户,CopterSim 的工作链路可以简化理解为:
graph LR
PX4[PX4 / APM] --> CS[CopterSim]
CS --> R3D[RflySim3D]
CS --> QGC[QGroundControl]
PY[Python / Simulink / ROS] --> CS
CS --> PY
什么时候选哪种方式¶
| 目标 | 推荐方式 |
|---|---|
| 先把整套链路跑起来 | CopterSim.exe + GUI |
| 做大量重复实验或多机实验 | CopterSimNoUI.exe + CLI |
| 无真实飞控,做快速调试 | PX4_SITL / PX4_SITL_RFLY |
| 已有真实 Pixhawk,想做闭环验证 | PX4_HITL |
| 不接飞控,只验证模型本身 | Simulink&DLL_SIL |
建议的第一次阅读顺序¶
- 先看“仿真模式”,明确自己要做 HITL、SITL 还是 SIL。
- 再看“GUI 与日常使用”或“CLI 与批量运行”。
- 需要接外部程序时,再看“通信模式”。
- 需要更换模型时,再看“飞行模型与模型导入”。
系统组成与工作链路¶
分布式架构设计¶
RflySim 采用分布式仿真架构,CopterSim 与三维引擎 RflySim3D 运行在不同进程中:
- CopterSim:负责运动仿真与通信中转,偏 CPU 密集型。
- RflySim3D:负责三维可视化渲染与视觉传感器数据生成,偏 GPU 密集型。
这种架构的直接好处是:
- 三维渲染和运动计算解耦,降低单模块负担。
- 支持将 CopterSim 与 RflySim3D 分别部署到不同计算机。
- 运动模型可以独立开发,再通过 DLL 接入。
- 更适合大规模、多机和分布式实验。
数据交互路径¶
| 组件 | 协议 | 端口(n 号载具) | 数据方向 |
|---|---|---|---|
| PX4 SITL | TCP | 4560 + (n-1) |
双向 MAVLink |
| RflySim3D | UDP | 结构体广播 | CopterSim → 3D |
| Python / Simulink 控制 | UDP | 20100 + (n-1)×2(发) / 20101 + (n-1)×2(收) |
双向 |
| Python / Simulink 真值 | UDP | 30100 + (n-1)×2(发) / 30101 + (n-1)×2(收) |
双向 |
| QGroundControl | UDP | 14550 |
CopterSim → QGC |
与飞控的 HITL 消息交互¶
在 HITL 场景下,CopterSim 与 PX4 之间的关键 MAVLink 消息如下:
| 消息 | 方向 | 参数描述 | 频率 |
|---|---|---|---|
HIL_ACTUATOR_CONTROLS |
PX4 → CopterSim | 16 维电机控制信号(浮点 -1~1) |
≥200Hz |
HEARTBEAT |
PX4 → CopterSim | 心跳包与连接状态监测 | 1Hz |
HIL_SENSOR |
CopterSim → PX4 | IMU / 磁力计 / 气压计等数据 | ≥250Hz |
HIL_GPS |
CopterSim → PX4 | GNSS 卫星定位数据 | ≥10Hz |
解锁状态
仅当飞控进入解锁状态时,HIL_ACTUATOR_CONTROLS 中的控制指令才会真正作用于载具模型。
仿真模式¶
模式总表¶
CopterSim 通过 GUI 下拉框或 CLI argv[5] 选择仿真模式:
| 值 | 名称 | 说明 | 版本要求 |
|---|---|---|---|
| 0 | PX4_HITL | PX4 硬件在环,通过串口连接 Pixhawk 飞控 | 全部 |
| 1 | PX4_SITL | PX4 标准软件在环,通过 TCP 连接 PX4 SITL | 全部 |
| 2 | PX4_SITL_RFLY | PX4 RFly 软件在环,通过 UDP 连接 RflySim 定制 PX4 | 全部 |
| 3 | Simulink&DLL_SIL | 模型在环,不连接飞控,纯模型仿真 | 全部 |
| 4 | PX4_HITL_NET | 网络硬件在环,通过网络 UDP 连接飞控 | 全部 |
| 5 | EXT_HITL_COM | 扩展硬件在环,通过 MAVLink 串口连接外部飞控 | 完整版+ |
| 6 | EXT_SIM_NET | 扩展网络仿真,通过网络连接外部仿真系统 | 完整版+ |
| 7 | APM_SITL_NET | APM 软件在环,连接 ArduPilot SITL | 完整版+ |
| 8 | PX4_SIH_COM | PX4 SIH 串口模式 | 完整版+ |
| 9 | PX4_SIH_NET | PX4 SIH 网络模式 | 完整版+ |
| 10 | PX4_SIH_SITL | PX4 SIH 软件在环 | 完整版+ |
| 11 | PX4_SIH_FLY | PX4 SIH RFly 模式 | 完整版+ |
四类最常见场景¶
1. HITL(硬件在环)
- PX4 运行在真实 Pixhawk 硬件上。
- CopterSim 通过串口或网络与真实飞控通信。
- 适合做真实飞控接口验证和更接近实机的闭环测试。
2. SITL(软件在环)
- PX4 运行在 PC 端,例如 WinWSL 或 Docker。
- CopterSim 通过 TCP / UDP 与飞控软件通信。
- 无需真实飞控硬件,适合快速调试。
3. SIL(模型在环)
- 不接飞控,CopterSim 直接加载 DLL 模型运行。
- 适合做纯模型验证、控制器原型验证和高效率批量实验。
4. SIH(Simulation-in-Hardware)
- 在飞控固件内部运行仿真模型和控制器。
- 更偏飞控侧的内置仿真验证。
模式选型建议¶
| 如果你要做什么 | 推荐模式 |
|---|---|
| 先熟悉链路并快速调试 | PX4_SITL 或 PX4_SITL_RFLY |
| 接真实飞控做闭环验证 | PX4_HITL |
| 只验证模型或控制器 | Simulink&DLL_SIL |
| 接 ArduPilot | APM_SITL_NET |
| 做更深的飞控内部仿真 | PX4_SIH_* |
APM 模式切换
在 CopterSim 上一级目录或 %PSP_PATH% 下放置 isUseAPM.txt(内容为 1),可自动切换到 APM_SITL_NET 模式。
通信模式¶
通信模式总表¶
通信模式决定 CopterSim 与外部程序之间的数据传输方式,通过 GUI「通信模式」下拉框或 CLI argv[12] 选择:
| 值 | 名称 | 说明 | 版本要求 |
|---|---|---|---|
| 0 | UDP_Full | 完整 UDP 模式,发送 SOut2Simulator 结构体(168 字节) |
全部 |
| 1 | UDP_Simple | 简化 UDP 模式,发送 SOut2SimulatorSimpleTime(112 字节) |
全部 |
| 2 | Mavlink_Full | 完整 MAVLink 模式,适合 QGC 和 SDK 控制 | 全部 |
| 3 | Mavlink_Simple | 简化 MAVLink 模式 | 全部 |
| 4 | Mavlink_NoSend | 只接收不主动发送的 MAVLink 模式 | 全部 |
| 5 | Mavlink_NoGPS | 无 GPS 模式,适合视觉里程计或无 GPS 导航仿真 | 全部 |
| 6 | Mavlink_Vision | 视觉模式,发送视觉定位数据 | 全部 |
| 7 | Redis_Full | Redis 完整通信模式 | 定制版 |
| 8 | Redis_Simple | Redis 简化通信模式 | 定制版 |
选型建议¶
| 控制方式 | 推荐通信模式 |
|---|---|
| Python / MAVLink 控制 | Mavlink_Full |
| Simulink / DLL 控制 | UDP_Full |
| 无 GPS 视觉导航 | Mavlink_NoGPS |
| 大规模集群仿真 | UDP_Simple |
核心数据结构¶
完整模式 UDP_Full
编码: 4i24f7d
字段: checksum(123456789), copterID, vehicleType, reserv,
VelE[3], AngEuler[3], AngQuatern[4], MotorRPMS[8],
AccB[3], RateB[3], runnedTime, PosE[3], PosGPS[3]
简化模式 UDP_Simple
编码: 6i14f4d
字段: checkSum(1234567891), copterID, vehicleType, PosGpsInt[3],
MotorRPMS[8], VelE[3], AngEuler[3], PosE[3], runnedTime
GUI 与日常使用¶
GUI 总览¶
CopterSim GUI 界面分为三大区域:
- 模型配置区
- 仿真控制区
- 状态显示区

模型配置区(上部)¶
该区域用于配置多旋翼载具构型和动力系统参数,适合做标准多旋翼快速建模。
机架与基本参数
| 参数 | 说明 |
|---|---|
| 机架类型 | 三旋翼 / 三轴六旋翼 / 四旋翼 / 六旋翼 / 四轴八旋翼 / 八旋翼 |
| 整机质量 | 单位 kg |
| 机架轴距 | 单位 mm |
| 飞行海拔 | 单位 m |
| 输入模式 | 品牌型号 / 自定义设计 |
动力系统参数
- 电机:KV 值、空载电流 / 电压、外径、内阻、最大持续电流。
- 螺旋桨:外径、螺距、桨叶数。
- 电调:持续电流、最大电压、内阻。
- 电池:标称电压、容量、放电倍率、内阻。
品牌型号模式
在品牌型号模式下,选择品牌后会自动填充对应的组件参数;切换为自定义设计模式后,可手动输入全部参数。
模型数据库操作
| 控件 | 功能 |
|---|---|
| 机型数据库下拉框 | 从内置数据库 ModelData.db 中选择已有机型 |
| 确认模型参数 | 确认参数并启用计算 |
| 计算 | 计算悬停时间、油门百分比等飞行性能 |
| 加入模型库 | 将当前配置保存到数据库 |
| 删除当前机型 | 从数据库删除选中机型 |
仿真控制区(中部)¶
| 功能 | 说明 |
|---|---|
| 仿真模式 | 选择当前仿真模式 |
| DLL / XML 模型 | 选择外部飞行模型,选“默认”则使用内置模型 |
| 3D 场景 | 选择三维显示地图 / 场景 |
| 本机 ID | 设置当前 CopterSim 实例的飞机 ID |
| 起飞位置 | X / Y / Yaw |
| 联机 | 启用 UDP 广播,用于多机联机或远程显示 |
| UDP 端口 / 目标 IP | 自定义远程 IP 或端口 |
| GPS 坐标 | 将 X/Y 按经纬度解释(完整版+) |
| 飞控选择 | HITL 模式下选择 Pixhawk 串口 |
| 波特率 | 默认 921600(完整版+可修改) |
| 通信模式 | 选择数据通信方式 |
| 开始 / 停止 / 重新仿真 | 仿真控制按钮 |
状态显示区(底部)¶
- 左侧:日志窗口,显示运行日志、连接状态和错误信息。
- 右侧:实时状态显示,包括位置、速度、姿态和 GPS。
- 底部状态栏:
SimHz / SensorHz / PwmHz / PosHz / OffHz / OdoHz等频率监控。
模型数据库与 FlyEval¶
CopterSim 内置多旋翼组件数据库 ModelData.db,包含电机、螺旋桨、电调、电池等常用组件参数。
此外,RflySim 团队还提供在线评估工具 FlyEval:https://flyeval.com
可用于:
- 快速选型与性能评估;
- 自动计算整机模型参数;
- 导出兼容 Simulink 和 CopterSim 的配置文件。
CLI 与批量运行¶
命令行语法¶
CopterSim 支持通过命令行参数启动,基本语法为:
实际使用中通常前 11 个参数最关键,其余参数用于附加模式与扩展设置。
参数列表¶
| 参数 | 名称 | 说明 | 格式 / 取值 |
|---|---|---|---|
argv[1] |
isAutoStart |
自动启动 | 0=手动, 1=自动, >1=自动+保实时 |
argv[2] |
copterID |
无人机 ID | 数字 |
argv[3] |
uavType |
无人机类型 | 0=X 型四旋翼, 1=+ 型四旋翼 |
argv[4] |
model |
飞行模型 | 0=默认, DLL 文件名, XML 文件名 |
argv[5] |
simMode |
仿真模式 | 数字或字符串名称 |
argv[6] |
mapName |
地图名称 | 字符串或数字索引 |
argv[7] |
udp |
UDP 广播设置 | 0, 1, IP 列表, json |
argv[8] |
posX |
起始 X 坐标(m) | 单机为数字,多机为分号分隔 |
argv[9] |
posY |
起始 Y 坐标(m) | 同上 |
argv[10] |
yaw |
起始偏航角(°) | 同上 |
argv[11] |
com |
串口 | COM3, 3, COM3:115200, 0=自动 |
argv[12] |
udpMode |
通信模式 | 数字或字符串名称 |
argv[13] |
plusMode |
附加模式 | 扩展标志 |
argv[14] |
altRollPitch |
高度 / 姿态 | alt;roll;pitch |
argv[15] |
gps |
初始 GPS | isPosGps;isBatLLAOrin;lat;lon;alt |
argv[16] |
autoLog |
自动日志 | 0=禁用, 1=启用 |
常见示例¶
# PX4 硬件在环(基础)
CopterSim.exe 1 1 0 0 0 Grasslands 1
# PX4 SITL + MAVLink 通信
CopterSim.exe 1 1 0 0 2 Grasslands 1 0 0 0 1 Mavlink_Full
# 三架多机仿真
CopterSim.exe 1 3 0 0 0 Grasslands 1 0;10;20 0;10;20 0;90;180
# 完整参数示例
CopterSim.exe 1 1 0 0 1 Grasslands 1 0 0 0 COM3:115200 2 1 10;0;0 1;0;39.9;116.4;100 1
什么时候优先用 NoUI¶
推荐在以下场景使用 CopterSimNoUI.exe:
- 需要批量启动大量实例。
- 需要通过 BAT / 脚本自动调起实验。
- 不需要 GUI,只关心数据接口和运行效率。
- 单机资源有限,希望减少额外图形界面开销。
多机与联机仿真¶
位置数组格式¶
多机仿真时,argv[8] / argv[9] / argv[10] 使用分号分隔多个值,例如:
这表示三架飞机分别在不同位置、不同偏航角启动。
实例数限制¶
| 版本 | 最大同时实例数 |
|---|---|
| 免费版 | 8 |
| 完整版 / 定制版 | 无限制 |
批量启动方案¶
对于大规模多机仿真,推荐使用 CopterSimNoUI.exe 配合 BAT 脚本:
资源优化
NoUI + LowGPU 是大规模实验中最常见的组合,可显著降低 CPU 与 GPU 占用。
UDP 广播与网络通信¶
- 本地广播:
argv[7]=1,自动添加127.0.0.1。 - 指定目标 IP:
argv[7]=IP地址,多个 IP 之间用分号分隔。 - JSON 配置:
argv[7]=json,使用external\json\Config.json,仅PX4_SITL_RFLY模式支持。
适合多机的通信建议¶
| 场景 | 建议 |
|---|---|
| 少量多机联调 | GUI + UDP_Full / Mavlink_Full |
| 大量多机 | NoUI + UDP_Simple |
| 多节点网络实验 | 配置目标 IP 或 JSON 广播 |
飞行模型与配置方式¶
三种模型加载方式¶
| 方式 | 说明 |
|---|---|
| 内置默认模型 | 使用内置四旋翼动力学模型,参数由 GUI 配置 |
| DLL 自定义模型 | 加载外部 DLL / SO 模型文件 |
| XML 配置模型 | 通过 XML 定义模型物理参数 |
内置默认模型¶
适合标准多旋翼快速建模,用户只需要在 GUI 中配置机架、动力系统和环境参数即可。
DLL 自定义模型¶
DLL 模型由 Simulink 自动代码生成或 C++ 直接编写,默认存放在:
常见内置 DLL 模型如下:
| 文件名 | 用途 |
|---|---|
FixWingModel |
固定翼模型 |
CarAckerman |
阿克曼转向小车 |
CarR1Diff |
差速小车 |
CarNoCtrl |
无控小车 |
MulticopterNoCtrl |
无控多旋翼 |
MulticopterNOpx4 |
无飞控多旋翼 |
CopterSILVelCtrl |
速度控制多旋翼 SIL |
MultSILSwarm |
多机集群 SIL |
Trailer |
拖车模型 |
Exp1_MinModelTemp |
最小模型模板 |
Exp2_MaxModelTemp |
最大模型模板 |
XML 配置文件¶
XML 模型配置文件默认存放在:
主要参数组如下:
| 参数组 | 包含字段 |
|---|---|
ModelInfo |
质量、重力加速度、转动惯量、机身半径、推力系数、力矩系数、电机响应时间、空气阻力系数等 |
HoverInfo |
悬停时间、油门百分比、电机电流 / 转速 / 功率、能量效率 |
FrameInfo |
旋翼数、机臂数、构型、噪声水平 |
ClassID |
3D 模型 ClassID(-1=自动) |
模型开发与导入流程¶
开发流程概述¶
自定义模型接入 CopterSim 的常见流程为:
Simulink 建模模板¶
RflySim 提供标准 Simulink 建模模板,核心接口包括:
| 通道名称 | 方向 | 说明 |
|---|---|---|
inPWMs |
输入 | 来自自驾仪的电机控制输入 |
TerrainIn15d |
输入 | 来自 CopterSim 或三维仿真器的地形数据 |
HILSensor30d |
输出 | 反馈给自驾仪的传感器数据 |
HILGPS30d |
输出 | 反馈给自驾仪的 GNSS 定位数据 |
VehicleInfo60d |
输出 | 发送至三维仿真器的仿真状态 |
辅助扩展接口包括:
| 通道名称 | 说明 |
|---|---|
inCollision20d |
三维仿真器碰撞反馈 |
inSIL28d |
外部控制与故障触发信号 |
inCopterData |
飞控解锁状态、机型等标志位 |
outCopterData |
模型关键状态输出,可写日志 |
ExtToPX4 |
模型侧数据直接发送到自驾仪 |
ExtToUE4 |
向三维仿真器发送触发信号 |
接口一致性
开发模型时必须严格遵守接口名称和通信规则,否则 CopterSim 无法正确识别和驱动模型。
DLL 编译与导入步骤¶
- 在 Simulink 中完成模型开发并接入标准接口。
- 使用 Simulink Coder 生成 C / C++ 代码。
- 编译生成 DLL(Windows)或 SO(Linux)。
- 将生成文件放入
external\model\。 - 启动 CopterSim,在模型选择区加载对应模型。
详细操作可参考:
多旋翼免 DLL
对于标准多旋翼载具,很多情况下可以直接通过 GUI 参数配置生成模型,不必单独开发 DLL。
综合模型方案¶
除了“运动模型 + PX4 控制器”的标准模式外,RflySim 还支持综合模型方案:
- 在 Simulink 运动模型内部直接集成控制算法。
- 生成的 DLL 自身具备控制能力,不再依赖 PX4。
- 更适合大规模集群仿真和强化学习加速训练。
典型载具建模要点¶
| 载具类型 | 控制输入 | 建模要点 | 参考例程 |
|---|---|---|---|
| 多旋翼 | 4~8 路油门 | 布局、动力合成矩阵 | e2_MultiModelCtrl/Readme.pdf |
| 固定翼 | 油门 + 升降舵 + 副翼 + 方向舵 | 气动系数、协调转弯 | e3_FWingModelCtrl/Readme.pdf |
| 复合翼(VTOL) | 旋翼 + 舵面双通道 | 悬停 / 巡航模式切换 | e4_VTOLModelCtrl/Readme.pdf |
| 差速无人车 | 左右轮速 | 轮距、滑移补偿 | e6_CarR1DiffCtrl/Readme.pdf |
| 阿克曼无人车 | 油门 + 转向角 | 前轮转向几何 | e5_CarAckermanCtrl/Readme.pdf |
建模理念与运动仿真框架¶
基于模型的设计(MBD)¶
CopterSim 的设计深度贯彻了基于模型的设计(MBD)思想。MBD 的核心不是“先写代码再验证”,而是先建立模型、先做仿真、先做闭环验证,再逐步走向代码生成和硬件部署。
MBD 六阶段流程¶
| 阶段 | 内容 | CopterSim 的角色 |
|---|---|---|
| ① 建模与辨识 | 构建高精度动力学模型 | 提供模型配置与运动仿真承载 |
| ② 快速控制原型 | 搭建控制器原型 | 支撑控制器早期联调 |
| ③ 数字仿真验证 | Simulink 闭环仿真 | 可导入 DLL 模型并运行 |
| ④ 自动代码生成 | 模型 → C / C++ → DLL | 加载自动生成代码 |
| ⑤ 硬件在环仿真 | 接入真实自驾仪 | 作为串口 / 网络主节点 |
| ⑥ 系统集成测试 | 真机部署与验证 | 承接从仿真走向实机前的中间环节 |
闭环验证
CopterSim 的重要意义,不只是“能飞起来”,而是能支持从纯模型、到飞控联调、到硬件在环、再到实机迁移的连续验证链路。
统一建模框架¶
无人系统载具运动模型主要由三个子系统构成:
| 子系统 | 功能 | 关键输出 |
|---|---|---|
| 机体子系统 \(S_\text{vehi}\) | 建模位置、速度、姿态和角速度的演化 | 位姿、速度、角速度 |
| 传感器子系统 \(S_\text{sens}\) | 模拟 IMU、GPS、磁力计等传感器 | 传感器原始或带噪输出 |
| 三维环境子系统 \(S_\text{3d}\) | 提供视觉环境、地形和传感器环境 | 图像、点云、地形反馈 |
它们与控制系统 \(S_\text{ctrl}\) 一起形成完整闭环。
机体子系统¶
机体子系统主要包含四个层面:
- 机身模块:使用六自由度刚体方程描述平移与旋转运动。
- 环境模块:建模大气、重力、风场、磁场和地形。
- 执行器模块:建模电机、螺旋桨等执行机构的静态与动态响应。
- 力和力矩模块:合成重力、气动力、接触力和执行器控制力。
多旋翼动力合成
对多旋翼而言,各螺旋桨的拉力和反扭矩通过控制效率矩阵合成为总拉力和三轴力矩,矩阵由旋翼数量、分布位置和旋向共同决定。
传感器子系统¶
传感器建模通常分为三层:
- 理想数据层:从真值状态中提取理想传感器输出。
- 产品特性层:叠加噪声、漂移和校准误差。
- 接口封装层:按 MAVLink 等协议封装后发送给飞控。
在 HITL 模式下,CopterSim 通过 HIL_SENSOR 和 HIL_GPS 消息将传感器数据发送给 PX4。
性能调优与故障排查¶
常见问题与解决方案¶
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 串口连接失败 | COM 口被占用或格式错误 | 检查设备管理器,确认串口号和波特率 |
| EKF 崩溃重启 | 飞控 EKF 初始化异常 | 重新上电飞控,必要时重新插拔设备 |
| 心跳包丢失 | 飞控未正常响应 MAVLink | 检查串口、固件和连接状态 |
| 仿真频率低(<100Hz) | 系统性能不足 | 优先改用 NoUI,关闭后台负载 |
| 免费版功能受限 | 版本限制 | 切换到完整版或定制版 |
| GPS 坐标不可用 | 免费版不支持高级坐标设置 | 使用默认坐标或升级版本 |
| 飞行器抖动 | 模型参数不匹配或 PID 未调好 | 重新校准模型参数,结合 QGC 调整控制参数 |
| SITL 启动缓慢 | WSL 环境异常 | 确认 WSL 正常运行并关闭杀毒软件干扰 |
| 多机卡顿 | 渲染负载过高 | 使用 LowGPU 场景或分布式部署 |
性能优化建议¶
- 多机场景优先使用
CopterSimNoUI.exe。 - 使用
LowGPU或更轻量的场景降低渲染开销。 - 将 CopterSim 与 RflySim3D 分布到不同计算机运行。
- 集群实验优先使用
UDP_Simple降低带宽占用。 - 大规模实验时关闭自动日志,减少磁盘 IO。
高精度定时
CopterSim 会自动使用高精度定时器并抑制系统级节能限频,以尽量保证仿真频率稳定。
文件位置与相关资源¶
常用目录¶
安装目录 %PSP_PATH%\CopterSim\
模型目录 %PSP_PATH%\CopterSim\external\model\
XML配置 %PSP_PATH%\CopterSim\external\XML\
地图文件 %PSP_PATH%\CopterSim\external\map\
JSON配置 %PSP_PATH%\CopterSim\external\json\
日志文件 %PSP_PATH%\CopterSim\Log\
模型数据库 %PSP_PATH%\CopterSim\ModelData.db
相关文档建议继续阅读¶
- RflySim3D
- QGroundControl
- [RflySim安装路径]\RflySimAPIs\4.RflySimModel\1.BasicExps\e0_MinModelTemp
- [RflySim安装路径]\RflySimAPIs\5.RflySimFlyCtrl\0.ApiExps\17.OffboardCtrlsAPI
说明:本页重点重构为“先理解定位,再掌握模式与操作,最后深入模型和原理”的阅读顺序。若你的目标是实际跑实验,建议优先关注“仿真模式”“通信模式”“GUI 与 CLI”“多机与模型导入”四部分。