跳转至

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)环境兼容