Python SDK 概览¶
RflySim 的 Python 控制接口统一集成在 RflySimSDK 中,位于 [安装目录]\RflySimAPIs\RflySimSDK\ 下。本 SDK 提供了完整的无人机仿真控制、视觉传感、集群协同和健康管理开发能力。
模块架构¶
graph TB
SDK["<b>RflySimSDK</b>"]
subgraph 飞行控制
ctrl["<b>ctrl</b><br>飞控通信 · 状态获取<br>坐标转换 · ROS 集成"]
end
subgraph 网络通信
comm["<b>comm</b><br>组网仿真 · 多机广播<br>Redis 中间件"]
end
subgraph 视觉传感
vision["<b>vision</b><br>图像采集 · 相机控制<br>点云显示 · ROS 发布"]
end
subgraph 引擎控制
ue["<b>ue</b><br>三维交互 · 地图服务<br>机器狗启动"]
end
subgraph 集群控制
swarm["<b>swarm</b><br>多机管理 · 分布式仿真<br>Crazyflie · ADB 调试"]
end
subgraph 健康评估
phm["<b>phm</b><br>自动测试 · 故障注入<br>数据记录 · 安全评估"]
end
SDK --> ctrl
SDK --> comm
SDK --> vision
SDK --> ue
SDK --> swarm
SDK --> phm
核心模块速查¶
ctrl — 飞行控制¶
与 PX4/APM 飞控的 MAVLink 通信核心,支持单机和多机控制。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| PX4MavCtrlV4 | PX4MavCtrler |
MAVLink 控制核心:解锁/起飞/降落/Offboard/航点 |
| PX4MavCtrlV4ROS | PX4MavCtrlerROS |
ROS 集成版 PX4 控制器 |
| DllSimCtrlAPI | DllSimModel |
CopterSim DLL 综合模型交互 |
| DllSimCtrlAPIROS | DllSimModelROS |
DLL 模型 ROS 集成 |
| api | RflyCtrl |
高层简化 API |
| ReqCopterSim | ReqCopterSim |
CopterSim 仿真初始化请求 |
| EarthModel | EarthModel |
WGS84/UTM/NED 坐标转换 |
| IpManager | IpManager |
IP 地址分配管理 |
| RflyRosStart | RflyRosStart |
ROS 环境自动启动 |
comm — 网络通信¶
集群网络通信仿真,支持 UDP 广播/单播和 Redis 消息中间件。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| NetSimAPIV4 | NetSimAPI |
自定义组网通信仿真 |
| NetUavAPI | NetUavAPI |
多机 UAV 组网通信 |
| RedisUtils | RedisUtils |
Redis 发布-订阅工具 |
vision — 视觉传感¶
视觉传感器数据采集与控制,支持 RGB 图像、深度图、点云和激光雷达。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| VisionCaptureApi | VisionCaptureApi |
图像/深度/点云数据采集 |
| CameraCtrlApi | CameraCtrlApi |
相机参数控制(分辨率/FOV/位姿) |
| ScreenCapApiV4 | ScreenCapApiV4 |
屏幕截图采集 |
| Open3DShow | Open3DShow |
Open3D 实时点云可视化 |
| RflyRosCtrlApi | RflyRosCtrlApi |
ROS 视觉数据发布与控制 |
ue — 引擎控制¶
与 RflySim3D/RflySimUE5 三维引擎的交互和控制。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| UE4CtrlAPI | UE4CtrlAPI |
引擎控制台命令、场景交互 |
| UEMapServe | UEMapServe |
地图加载与场景切换服务 |
| RobotDogStart | RobotDogStart |
机器狗仿真启动 |
swarm — 集群控制¶
大规模多机集群管理、分布式仿真和异构平台适配。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| VehicleApi | VehicleApi |
单机状态订阅与控制封装 |
| distSimCtrlAPI | DistSimCtrlAPI |
分布式仿真节点控制 |
| Crazyflie | Crazyflie |
Crazyflie 微型机适配 |
| CrazySwarm | CrazySwarm |
CrazySwarm 集群框架 |
| MavRflyShell | MavRflyShell |
MAVLink 命令行工具 |
| RflyADBLib | RflyADBLib |
ADB 远程调试库 |
| RJ45_px6x | RJ45_px6x |
网口飞控通信(Pixhawk 6x) |
phm — 健康评估¶
自动化测试、故障注入、飞行数据记录与安全评估。
| 接口文件 | 核心类 | 功能 |
|---|---|---|
| AutoMavCtrl | AutoMavCtrl |
自动化测试进程管理 |
| AutoMavDB | AutoMavDB |
测试用例数据库管理 |
| AutoMavCmd | AutoMavCmd |
标准化控制序列解析 |
| Ass | Ass |
安全性与可靠性评估 |
| DeBug | DeBug |
调试辅助工具 |
| QGCCtrlAPI | QGCCtrlAPI |
QGC 地面站控制接口 |
| AutoREG | AutoREG |
自动注册与发现 |
| AutoVisConf | AutoVisConf |
视觉配置自动化 |
| MavDataRec | MavDataRec |
MAVLink 飞行数据记录 |
快速开始¶
最小示例:单机起降¶
from RflySimSDK.ctrl.PX4MavCtrlV4 import PX4MavCtrler
import time
# 创建控制实例(连接载具 ID=1)
mav = PX4MavCtrler(ID=1)
# 发送全局启动信号
mav.sendStartMsg(copterID=-1)
mav.waitForStartMsg()
# 解锁 → 起飞 → 悬停 → 降落
mav.SendMavArm(True)
mav.SendMavTakeoff(5) # 起飞到 5m
time.sleep(10)
mav.SendMavLand()
多机集群示例¶
from RflySimSDK.ctrl.PX4MavCtrlV4 import PX4MavCtrler
# 创建 3 架无人机的控制实例
mavs = [PX4MavCtrler(ID=i+1) for i in range(3)]
# 全局启动
mavs[0].sendStartMsg(copterID=-1)
for m in mavs:
m.waitForStartMsg()
# 分别起飞
for m in mavs:
m.SendMavArm(True)
m.SendMavTakeoff(5)
视觉传感器取图¶
from RflySimSDK.vision.VisionCaptureApi import VisionCaptureApi
import cv2
# 初始化视觉采集
vis = VisionCaptureApi()
vis.jsonLoad("Config.json")
# 获取图像
img = vis.getImg(0)
cv2.imshow("Camera", img)
cv2.waitKey(0)
环境配置¶
SDK 已在 RflySim 自带的 Python 环境中预配置,可直接 import 使用。
如需在自定义 Python 环境中使用:
# 方式一:运行注册脚本
python RflySimSDK/ReLabPath.py
# 方式二:手动设置环境变量
set PYTHONPATH=%PSP_PATH%\RflySimAPIs;%PYTHONPATH%
# 方式三:pip 安装依赖
pip install pymavlink numpy opencv-python
功能特性¶
| 特性 | 说明 |
|---|---|
| 全栈控制 | 从底层 MAVLink 到高层 API 的完整飞行控制链路 |
| 多通信模式 | UDP / 串口 / Direct / Redis 四种连接方式 |
| 实时仿真 | 支持 HITL 硬件在环与 SITL 软件在环仿真 |
| 集群协同 | 支持数百架无人机的大规模集群控制 |
| 视觉感知 | RGB 图像、深度图、激光雷达点云、IMU 数据采集 |
| 故障注入 | 电机/传感器故障模拟与自动化批量测试 |
| ROS 集成 | 原生支持 ROS1/ROS2 Topic 发布与订阅 |
| 跨平台 | Windows、Linux(WSL/Docker)环境兼容 |