graph TB
subgraph RflySimSDK
phm["phm/"]
AutoMAVDB["AutoMAVDB/"]
AutoMAVCmd["AutoMAVCmd/"]
AutoMAVCtrl["AutoMAVCtrl/"]
PX4MavCtrlV4["PX4MavCtrlV4/"]
CameraCtrlApi["CameraCtrlApi/"]
VisionCaptureApi["VisionCaptureApi/"]
end
subgraph src
autotest["autotest/"]
openSHA["openSHA/"]
end
subgraph src/model
subgraph Quadrotor
Q_TC["TestCase_1 … TestCase_n/"]
end
subgraph Fixedwing
F_TC["TestCase_1 … TestCase_n/"]
end
end
subgraph data
subgraph SITL
subgraph single
SITL_sI["sInstance/"]
SITL_mI["mInstance/"]
end
subgraph multi
SITL_sI2["sInstance/"]
SITL_mI2["mInstance/"]
end
end
subgraph HITL
subgraph single
HITL_sI["sInstance/"]
HITL_mI["mInstance/"]
end
subgraph multi
HITL_sI2["sInstance/"]
HITL_mI2["mInstance/"]
end
end
end
case["case/"]
tools["tools/"]
docs["docs/"]
RflySimSDK --> phm
RflySimSDK --> AutoMAVDB
RflySimSDK --> AutoMAVCmd
RflySimSDK --> AutoMAVCtrl
RflySimSDK --> PX4MavCtrlV4
RflySimSDK --> CameraCtrlApi
RflySimSDK --> VisionCaptureApi
src --> autotest
src --> openSHA
src --> src/model
src/model --> Quadrotor
src/model --> Fixedwing
data --> SITL
data --> HITL
data --> data
data --> SITL
data --> HITL
root["根目录"]
root --> RflySimSDK
root --> src
root --> src/model
root --> data
root --> case
root --> tools
root --> docs
| 文件路径 | 主要内容组件 | 功能说明 |
| RflySimSDK | AutoMAVDB | 测试用例库与数据管理库,支持数据库/文件的自动操作 |
| AutoMAVCmd | 测试序列解析,将高层测试序列映射为控制指令(如 MAVLink)驱动无人载具 |
| AutoMAVCtrl | 无人载具进程管理,含测试环境配置、任务调度、载具参数等 |
| PX4MavCtrlV4 | 通信管理模块,封装用户指令为 MAVLink 消息,实现通信初始化与联动控制 |
| CameraCtrlApi / VisionCaptureApi | 视觉控制与采集模块,配置视觉参数、捕捉图像帧等操作 |
| src/autotest/ | AutoTest | 自动化测试主入口,配置并一键运行载具测试任务 |
| src/openSHA/ | ProfitsSA/Ass | 健康与安全评估算法库(示例:率模可靠性),支持自定义评估模型在线验证 |
| src/model/Quadrotor/ | db.json, ModelHITL, ModelSITL | 四旋翼模型配置与测试用例绑定,支持 HITL 与 SITL 仿真 |
| src/model/Fixedwing/ | 同上结构 | 固定翼机型模型配置,支持同样的多模式测试 |
| data/SITL/ 与 data/HITL/ | single/sInstance, multi/mInstance等 | 自动收集 SITL/HITL 仿真数据,支持单/多机型、单/多实例四种结构 |
| case/ | 数据库文件(如 case.db) | 储存无人机测试用例数据库,亦可通过 tools 文件夹工具可视化编辑 |
| tools/ | Navicat for SQLite 等 | 可视化数据库配置工具,简化测试用例管理 |
| docs/ | Readme, Platform handbook 等 | 平台说明文档,介绍使用方法、原理结构、模块接口等 |
二、标准化控制序列与测试用例配置说明
为了实现高效、批量化的无人系统自动测试,RflySim 自动化测试平台基于**控制指令序列标准化协议**,采用结构清晰的数字字符串方式表达控制逻辑,并通过 JSON 配置文件 db.json 进行集中管理与解析。
控制序列协议结构
每一条控制指令以逗号分隔、以分号结尾,表示一个标准化动作;其结构如下:
| 字段序列 | 说明 |
| X(第一位) | 操控类别(时间/控制) |
| Y(第二位) | 类内功能编号 |
| 后续参数 | 函数的输入参数,按顺序排列 |
控制类别与功能号说明
| 操控类别 | 功能编号 | 功能说明 | 示例 |
| 1 时间类 | 1 | 等待时间:Wait(times) | 1,1,5 → 等待5s |
| 2 | 等待复位:WaitReset(pos) | 1,2,0 |
| 2 控制类 | 1 | 解锁:Arm() | 2,1 |
| 2 | 上锁:Disarm() | 2,2 |
| 3 | 位置控制:FlyPos(x,y,z) | 2,3,0,0,-20 |
| 4 | 速度控制:FlyVel(vx,vy,vz) | 2,4,1,0,0 |
| 5 | 降落:Land() | 2,5 |
| 6 | 故障注入:FaultInject(params) | 2,6,ID,... |
示例解析
控制序列如下所示:
2,1;1,1,5;2,3,0,0,-20;1,1,15;2,6,123450,123450,0.6,0.8,1,1;1,1,10
解析如下:
| 步骤 | 指令 | 含义描述 |
| ① | 2,1 | 解锁(Arm) |
| ② | 1,1,5 | 等待 5 秒 |
| ③ | 2,3,0,0,-20 | 飞至位置 [0,0,-20] |
| ④ | 1,1,15 | 等待 15 秒 |
| ⑤ | 2,6,123450,123450,0.6,0.8,1,1 | 故障注入(这里是电机故障,附带多个参数,**1个故障ID(123450)只能对应2个故障参数,这里有4个参数,所以写了2次故障ID,详见故障注入协议**) |
| ⑥ | 1,1,10 | 等待 10 秒 |
测试用例 JSON 配置文件结构
{
"FAULT_CASE": [
{
"CaseID": 1,
"Subsystem": "Power",
"Component": "Motor",
"FaultID": "123450",
"FaultType": "Motor Fault",
"FaultMode": "Decreased efficiency of motor execution",
"FaultParams": "0",
"ControlSequence": "2,1;1,1,5;2,3,0,0,-15;1,1,10;2,6,123450,123450,1,1,1,1;1,1,10",
"TestStatus": "Finished"
},
...
],
"TEST_CASE": "1,2",
"VISION": "off"
}
各字段含义说明
【1】FAULT_CASE:核心测试用例配置项,含以下字段:
| 字段 | 含义 |
| CaseID | 测试用例唯一编号(主键) |
| Subsystem | 故障所属子系统(如 Power, Sensor) |
| Component | 故障部件(如 Motor, Magnetometer) |
| FaultID | 故障编号 |
| FaultType | 故障类型说明 |
| FaultMode | 故障模式描述 |
| FaultParams | 故障注入参数 |
| ControlSequence | 控制流程字符串(按上述协议格式) |
| TestStatus | 当前测试状态(例:Finished) |
【2】TEST_CASE:用于自动测试执行顺序管理
- **单机模式**: 格式为 "1,2"(用英文逗号分隔)表示依次执行第1、2号用例
- **多机模式**: 格式为 "1,2;1,3",表示
- 第一轮:第1架飞机执行用例1、第2架执行用例2
- 第二轮:第1架执行用例1、第2架执行用例3
- 用英文分号分隔不同轮次,逗号区分各载具
【3】VISION:视觉模块开关(用于图像采集接口)
- "on":开启摄像头图像发布
- "off":关闭视觉采集功能