RflySim3D 与 RflySimUE5¶
RflySim3D 和 RflySimUE5 是 RflySim 工具链中的三维显示与传感器仿真引擎。它们的核心价值不在于解算飞行器动力学,而在于承载场景、渲染载具、生成视觉与点云等感知数据,并把仿真从“飞控闭环”扩展到“感知-决策-控制”闭环。
软件定位¶
在 RflySim 工具链里,这两个软件承担的是“三维世界”和“感知世界”的角色:
CopterSim负责动力学、飞控接口和运动状态解算RflySim3D / RflySimUE5负责三维场景显示、载具模型呈现、碰撞和多模态传感器数据生成QGroundControl负责地面站监控、任务规划和参数配置- VisCreate 负责视觉传感器方案配置,并生成
Config.json Python / ROS / Simulink负责外部控制、感知算法和系统集成DistSim负责多机节点发现与分布式部署
因此,理解这两个引擎时,最重要的一点是:
角色边界
RflySim3D / RflySimUE5 不是运动仿真器,而是与 CopterSim 协同工作的三维引擎和感知数据源。
在工具链中的角色¶
典型链路如下:
SimCreate / BAT
-> 启动 CopterSim / PX4 / QGC / RflySim3D
-> CopterSim 解算载具状态
-> RflySim3D 接收位姿并渲染场景
-> RflySim3D 根据 Config.json 激活虚拟传感器
-> VisionCaptureApi / ROS / 外部程序获取图像、深度、点云
-> 上层算法输出控制指令
-> CopterSim / PX4 执行控制
如果只做姿态、位置、航点等飞控验证,RflySim3D 的主要作用是可视化显示。
如果做视觉闭环、SLAM、目标识别、避障、强化学习等任务,RflySim3D 就变成了整套系统里的核心感知环境。
典型使用路径¶
1. 基础显示链路¶
这是最常见的入门用法:
- 启动
CopterSim - 启动
RflySim3D或RflySimUE5 - 引擎接收载具位姿并实时显示
- 用户通过键盘、鼠标或控制台切换视角和场景
2. 视觉传感器链路¶
这是和 VisCreate 配套的常见用法:
- 在 VisCreate 中配置传感器方案
- 生成
Config.json - 启动
RflySim3D - Python 通过
VisionCaptureApi或 ROS 接收图像、深度、点云 - 上层算法完成感知与控制闭环
3. 多机与分布式链路¶
当载具数量较多,或者单机算力无法同时承担动力学、渲染和感知算法时:
- 多个
CopterSim实例分布在不同主机 - 一个或多个
RflySim3D负责统一渲染 DistSim负责节点管理与脚本分发- 上层控制程序通过 UDP / MAVLink / ROS 同时与多机交互
版本体系与选型¶
UE4 与 UE5 的区别¶
| 维度 | RflySim3D | RflySimUE5 |
|---|---|---|
| 引擎基础 | UE4.27 | UE5.2 |
| 当前定位 | 工具链主力版本 | 高保真扩展版本 |
| 运行门槛 | 较低 | 较高 |
| 视觉效果 | 稳定、成熟 | 更强的光照与大场景能力 |
| 点云处理 | 传统方案 | 支持更强的 GPU 加速 |
| 适用场景 | 常规飞控、视觉、教学、批量仿真 | 高保真视觉、像素流、复杂场景 |
选择建议¶
- 如果重点是稳定、兼容性和常规实验,优先使用
RflySim3D - 如果重点是高保真视觉、超大场景和更强渲染能力,可使用
RflySimUE5 - 如果是多机批量实验,优先考虑整体链路负载,而不是单纯追求画面效果
授权差异¶
不同授权版本会影响传感器数量、局域网接收、Cesium、Redis 等能力。实际项目里,RflySim3D 的版本差异往往直接影响“能不能做多机视觉闭环”和“能不能做跨机分布式显示”。
启动与基础配置¶
安装位置¶
| 软件 | 默认位置 |
|---|---|
RflySim3D |
%PSP_PATH%\\RflySim3D |
RflySimUE5 |
%PSP_PATH%\\RflySimUE5 |
关键配置文件¶
| 文件 | 作用 |
|---|---|
RflySim3D.txt |
启动时自动执行的控制台命令 |
LowGPU.txt |
低性能模式配置 |
RedisConfig.ini |
定制版 Redis 通信配置 |
Config.json |
视觉传感器方案配置 |
常见启动方式¶
- 直接运行可执行文件
- 通过 BAT 启动整套仿真
- 由
SimCreate自动编排启动 - 在多机环境中由
DistSim远程分发脚本启动
常见启动参数思路¶
RflySim3D.txt 更适合放“地图切换、分辨率、帧率”这类全局配置,LowGPU.txt 更适合放“减负载、降画质”的配置。大规模多机仿真时,应优先从分辨率、阴影、植被和后处理下手做性能削减。
常用交互方式¶
RflySim3D 的交互主要有四种:
1. 键盘与鼠标¶
常用功能包括:
- 视角切换
- 载具切换
- 飞机编号显示
- 轨迹显示
- 碰撞检测开关
- 小地图与传感器范围显示
2. 控制台命令¶
通过反引号打开控制台后,可完成:
- 地图切换
- 相机位姿与视场角调整
- 模型切换与缩放
- 消息标签显示
- 地形扫描
- 分割值设置
3. 启动脚本¶
将命令预先写入 RflySim3D.txt,适合固定实验流程、课程演示和批量复现实验。
4. 外部程序接口¶
上层程序可通过 UDP、Python UE4CtrlAPI 或 Simulink 接口向引擎下发命令,完成自动化控制、场景批处理和在线交互。
传感器与视觉链路¶
这是 RflySim3D 最关键的部分之一。
它能提供什么¶
RflySim3D 不只负责“看起来像真的”,更重要的是生成可被算法直接消费的感知数据,例如:
- RGB 图像
- 深度图
- 灰度图
- 分割图
- 红外图像
- LiDAR 点云
- 简易检测类传感器结果
它在链路中的意义¶
在视觉算法实验里,RflySim3D 的角色相当于“虚拟摄像头”和“虚拟雷达”所在的平台。算法不是直接对着三维界面工作,而是通过 Config.json + VisionCaptureApi 去拿传感器数据。
传感器配置的三个关键点¶
TypeID决定传感器类型,例如 RGB、深度、LiDAR、吊舱、红外等。TargetMountType决定传感器是跟着载具走、固定在世界坐标系,还是依附于其他传感器。SendProtocol决定数据如何输出,例如共享内存、UDP 原始数据或视频流。
使用建议¶
- 本机算法开发优先选共享内存,延迟更低
- 跨机部署或分布式链路再考虑 UDP
- 多传感器方案优先在 VisCreate 中做可视化配置,再导出到运行环境
场景、地图与模型¶
场景与地图¶
RflySim3D 既支持通用教学和测试场景,也支持更复杂的 GIS 和城市建模场景。对 RflySim 来说,场景的意义不只是“换个背景”,而是直接决定:
- 感知算法看到什么
- 地形扫描和地图查询结果如何
- 避障与路径规划是否具有代表性
Cesium 与离线地图¶
对于大范围或真实地理区域验证,可以使用 Cesium 相关链路。若在线地图受限,也可以转向离线 3D Tiles 方案。这个能力对“航测、巡检、低空物流、复杂城市场景验证”很重要。
三维模型¶
载具模型和场景模型通常通过以下方式进入引擎:
- 使用内置资源和 Starter Content
- 导入外部模型
- 通过 XML 定义载具机体、执行器和机载相机
- 通过蓝图构建更复杂的动态载具和特效
理解 XML 的意义¶
对 RflySim 来说,XML 不只是一个模型描述文件,它还是“飞控输出”和“三维表现”之间的桥。CopterSim 发出的 vehicleType 需要映射到具体的 3D 模型、执行器和机载相机配置,这一步就是通过 XML 完成的。
多机与高级功能¶
多机显示¶
RflySim3D 支持在一个场景中显示多架载具,既可以用于编队飞行观察,也可以作为分布式渲染节点的统一显示端。对大规模仿真来说,它的价值在于“统一视图”和“统一感知环境”。
碰撞与回放¶
高级实验里常用的能力包括:
- 碰撞检测
- 飞行轨迹记录与回放
- 标签和消息显示
- 地形扫描
- 多机依附关系
这些功能对于故障复现、集群观察和课程演示都很重要。
UE5 增强能力¶
RflySimUE5 进一步强化了:
- 大场景与高保真渲染
- 点云 GPU 处理
- 像素流推送
- 更强的视觉展示和远程浏览能力
但在批量仿真和教学环境中,也要同步考虑其 GPU 成本。
使用建议与常见问题¶
推荐的阅读顺序¶
- 先理解它在工具链中的角色
- 再掌握基本显示、视角切换和命令控制
- 再进入传感器配置和
VisionCaptureApi - 最后再看 GIS、Cesium、蓝图和多机高级功能
常见问题¶
| 问题 | 更可能的原因 | 处理思路 |
|---|---|---|
| 看不到飞机 | CopterSim 没有正常发数 |
先检查动力学端是否运行正常 |
| 有显示但没传感器数据 | Config.json 配置错误 |
先在 VisCreate 中重新生成方案 |
| 多机显示不完整 | 载具 ID、广播或网络链路问题 | 先用单机跑通,再扩展到局域网 |
| 帧率很低 | GPU 压力过大 | 降分辨率、关后处理、减传感器数量 |
| 画面正常但算法拿不到图像 | 数据通道不匹配 | 核对共享内存 / UDP 配置与接收端实现 |
相关例程¶
软件入口与基础使用¶
- 软件说明总入口:[RflySim安装路径]\RflySimAPIs\2.RflySimUsage\0.ApiExps\e1_RflySimSoftwareReadme\RflySim3D
- UE5 版软件说明:[RflySim安装路径]\RflySimAPIs\2.RflySimUsage\0.ApiExps\e1_RflySimSoftwareReadme\RflySimUE5
- 快捷键与基础操作:[RflySim安装路径]\RflySimAPIs\2.RflySimUsage\1.BasicExps\e3_RflySim3D-Shortcut-Instruct
控制台、接口与联动控制¶
- 键盘接口:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e1_KeyboardAPI
- 命令接口:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e2_CommandAPI
- 三维控制接口:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e6_RflySim3DCtrlAPI
场景、模型与 GIS¶
- 场景与地图控制:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e5_UEMapCtrl
- GIS 与地图应用:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e7_RflySim3DGIS
- 离线 Cesium 场景:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\3.CustExps\e3_CusGIS\e5_CesiumOffline
- 自定义场景构建:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\0.ApiExps\e10_BuildCusScene
- 蓝图模型开发:[RflySim安装路径]\RflySimAPIs\3.RflySim3DUE\2.AdvExps\e2_BlueprintModel