视觉传感器配置协议¶
RflySim 工具链通过 RflySim3D(UE 引擎)模拟独立于飞控之外的各类外部传感器。用户可以通过 Config.json 配置文件灵活定义传感器的类型、数量、安装方式和数据传输协议,满足从单目相机到激光雷达的多模态感知仿真需求。
支持的外部传感器类型¶
按输出数据格式,外部传感器分为 图像类、点云类 和 声音类 三大类别。
图像类传感器¶
| 传感器 | TypeID | 版本要求 |
|---|---|---|
| RGB 图像 | 1 | 免费版 |
| 深度图像 | 2 | 免费版 |
| 灰度图像 | 3 | 免费版 |
| 分割图像 | 4 | 完整版 |
| 测距(直线距离) | 5 | 完整版 |
| 鱼眼相机 | 8 | 完整版 |
| 吊舱相机 | 9 | 完整版 |
| 光流传感器 | 10 | 完整版 |
| 简易视觉传感器 | 30 | 完整版 |
| 红外灰度图像 | 40 | 完整版 |
| 热力彩色图像 | 41 | 完整版 |
点云类传感器¶
| 传感器 | TypeID | 版本要求 |
|---|---|---|
| 深度转点云 | 7 | 完整版 |
| 激光雷达(机械式/花式扫描) | 20~23 | 完整版 |
| 简易激光雷达传感器 | 31 | 开发中 |
激光雷达说明
激光雷达系列主要模拟 LIVOX 览沃 系列产品。
声音类传感器¶
| 传感器 | TypeID | 版本要求 |
|---|---|---|
| 测试版声音传感器 | 6 | 开发中 |
Config.json 配置协议¶
通过 Config.json 文件配置外部传感器,包括数量、种类、装配方式等。同一传感器内各参数无先后顺序区分。
基本参数¶
| 参数 | 类型 | 说明 |
|---|---|---|
| SeqID | int |
传感器在 RflySim3D 内的唯一编号。设为 0 时自动递增排序 |
| TypeID | int |
传感器类型编号,详见上方 |
| TargetCopter | int |
目标对象 ID(载具 CopterID 或传感器 SeqID,取决于 TargetMountType) |
| DataWidth | int |
数据宽度(图像像素宽度 / 激光雷达水平点数等) |
| DataHeight | int |
数据高度(图像像素高度 / 激光雷达垂直线束数等) |
| DataCheckFreq | float |
传感器数据检测频率(Hz) |
| CameraFOV | float |
视场角(单位:度),表示相机 FOV 或激光雷达水平角范围 |
| otherParams | float[16] |
预留参数,默认全 0,具体含义由传感器类型决定 |
安装位置参数¶
| 参数 | 类型 | 说明 |
|---|---|---|
| SensorPosXYZ | float[3] |
传感器位置(米),相对于载体中心的 FRD 坐标系 |
| EulerOrQuat | int |
安装角度表示方式:0 = 欧拉角,1 = 四元数 |
| SensorAngEular | float[3] |
安装姿态(欧拉角,单位:度):[roll, pitch, yaw],相对于载体 FRD 坐标系 |
| SensorAngQuat | float[4] |
安装姿态(四元数):[q0, q1, q2, q3] |
TargetMountType — 安装方式¶
| 值 | 安装方式 | 说明 |
|---|---|---|
0 |
固定在载具上(几何中心) | 相对载具几何中心安装 |
1 |
固定在载具上(底部中心) | 相对载具底部中心安装 |
2 |
固定在地面上 | 可用于模拟地面监控相机 |
3 |
地面坐标系吊舱相机 | 固定在飞机上,但相机姿态不随飞机姿态变化 |
4 |
附加到另一个传感器 | TargetCopter 此时为目标传感器的 SeqID |
注意
当 TargetMountType = 4 时,必须先定义被附加的目标传感器。
SendProtocol — 传输协议配置¶
SendProtocol 是一个 7 维数组,用于定义传感器数据的传输方式。
| 数组索引 | 说明 |
|---|---|
[0] |
传输协议标志位(详见下表) |
[1-4] |
IP 地址,默认 0(等效 127.0.0.1),自动回传到本机 |
[5] |
端口号,默认 0 时使用 9999 + SeqID 自动递增 |
[6-7] |
预留位 |
SendProtocol[0] 传输模式:
| 值 | 传输方式 | 适用传感器 | 特点 |
|---|---|---|---|
0 |
共享内存 | 全部 | 无压缩、速度快、延迟低,仅限本机 Windows |
1 |
UDP + JPEG 有损压缩 | 全部 | 支持跨电脑/跨系统/ROS |
2 |
UDP 不压缩直传 | 仅图像类 | 数据包多,跨电脑可能丢包 |
3 |
UDP + PNG 无损压缩 | 仅图像类 | 无损压缩传输 |
传输模式选择建议
- 本机 Windows 环境推荐使用 模式 0(共享内存),延迟最低
- 跨电脑/跨系统/ROS 场景推荐使用 模式 1(UDP + JPEG)
- 需要无损图像数据时使用 模式 3(UDP + PNG)
配置示例¶
{
"SeqID": 1,
"TypeID": 1,
"TargetMountType": 0,
"TargetCopter": 1,
"DataWidth": 640,
"DataHeight": 480,
"DataCheckFreq": 30,
"SendProtocol": [0, 0, 0, 0, 0, 0, 0, 0],
"CameraFOV": 90,
"SensorPosXYZ": [0.1, 0, -0.05],
"EulerOrQuat": 0,
"SensorAngEular": [0, 0, 0],
"otherParams": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
}
完整示例文件
更多配置示例请参见:[安装目录]\RflySimAPIs\8.RflySimVision\0.ApiExps\1-UsageAPI\0.ConfigJsonAPI\Config.json
注意事项¶
- SeqID 自动排序:多个传感器的 SeqID 设为
0时,系统自动递增排序 - DataCheckFreq:实际传感器数据刷新频率由 RflySim3D 帧率和
DataCheckFreq共同决定,RflySim3D 帧率必须 ≥ 所有传感器的最大检测频率 - CameraFOV:视场角与焦距呈一定数值关系,可通过 FOV 间接调整焦距
- 端口分配:每个传感器需设置不同的回传端口,避免数据冲突
其他传感器接口¶
以下接口不通过 Config.json 配置,而是直接通过 Python SDK 调用:
| 接口函数 | 功能 |
|---|---|
SetUE4RadianceValue |
设置红外灰度图/热力分割图的辐射参数 |
附录:TypeID 传感器参数速查表¶
典型配置参考值
| 传感器类型 | TypeID | 分辨率 (W×H) | 频率 | 协议 | 备注 |
|---|---|---|---|---|---|
| RGB 图像 | 1 | 640×480 | 30 Hz | 0-3 | — |
| 深度图像 | 2 | 640×480 | 30 Hz | 0-3 | otherParams 设定最小/最大距离与刻度 |
| 灰度图像 | 3 | 640×480 | 30 Hz | 0-3 | — |
| 分割图 | 4 | 640×480 | 30 Hz | 0-3 | — |
| 测距传感器 | 5 | N/A | — | 0-1 | otherParams 设定最大距离 |
| 机械式激光雷达 | 20-22 | 点数×线束 | 30 Hz | 0-1 | otherParams 设定扫描角度范围 |
| 花式激光雷达 | 20-22 | 花瓣点×花瓣数 | 可配 | 0-1 | otherParams 设定扫描距离与花瓣高度 |
| 红外灰度图像 | 40 | 640×480 | 30 Hz | 0-3 | — |
附录:传输模式架构图¶
