跳转至

Python SDK 概览

RflySim 的 Python 控制接口统一集成在 RflySimSDK 中,位于 [安装目录]\RflySimAPIs\RflySimSDK\ 下。本 SDK 提供了完整的无人机仿真控制、视觉传感、集群协同和健康管理开发能力。


模块架构

RflySimSDK 模块结构


核心模块速查

ctrl — 飞行控制

与 PX4/APM 飞控的 MAVLink 通信核心,支持单机和多机控制。

接口文件 核心类 功能
PX4MavCtrlV4 PX4MavCtrler MAVLink 控制核心:解锁/起飞/降落/Offboard/航点
PX4MavCtrlV4ROS PX4MavCtrlerROS ROS 集成版 PX4 控制器
DllSimCtrlAPI DllSimModel CopterSim DLL 综合模型交互
DllSimCtrlAPIROS DllSimModelROS DLL 模型 ROS 集成
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 实时点云可视化

ue — 引擎控制

与 RflySim3D/RflySimUE5 三维引擎的交互和控制。

接口文件 核心类 功能
UE4CtrlAPI UE4CtrlAPI 引擎控制台命令、场景交互
UEMapServe UEMapServe 地图加载与场景切换服务

swarm — 集群控制

大规模多机集群管理、分布式仿真和异构平台适配。

接口文件 核心类 功能
VehicleApi VehicleApi 单机状态订阅与控制封装
distSimCtrlAPI DistSimCtrlAPI 分布式仿真节点控制
MavRflyShell MavRflyShell MAVLink 命令行工具
RflyADBLib RflyADBLib ADB 远程调试库
RJ45_px6x RJ45_px6x 网口飞控通信(Pixhawk 6x)

phm — 健康评估

自动化测试、故障注入、飞行数据记录与安全评估。

接口文件 核心类 功能
AutoMavCtrl AutoMavCtrl 自动化测试进程管理
AutoMavDB AutoMavDB 测试用例数据库管理
AutoMavCmd AutoMavCmd 标准化控制序列解析
Ass Ass 安全性与可靠性评估
QGCCtrlAPI QGCCtrlAPI QGC 地面站控制接口
AutoataRec 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)环境兼容