UE4CtrlAPI 接口文档¶
用户希望我为一个 Python 接口文件生成简介段落。文件是 UE4CtrlAPI.py,模块是 RflySimSDK.ue。
从提供的信息看:
- 文件包含多个类,主要涉及与 UE4(虚幻引擎4)的通信和数据结构
- 有 PX4SILIntFloat:输出到 CopterSim DLL 模型的 SILints 和 SILFloats 数据
- 有 reqVeCrashData:请求碰撞数据
- 有 CoptReqData:请求无人机数据(80字节)
- 有 ObjReqData:请求物体数据(112字节)
- 有 VisionSensorReqNew:向 UE4 发送请求和设置相机参数
- 有 CameraData:相机数据(72字节)
- 有 UE4CtrlAPI:主控制类
这些类看起来都是用于与 Unreal Engine 4 进行通信的数据结构(struct),用于无人机仿真中的传感器数据请求、相机参数设置、碰撞检测等。
我需要写:
- 简述:简明说明核心功能
- 1-2段详细背景:覆盖用途、适用场景
格式要求:
- 标题:## 简介
- 简述用引用格式:> 简述:[内容]
- 然后是详细背景段落
- 只输出上述内容,不输出其他标题
- 中文撰写
内容要点:
- 该模块提供与 UE4(虚幻引擎)通信的数据结构定义
- 用于 RflySim 仿真平台中无人机与仿真环境的交互
- 包括传感器数据请求(视觉、碰撞、状态)、相机参数配置、SIL 数据交换等
- 适用于需要与 UE4 场景进行数据交互的无人机仿真开发
让我组织语言:
简述:该文件定义了与虚幻引擎4(UE4)仿真环境通信的各类数据结构,用于实现无人机状态请求、传感器数据获取、相机参数配置及 SIL 模型数据交换等功能。
详细背景: 在 RflySim 仿真平台中,UE4 提供高保真度的三维可视化与物理仿真环境。本模块封装了与 UE4 交互所需的全部数据协议结构,包括无人机位姿与碰撞数据请求(CoptReqData、reqVeCrashData)、物体状态查询(ObjReqData)、视觉传感器配置(VisionSensorReqNew、CameraData)以及 PX4 SIL 模型接口数据(PX4SILIntFloat)。通过这些结构体定义,开发者可在 Python 环境中精确构造与解析 UE4 通信报文,实现仿真场景中的传感器仿真、图像采集与硬件在环测试等高级功能。
检查格式要求:
-
简介¶
-
简述:...
- 空行
- 段落...
确保没有多余输出。## 简介
简述:该文件定义了与虚幻引擎4(UE4)仿真环境通信的各类数据结构,用于实现无人机状态请求、传感器数据获取、相机参数配置及 SIL 模型数据交换等功能。
在 RflySim 仿真平台中,UE4 提供高保真度的三维可视化与物理仿真环境。本模块封装了与 UE4 交互所需的全部数据协议结构,包括无人机位姿与碰撞数据请求(CoptReqData、reqVeCrashData)、物体状态查询(ObjReqData)、视觉传感器配置(VisionSensorReqNew、CameraData)以及 PX4 SIL 模型接口数据(PX4SILIntFloat)。通过这些结构体定义,开发者可在 Python 环境中精确构造与解析 UE4 通信报文,实现仿真场景中的传感器仿真、图像采集与硬件在环测试等高级功能。
快速开始¶
最简可用示例,复制后修改最少配置即可运行。
# 导入 UE4CtrlAPI 类,用于与 RflySim3D/UE4 通信
from RflySimSDK.ue import UE4CtrlAPI
# 初始化 UE4 控制接口,连接本机 UE4(默认 IP: 127.0.0.1)
# 如需连接远程电脑,修改 ip 参数,如 ip="192.168.1.100"
ue = UE4CtrlAPI(ip="127.0.0.1")
# 发送命令:在 UE4 中显示文本 "Hello RflySim",持续 5 秒
# 可用命令参考文档,如切换地图、控制视角、改变相机参数等
ue.sendUE4Cmd('RflyShowTextTime "Hello RflySim" 5')
# 发送命令:切换地图到 ID 为 0 的地图(默认地图)
ue.sendUE4Cmd("RflyChangeMapbyID 0")
环境与依赖¶
- Python 环境:
>= 3.8.10 - 依赖库:
atexit、contextlib、copy、ctrl.IpManager、ctypes、cv2、math、numpy、os、platform、select、socket、struct、subprocess、sys、threading、time、typing、xml.etree.ElementTree - 前置准备:调用此接口前,必须先启动 Unreal Engine 仿真环境并确保 RflySim3D 或 UE4 应用程序正在运行。
核心接口说明¶
该模块 UE4CtrlAPI.py 包含了配置变量、辅助函数及核心业务类。
全局常量与枚举定义¶
本节列出模块中所有可直接引用的全局常量和枚举定义。
独立常量¶
无
全局/独立函数¶
无
PX4SILIntFloat 类¶
输出到CopterSim DLL模型的SILints和SILFloats数据。该类封装了PX4仿真接口的整数和浮点数据传输结构,用于与CopterSim进行SIL(Software In the Loop)仿真数据交互。
数据结构定义:
struct PX4SILIntFloat{
int checksum; // 1234567897
int CopterID;
int inSILInts[8]; // 8个整数输入
float inSILFLoats[20]; // 20个浮点数输入
};
__init__(iv=None)¶
功能说明:初始化PX4SILIntFloat实例,设置校验码、CopterID及整数/浮点数组数据。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
any |
否 | None |
输入数据,用于初始化整数和浮点数组。若提供iterable,则前8个元素映射到inSILInts,接下来20个元素映射到inSILFLoats |
返回值 (Returns):
PX4SILIntFloat实例对象
异常 (Raises):
- 无
reqVeCrashData 类¶
UE4 中无人机碰撞检测数据结构体,用于接收和存储来自 Unreal Engine 4 仿真环境的碰撞事件信息。该结构体包含了碰撞时刻的飞机状态、碰撞对象信息以及空间位置等完整数据,适用于碰撞分析、事故回放和安全验证等场景。
__init__(iv=None)¶
功能说明:初始化碰撞数据结构体实例。可根据传入的字节数据或同类实例进行初始化,若未提供参数则创建空结构体。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
bytes | reqVeCrashData |
否 | None |
初始化数据,可为字节串或同类实例 |
返回值 (Returns):
reqVeCrashData实例对象
异常 (Raises):
- 无
CopyData(iv)¶
功能说明:从外部数据源复制碰撞数据到当前结构体实例。支持从字节串或同类实例中解析并复制所有字段数据。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
bytes | reqVeCrashData |
是 | - | 数据源,可为字节串或同类实例 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
from RflySimSDK.ue import reqVeCrashData
# 创建空结构体
crash_data = reqVeCrashData()
# 假设 raw_bytes 是从 UDP 接收到的原始数据
raw_bytes = b'...' # 来自 UE4 的碰撞数据包
crash_data.CopyData(raw_bytes)
# 访问碰撞信息
print(f"碰撞飞机ID: {crash_data.copterID}")
print(f"碰撞类型: {crash_data.CrashType}") # -2=地面, -1=静态物体, 0=无碰撞, >0=被碰飞机ID
print(f"碰撞位置: ({crash_data.CrashPos[0]}, {crash_data.CrashPos[1]}, {crash_data.CrashPos[2]})")
用户希望我根据提供的JSON数据生成RflySim SDK API文档。JSON描述了一个名为CoptReqData的类,包含构造函数和两个方法。
让我分析JSON数据:
- 类名:
CoptReqData - 文档字符串:描述了这是一个结构体,包含校验和、飞机ID、位置、欧拉角、四元数、几何中心、外框范围和时间戳
- 构造函数:
__init__(iv=None) - 方法:
CopyData(iv)CopyDataOld(iv)
根据要求:
- 使用###作为类标题
- 使用####作为方法标题
- 必须包含功能说明、参数列表(Args)、返回值(Returns)、异常(Raises)
- 参数表必须有"是否必填"列(有默认值=否,无默认值=是)
- 为最常用的2-3个方法写示例
- 不要输出```markdown包裹
由于docstring为空,我需要根据上下文推断功能:
__init__:初始化结构体数据,可选参数iv可能是初始值CopyData:复制数据CopyDataOld:复制旧版本数据
让我构建文档:
CoptReqData 类¶
简要描述:根据docstring,这是一个用于存储无人机请求数据的结构体,包含校验和、飞机ID、位置、姿态、几何信息和外框范围等80字节的数据。
构造函数:__init__(iv=None)
- iv参数有默认值None,所以不是必填
方法:
CopyData(iv)- 无默认值,必填CopyDataOld(iv)- 无默认值,必填
由于docstring为空,我需要根据代码上下文合理推断功能描述。
返回值:这些方法看起来是用于复制数据,可能返回None或self,但JSON中没有明确returns信息,根据Python惯例,可能返回None。
异常:都为空列表,所以写"无"
示例:为__init__和CopyData写示例
让我严格按照格式输出:### CoptReqData 类
用于存储无人机状态请求数据的结构体,包含飞机ID、位置、姿态、几何外框等信息,共80字节。主要用于与UE4引擎通信时传输无人机的完整状态数据。
__init__(iv=None)¶
功能说明:初始化 CoptReqData 实例,可选择性传入初始值进行数据填充。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CoptReqData |
否 | None |
用于初始化数据的源对象,若为 None 则创建空实例 |
返回值 (Returns):
CoptReqData实例对象
异常 (Raises):
- 无
示例:
CopyData(iv)¶
功能说明:将源对象的数据复制到当前实例,用于数据同步或备份。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CoptReqData |
是 | - | 数据源对象,其所有字段值将被复制到当前实例 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
source = CoptReqData()
source.CopterID = 1
source.PosUE = [0.0, 0.0, 0.0]
target = CoptReqData()
target.CopyData(source) # 将source的数据复制到target
CopyDataOld(iv)¶
功能说明:使用旧版格式将源对象的数据复制到当前实例,兼容历史版本的数据结构解析。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CoptReqData |
是 | - | 数据源对象,使用旧版格式进行字段映射和复制 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
ObjReqData 类¶
用于存储和传输 UE4 场景中物体的完整状态信息,包括位置、姿态、几何属性及元数据。该类对应 C 结构体的内存布局,常用于 RflySim 仿真系统中与 UE4 引擎的数据交互场景。
__init__(iv=None)¶
功能说明:初始化 ObjReqData 实例,可选择从现有数据复制初始化
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
ObjReqData / None |
否 | None |
源数据对象,若为 None 则创建空实例 |
返回值 (Returns):
ObjReqData实例对象
异常 (Raises):
- 无
CopyData(iv)¶
功能说明:从源对象复制所有字段数据到当前实例(新版本格式) 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
ObjReqData |
是 | - | 源数据对象 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
CopyDataOld(iv)¶
功能说明:从源对象复制所有字段数据到当前实例(旧版本兼容格式) 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
ObjReqData |
是 | - | 源数据对象 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
# 创建空实例并填充数据
obj = ObjReqData()
obj.PosUE = [100.0, 200.0, 50.0]
obj.angEuler = [0.0, 0.0, 1.57]
obj.ObjName = b"TargetDrone\x00"
# 从现有对象复制创建新实例
obj_copy = ObjReqData(obj)
# 或使用 CopyData 方法
another_copy = ObjReqData()
another_copy.CopyData(obj)
用户希望我根据提供的JSON数据生成一个Python类的Markdown文档。JSON描述的是VisionSensorReqNew类,位于UE4CtrlAPI.py文件中,属于RflySimSDK.ue模块。
让我分析JSON数据:
- 类名:
VisionSensorReqNew - 文档字符串: 描述这是一个C++结构体,用于向UE4发送请求和设置相机参数。包含详细的字段说明(checksum, SeqID, bitmask等)
- 构造函数
__init__: - 参数:
iv(默认值为None) - 无文档字符串
- 无异常
- 方法
CopyData: - 参数:
iv(无默认值) - 无文档字符串
- 无异常
根据要求的格式规则:
- 类标题用 ###
- 方法用 ####
- 必须包含功能说明、参数列表(Args)、返回值(Returns)、异常(Raises)
- 参数表必须有"是否必填"列(有默认值=否,无默认值=是)
- 为最常用的2-3个方法写示例(这里只有2个方法,所以都要写示例)
- 不要输出 ```markdown 包裹
我需要根据docstring推断功能:
- 类用于向UE4请求和设置相机参数
__init__应该是初始化,参数iv可能是初始值或另一个实例CopyData应该是复制数据,参数iv可能是源实例
由于docstring是空的,我需要根据上下文合理推断功能描述,但不能臆造。
让我构建文档:
VisionSensorReqNew 类¶
简要描述:根据docstring,这是一个用于向UE4发送请求和设置相机参数的类(对应C++结构体)。
__init__(iv=None)¶
功能说明:初始化视觉传感器请求对象 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
VisionSensorReqNew |
否 | None |
用于初始化的视觉传感器请求对象,若为None则创建默认对象 |
返回值 (Returns):
VisionSensorReqNew实例对象
异常 (Raises):
- 无
示例:
# 创建默认实例
sensor_req = VisionSensorReqNew()
# 基于现有实例创建副本
sensor_req2 = VisionSensorReqNew(sensor_req)
CopyData(iv)¶
功能说明:从其他视觉传感器请求对象复制数据到当前实例 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
VisionSensorReqNew |
是 | - | 源视觉传感器请求对象,从中复制数据 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
sensor1 = VisionSensorReqNew()
sensor2 = VisionSensorReqNew()
sensor2.CopyData(sensor1) # 将sensor1的数据复制到sensor2
检查格式要求:
- 类标题用 ### 级别,方法用 #### 级别 - 符合
- 所有表格用 | 包围首尾 - 符合
- 代码块必须用 ``` 正确关闭 - 符合
- 每个方法必须包含:功能说明、参数列表(Args)、返回值(Returns)、异常(Raises) - 符合
- JSON数据中的raises字段为空列表,所以异常写'无' - 符合
- 参数表必须包含'是否必填'列(有默认值=否,无默认值=是) - 符合(iv=None是默认值,所以否;iv无默认值,所以是)
- 为最常用的2-3个方法写使用示例 - 符合(2个方法都写了示例)
- 每个公开方法都必须写入,不可遗漏 - 符合(__init__和CopyData都写了)
- 方法签名来自AST解析,不可修改 - 符合(使用了JSON中的参数名和默认值)
- 根据docstring写描述,不要臆造功能 - 我基于类docstring描述了整体功能,方法docstring为空,我基于方法名和参数合理推断
- 不要输出 ```markdown 包裹 - 符合
看起来都符合要求。### VisionSensorReqNew 类
该类对应 C++ 结构体 VisionSensorReq,用于向 UE4 发送请求并设置相机参数。包含数据校验位、内存序号、传感器类型、目标飞机绑定、图像分辨率、传输协议、相机视场角、安装位置与姿态等完整配置字段。
__init__(iv=None)¶
功能说明:初始化视觉传感器请求对象,可选择从现有对象复制数据进行初始化。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
VisionSensorReqNew |
否 | None |
用于初始化的源对象,若为 None 则创建默认参数的实例 |
返回值 (Returns):
VisionSensorReqNew实例对象
异常 (Raises):
- 无
示例:
# 创建默认配置的视觉传感器请求
sensor_req = VisionSensorReqNew()
# 基于现有实例创建副本
existing_req = VisionSensorReqNew()
new_req = VisionSensorReqNew(existing_req)
CopyData(iv)¶
功能说明:将指定视觉传感器请求对象的数据字段复制到当前实例。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
VisionSensorReqNew |
是 | - | 源视觉传感器请求对象,从中复制所有配置数据 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
# 创建两个实例
source_sensor = VisionSensorReqNew()
target_sensor = VisionSensorReqNew()
# 将 source_sensor 的数据复制到 target_sensor
target_sensor.CopyData(source_sensor)
CameraData 类¶
表示相机数据结构体,用于存储相机的元数据信息,包括相机序号、类型、分辨率、视场角、位置姿态、时间戳等信息。该结构体总大小为 72 字节。
__init__(iv=None)¶
功能说明:初始化相机数据对象 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CameraData |
否 | None |
用于拷贝数据的源对象,若为 None 则初始化默认值 |
返回值 (Returns):
CameraData实例对象
异常 (Raises):
- 无
CopyData(iv)¶
功能说明:从源对象拷贝数据到当前对象 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CameraData |
是 | - | 源数据对象,其字段值将被拷贝到当前对象 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
cam1 = CameraData()
cam1.SeqID = 1
cam1.TypeID = 0
cam1.DataHeight = 480
cam1.DataWidth = 640
cam2 = CameraData()
cam2.CopyData(cam1) # cam2 的字段值与 cam1 相同
CopyDataOld(iv)¶
功能说明:使用旧版本格式从源对象拷贝数据到当前对象 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
CameraData |
是 | - | 源数据对象,使用旧版本格式进行数据拷贝 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
UE4CtrlAPI 类¶
RflySim3D 场景控制与通信接口类。该类提供与 UE4/UE5 仿真环境的 UDP 通信能力,支持飞行器数据、对象数据、相机数据的传输与接收,以及场景控制指令的发送。
__init__(ip="127.0.0.1")¶
功能说明:初始化 UE4CtrlAPI 实例,建立与 RflySim3D 的通信连接。创建 UDP 套接字、初始化数据存储向量、设置控制标志,并为多线程消息处理准备事件机制。
参数列表 (Args):
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| ip | str | "127.0.0.1" | 目标 PC 的 IP 地址,用于建立与 RflySim3D 的 UDP 通信连接 |
返回值 (Returns):无
异常 (Raises):无
sendUE4Cmd(cmd, windowID=-1)¶
功能说明:发送命令以控制 RflySim3D 的显示样式。可用的命令字符串形如 'RflyShowTextTime "txt" time',支持多种显示控制功能包括文本显示、地图切换、相机控制、车辆模型操作等。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| cmd | 任意 | 是 | 无 | 命令字符串,详细命令格式见功能说明 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
fillList(data, inLen)¶
功能说明:内部辅助方法,用于填充列表数据。(无详细文档说明)
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| data | 任意 | 是 | 无 | 待填充的数据 |
| inLen | 任意 | 是 | 无 | 目标长度 |
返回值 (Returns):无
异常 (Raises):无
sendUE4CmdNet(cmd)¶
功能说明:通过局域网向所有 RflySim3D 实例发送控制命令。使用多播地址 224.0.0.10:20009 进行网络广播,支持最多92字节的命令数据。命令类型会自动检查与转换:字符串会被编码为字节串,长度超过91字节会被截断。发送命令后,如果是 "RflyChangeMap" 命令会额外等待0.5秒以确保场景切换完成。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| cmd | 任意 | 是 | 无 | 命令字符串或字节串,最大长度91字节 |
返回值 (Returns):无
异常 (Raises):无
sendUE4LabelID(CopterID=0, Txt='', fontSize=30, RGB=[255, 0, 0], windowID=-1)¶
功能说明:向 RflySim3D 发送标签ID显示命令,在指定飞机上显示文本标签。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | 任意 | 否 | 0 | 目标飞机ID |
| Txt | 任意 | 否 | "" | 显示的文本内容 |
| fontSize | 任意 | 否 | 30 | 字体大小 |
| RGB | 任意 | 否 | [255, 0, 0] | 文本颜色 [R, G, B],范围0-255 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4LabelMsg(CopterID=0, Txt='', fontSize=30, RGB=[255, 0, 0], dispTime=0, dispFlag=-1, windowID=-1)¶
功能说明:向 RflySim3D 发送标签消息显示命令,支持更复杂的消息管理机制。消息显示行为由 dispFlag 和 dispTime 共同控制:当 dispFlag < 0 且 dispTime >= 0 时采用累加模式;dispFlag < 0 且 dispTime < 0 时清空所有消息;dispFlag = 0 且 dispTime >= 0 时更新第0行;1 <= dispFlag < 5 时更新对应行,dispTime < 0 会删除该消息;dispFlag 大于当前消息数时切换到累加模式。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | 任意 | 否 | 0 | 目标飞机ID,≤0表示所有飞机 |
| Txt | 任意 | 否 | "" | 显示的文本内容,最大120字节 |
| fontSize | 任意 | 否 | 30 | 字体大小 |
| RGB | 任意 | 否 | [255, 0, 0] | 文本颜色 [R, G, B],范围0-255 |
| dispTime | 任意 | 否 | 0 | 显示时间(秒),<0立刻消失,=0永久显示,>0指定秒后消失 |
| dispFlag | 任意 | 否 | -1 | 显示标志,控制消息更新模式 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4Attatch(CopterIDs, AttatchIDs, AttatchTypes, windowID=-1)¶
功能说明:发送消息到 RflySim3D,将一个或多个飞机附加到其他物体上(最多支持25个飞机)。支持三种列表参数,每个列表最大长度为25。附加类型包括:0-正常模式,1-相对位置不相对姿态,2-相对位置+偏航(不相对俯仰和滚转),3-相对位置+全姿态(俯仰滚转偏航)。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterIDs | 任意 | 是 | 无 | 飞机ID列表,最大长度25 |
| AttatchIDs | 任意 | 是 | 无 | 目标附加对象ID列表,最大长度25 |
| AttatchTypes | 任意 | 是 | 无 | 附加类型列表,0-3,最大长度25 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
circle_traj(t, center=(0.0, 0.0), radius=1.0, W=5.0)¶
功能说明:生成圆形轨迹点,根据时间参数计算圆上的坐标位置。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| t | float | 是 | 无 | 时间(秒) |
| center | 任意 | 否 | (0.0, 0.0) | 圆心坐标 (x_c, y_c) |
| radius | float | 否 | 1.0 | 半径(米) |
| W | float | 否 | 5.0 | 轨迹周期(秒),默认5秒一圈 |
返回值 (Returns):元组 (x, y),圆上的坐标点
异常 (Raises):无
sendUE4Pos(copterID=1, vehicleType=3, MotorRPMSMean=0, PosE=[0, 0, 0], AngEuler=[0, 0, 0], windowID=-1)¶
功能说明:向 RflySim3D 发送位置和姿态信息,用于创建新的3D模型或更新现有模型的状态。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 否 | 1 | 飞机ID |
| vehicleType | 任意 | 否 | 3 | 载具类型 |
| MotorRPMSMean | 任意 | 否 | 0 | 电机平均转速 |
| PosE | 任意 | 否 | [0, 0, 0] | 地球坐标系位置 [x, y, z](米,NED) |
| AngEuler | 任意 | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw](弧度) |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4Pos2Ground(copterID=1, vehicleType=3, MotorRPMSMean=0, PosE=[0, 0, 0], AngEuler=[0, 0, 0], windowID=-1)¶
功能说明:向 RflySim3D 发送位置和姿态信息,创建或更新3D模型,并确保模型始终贴合地面。使用 checksum = 1234567891 通知 UE4 生成始终贴合地面的物体。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 否 | 1 | 飞机ID |
| vehicleType | 任意 | 否 | 3 | 载具类型 |
| MotorRPMSMean | 任意 | 否 | 0 | 电机平均转速 |
| PosE | 任意 | 否 | [0, 0, 0] | 地球坐标系位置 [x, y, z](米,NED) |
| AngEuler | 任意 | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw](弧度) |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4Destroy(copterID, windowID=-1)¶
功能说明:向 RflySim3D 发送销毁指定飞机的命令。当 vehicleType == -3 时,根据指定 ID 删除对应的 Copter。使用 sendUE4PosNew 的发送逻辑。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 是 | 无 | 要销毁的飞机ID |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosScale(copterID=1, vehicleType=3, MotorRPMSMean=0, PosE=[0, 0, 0], AngEuler=[0, 0, 0], Scale=[1, 1, 1], windowID=-1)¶
功能说明:向 RflySim3D 发送位置、姿态和缩放信息,创建或更新3D模型,并支持修改模型缩放比例。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 否 | 1 | 飞机ID |
| vehicleType | 任意 | 否 | 3 | 载具类型 |
| MotorRPMSMean | 任意 | 否 | 0 | 电机平均转速 |
| PosE | 任意 | 否 | [0, 0, 0] | 地球坐标系位置 [x, y, z](米,NED) |
| AngEuler | 任意 | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw](弧度) |
| Scale | 任意 | 否 | [1, 1, 1] | 缩放比例 [x, y, z] |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosScale2Ground(copterID=1, vehicleType=3, MotorRPMSMean=0, PosE=[0, 0, 0], AngEuler=[0, 0, 0], Scale=[1, 1, 1], windowID=-1)¶
功能说明:向 RflySim3D 发送位置、姿态和缩放信息,创建或更新3D模型,支持修改模型缩放比例,并确保模型始终贴合地面。使用 checksum = 1234567891 通知 UE4 生成始终贴合地面的物体。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 否 | 1 | 飞机ID |
| vehicleType | 任意 | 否 | 3 | 载具类型 |
| MotorRPMSMean | 任意 | 否 | 0 | 电机平均转速 |
| PosE | 任意 | 否 | [0, 0, 0] | 地球坐标系位置 [x, y, z](米,NED) |
| AngEuler | 任意 | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw](弧度) |
| Scale | 任意 | 否 | [1, 1, 1] | 缩放比例 [x, y, z] |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosFull(copterID, vehicleType, MotorRPMS=[0] * 8, VelE=[0, 0, 0], PosE=[0, 0, 0], RateB=[0, 0, 0], AngEuler=[0, 0, 0], windowID=-1)¶
功能说明:向 RflySim3D 发送完整的位置、姿态和运动状态信息,用于创建新的3D模型或更新现有模型的完整状态。包含速度、角速度、电机转速等完整状态信息。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 是 | 无 | 飞机ID |
| vehicleType | 任意 | 是 | 无 | 载具类型 |
| MotorRPMS | 任意 | 否 | [0,0,0,0,0,0,0,0] | 8个电机的转速(RPM) |
| VelE | 任意 | 否 | [0, 0, 0] | 地球坐标系速度 [Vx, Vy, Vz](m/s,NED) |
| PosE | 任意 | 否 | [0, 0, 0] | 地球坐标系位置 [x, y, z](m,NED) |
| RateB | 任意 | 否 | [0, 0, 0] | 机体坐标系角速度 [p, q, r](rad/s) |
| AngEuler | 任意 | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw](弧度) |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4ExtAct(copterID=1, ActExt=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], windowID=-1)¶
功能说明:向 RflySim3D 发送扩展动作数据,用于控制飞机的额外16个浮点参数。校验位为1234567894,包含运行时间戳和16个扩展参数。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 否 | 1 | 飞机ID |
| ActExt | 任意 | 否 | [0,...0](16个0) | 16个扩展动作参数 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosSimple(copterID, vehicleType, PWMs, VelE, PosE, AngEuler, runnedTime=-1, windowID=-1)¶
功能说明:向 RflySim3D 发送简化的位置和姿态信息,包含时间戳和PWM控制信号。用于创建新的3D模型或更新现有模型的状态,相比完整版本参数更少,通信开销更小。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | 任意 | 是 | 无 | 飞机ID |
| vehicleType | 任意 | 是 | 无 | 载具类型 |
| PWMs | 任意 | 是 | 无 | 8个PWM控制信号 |
| VelE | 任意 | 是 | 无 | 地球坐标系速度 [Vx, Vy, Vz](m/s,NED) |
| PosE | 任意 | 是 | 无 | 地球坐标系位置 [x, y, z](m,NED) |
| AngEuler | 任意 | 是 | 无 | 欧拉角 [roll, pitch, yaw](弧度) |
| runnedTime | 任意 | 否 | -1 | 运行时间戳(秒),-1表示使用当前时间 |
| windowID | 任意 | 否 | -1 | 目标窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosNew(copterID=1, vehicleType=3, PosE=[0, 0, 0], AngEuler=[0, 0, 0], VelE=[0, 0, 0], PWMs=[0] * 8, runnedTime=-1, windowID=-1)¶
功能说明:向 RflySim3D 发送位置、姿态等信息,用于创建新的 3D 模型或更新已有模型的状态。该函数构造 SOut2SimulatorSimpleTime 结构体数据并通过 UDP 发送给 UE4。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 否 | 1 | 飞机/物体 ID |
| vehicleType | int | 否 | 3 | 载具类型,四旋翼为 3 |
| PosE | list[float] | 否 | [0, 0, 0] | 东北天坐标系下的位置 [x, y, z],单位 m |
| AngEuler | list[float] | 否 | [0, 0, 0] | 欧拉角 [roll, pitch, yaw],单位 rad |
| VelE | list[float] | 否 | [0, 0, 0] | 东北天坐标系下的速度 [vx, vy, vz],单位 m/s |
| PWMs | list[float] | 否 | [0] * 8 | 电机转速/ PWM 值,最多 8 个 |
| runnedTime | float | 否 | -1 | 当前时间戳,单位 s,-1 表示使用系统当前时间 |
| windowID | int | 否 | -1 | 目标 RflySim3D 窗口 ID,-1 表示广播到所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosScale100(copterID, vehicleType, PosE, AngEuler, MotorRPMSMean, Scale, isFitGround=False, windowID=-1)¶
功能说明:向 RflySim3D 批量发送 100 架飞机的位置、姿态、缩放等信息,用于一次性创建或更新 100 个 3D 模型。该函数构造 Multi3DData100New 结构体数据并通过 UDP 发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | list[int] | 是 | 无 | 100 维飞机 ID 数组,从 1 到 100,0 表示不显示 |
| vehicleType | list[int] | 是 | 无 | 100 维飞机类型数组,四旋翼为 3 |
| PosE | list[float] | 是 | 无 | 300 维位置数组 [x1,y1,z1,x2,y2,z2,...],单位 m |
| AngEuler | list[float] | 是 | 无 | 300 维欧拉角数组 [r1,p1,y1,r2,p2,y2,...],单位 rad |
| MotorRPMSMean | list[float] | 是 | 无 | 100 维平均电机转速数组,单位 RPM |
| Scale | list[int] | 是 | 无 | 300 维缩放数组 [sx1,sy1,sz1,sx2,sy2,sz2,...],值为实际尺寸*100 |
| isFitGround | bool | 否 | False | 是否使飞机始终贴合地面,True 时校验位为 1234567891 |
| windowID | int | 否 | -1 | 目标 RflySim3D 窗口 ID,-1 表示广播到所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4PosScalePwm20(copterID, vehicleType, PosE, AngEuler, Scale, PWMs, isFitGround=False, windowID=-1)¶
功能说明:向 RflySim3D 批量发送 20 架飞机的位置、姿态、缩放及 PWM 等信息,用于一次性创建或更新 20 个 3D 模型。该函数构造 Multi3DData2New 结构体数据并通过 UDP 发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | list[int] | 是 | 无 | 20 维飞机 ID 数组,从 1 到 20,0 表示不显示 |
| vehicleType | list[int] | 是 | 无 | 20 维飞机类型数组,四旋翼为 3 |
| PosE | list[float] | 是 | 无 | 60 维位置数组 [x1,y1,z1,x2,y2,z2,...],单位 m |
| AngEuler | list[float] | 是 | 无 | 60 维欧拉角数组 [r1,p1,y1,r2,p2,y2,...],单位 rad |
| Scale | list[int] | 是 | 无 | 60 维缩放数组 [sx1,sy1,sz1,sx2,sy2,sz2,...],值为实际尺寸*100 |
| PWMs | list[float] | 是 | 无 | 160 维 PWM/电机转速数组,对应 20 个飞机各 8 个电机,单位 RPM |
| isFitGround | bool | 否 | False | 是否使飞机始终贴合地面,True 时校验位为 1234567891 |
| windowID | int | 否 | -1 | 目标 RflySim3D 窗口 ID,-1 表示广播到所有窗口 |
返回值 (Returns):无
异常 (Raises):无
getUE4Pos(CopterID=1)¶
功能说明:获取指定飞机在 UE4 中的位置数据。该方法从内部数据缓存中查询并返回指定 CopterID 的位置信息。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | int | 否 | 1 | 目标飞机 ID |
返回值 (Returns):指定飞机的位置数据,具体格式取决于内部数据结构的定义
异常 (Raises):无
getUE4Data(CopterID=1)¶
功能说明:获取指定飞机在 UE4 中的完整数据。该方法从内部数据缓存中查询并返回指定 CopterID 的所有相关数据,比 getUE4Pos 返回更完整的信息。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | int | 否 | 1 | 目标飞机 ID |
返回值 (Returns):指定飞机的完整数据,具体格式取决于内部数据结构的定义
异常 (Raises):无
initUE4MsgRec()¶
功能说明:初始化从 UE4 接收 UDP 数据的监听机制。当前主要用于监听碰撞数据(crash data),创建 UDP 接收线程并开始监听指定端口的数据。
参数列表 (Args):无参数
返回值 (Returns):无
异常 (Raises):无
endUE4MsgRec()¶
功能说明:结束 UE4 消息监听。停止 UDP 接收线程,清理相关资源,终止 initUE4MsgRec 启动的消息监听机制。
参数列表 (Args):无参数
返回值 (Returns):无
异常 (Raises):无
UE4MsgRecLoop()¶
功能说明:UE4 消息监听死循环处理函数。监听 224.0.0.10:20006 以及本地 20006 端口,处理 RflySim3D 或 CopterSim 返回的消息。共支持 6 种消息类型:
- CopterSimCrash(12 字节):碰撞检测数据,RflySim3D 按 P 键开启碰撞检测模式后,发生碰撞时返回
- PX4SILIntFloat(120 字节):包含 checksum、CopterID、整型数组和浮点数组的复合数据结构
- reqVeCrashData(160 字节):完整的飞机状态数据,包含位置、速度、姿态、碰撞信息等
- CameraData(56 字节):相机数据,接收后存放在
self.CamDataVect中 - CoptReqData(64 字节):带 copter_id 的目标数据,接收后存放在
self.CoptDataVect中 - ObjReqData(96 字节):场景中自带物体的数据,接收后存放在
self.ObjDataVect中
接收到的数据可使用 getCamCoptObj 函数进行获取。
参数列表 (Args):无参数
返回值 (Returns):无
异常 (Raises):无
getCamCoptObj(type_id=1, objName=1)¶
功能说明:根据类型和名称获取相机、目标或物体的数据。根据 type_id 不同,objName 的含义也不同:
type=0表示相机,objName对应相机的seqIDtype=1表示手动创建带copter_id的目标,objName对应CopterIDtype=2表示场景中自带的物体,objName对应物体名称(字符串)
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| type_id | int | 否 | 1 | 请求类型:0=相机,1=带copter_id的目标,2=场景自带物体 |
| objName | int/str | 否 | 1 | 目标标识:相机时为seqID,目标时为CopterID,物体时为名称字符串 |
返回值 (Returns):对应类型的数据对象,具体格式取决于 type_id
异常 (Raises):无
sendRflyShowTextTime(txt, time)¶
功能说明:向 RflySim3D 发送显示文本和时间的指令,用于在仿真环境中显示特定文本信息并指定显示时长。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| txt | str | 是 | 无 | 需要显示的文本内容 |
| time | float | 是 | 无 | 文本显示持续时间,单位秒 |
返回值 (Returns):无
异常 (Raises):
| 异常类型 | 说明 |
|---|---|
| TypeError | 参数类型错误时抛出 |
| ValueError | 参数值不合法时抛出 |
reqCamCoptObj(type_id=1, objName=1, windowID=0)¶
功能说明:向 RflySim3D 请求相机、带 copter_id 的目标或场景中自带物体的数据。根据 type_id 不同,objName 的含义不同:
type=0表示相机,objName对应相机的seqIDtype=1表示手动创建带copter_id的目标,objName对应CopterIDtype=2表示场景中自带的物体,objName对应物体名称(字符串)
内部调用 RflyReqObjData(int opFlag, FString objName, FString colorflag) 函数命令,其中 opFlag:0=创建相机,1=创建 copter_id 对应的目标,2=创建物体。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| type_id | int | 否 | 1 | 请求类型:0=相机,1=带copter_id的目标,2=场景自带物体 |
| objName | int/str | 否 | 1 | 目标标识:相机时为seqID,目标时为CopterID,物体时为名称字符串 |
| windowID | int | 否 | 0 | 目标 RflySim3D 窗口 ID,默认 0 号窗口 |
返回值 (Returns):无
异常 (Raises):无
reqCam(SeqIDList=[0], windowID=0)¶
功能说明:向 RflySim3D 请求指定相机的数据。发送请求后,RflySim3D 会定时返回 CameraData 结构体数据,接收后存放在 self.CamDataVect 中,可使用 getCamCoptObj 获取。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| SeqIDList | list[int] | 否 | [0] | 相机的序列 ID 列表 |
| windowID | int | 否 | 0 | 目标 RflySim3D 窗口 ID,默认 0 号窗口 |
返回值 (Returns):无
异常 (Raises):无
reqCopt(CopterIDList=[0], windowID=0)¶
功能说明:向 RflySim3D 请求指定带 copter_id 目标的数据。发送请求后,RflySim3D 会定时返回 CoptReqData 结构体数据,接收后存放在 self.CoptDataVect 中,可使用 getCamCoptObj 获取。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterIDList | list[int] | 否 | [0] | copter_id 的 ID 列表 |
| windowID | int | 否 | 0 | 目标 RflySim3D 窗口 ID,默认 0 号窗口 |
返回值 (Returns):无
异常 (Raises):无
reqObj(ObjNameList=[''], windowID=0)¶
功能说明:向 RflySim3D 请求场景中自带物体的数据。发送请求后,RflySim3D 会定时返回 ObjReqData 结构体数据,接收后存放在 self.ObjDataVect 中,可使用 getCamCoptObj 获取。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ObjNameList | list[str] | 否 | [''] | 物体名称的列表 |
| windowID | int | 否 | 0 | 目标 RflySim3D 窗口 ID,默认 0 号窗口 |
返回值 (Returns):无
异常 (Raises):无
SetUE4RadianceValue(UEObjectName, windows=-1)¶
功能说明:设置 UE4 中指定物体的辐射度/亮度值。用于调整场景中物体的光照或发光效果。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| UEObjectName | str | 是 | 无 | UE4 场景中物体的名称 |
| windows | int | 否 | -1 | 目标 RflySim3D 窗口 ID,-1 表示广播到所有窗口 |
返回值 (Returns):无
异常 (Raises):无
SetUE4RadianceValue__All(windows=-1)¶
功能说明:设置所有窗口的辐射值/亮度值
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| windows | int | 否 | -1 | 窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetStencilValueByActorName(Actorname, StencilValue, is_name_regex=False, windowID=-1)¶
功能说明:通过Actor名称设置场景的Stencil值(模板缓冲区值),用于后期处理中的遮罩或轮廓提取
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Actorname | str | 是 | None | Actor名称 |
| StencilValue | int | 是 | None | Stencil值(0-255) |
| is_name_regex | bool | 否 | False | 是否使用正则表达式匹配名称 |
| windowID | int | 否 | -1 | 窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetStencilValueByMeshComponentName(Meshname, StencilValue, is_name_regex=False, windowID=-1)¶
功能说明:通过网格组件名称设置场景的Stencil值,用于后期处理中的遮罩或轮廓提取
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Meshname | str | 是 | None | 网格组件名称 |
| StencilValue | int | 是 | None | Stencil值(0-255) |
| is_name_regex | bool | 否 | False | 是否使用正则表达式匹配名称 |
| windowID | int | 否 | -1 | 窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetStencilValueByCopterID(CopterID, StencilValue, windowID=-1)¶
功能说明:通过CopterID(无人机ID)设置对应Actor的Stencil值,用于后期处理中的遮罩或轮廓提取
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | int | 是 | None | 无人机ID |
| StencilValue | int | 是 | None | Stencil值(0-255) |
| windowID | int | 否 | -1 | 窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4VariableMessage(copterID, vehicleType, settingType, pointIndex, vehicleSetting, messageType, messageDatas, windowID=-1)¶
功能说明:发送可变长度的管道/线路消息,用于在UE4中创建或修改管道、线路等可视化对象。支持创建、修改、删除等操作类型,可设置管道半径、透明度、颜色等属性。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 对象ID,用于标识唯一的管道/线路对象 |
| vehicleType | int | 是 | None | 对象类型(ClassID) |
| settingType | int | 是 | None | 编辑类型:0=新增,1=修改,2=删除 |
| pointIndex | list | 是 | None | 点位编号数组,-1表示全部,0表示不修改,其他表示对应点位 |
| vehicleSetting | list | 是 | None | 参数设置,16位数组:[半径(m), 透明度, 自发光强度, 颜色R, G, B, A, 是否显示UI, ...],-1表示沿用原数据,-2表示使用默认数据 |
| messageType | int | 是 | None | 消息类型:0=unknown, 1=int32, 2=Float, 3=String, 4=Vector2D, 5=Vector3D |
| messageDatas | list | 是 | None | 消息内容数组,坐标信息单位为米 |
| windowID | int | 否 | -1 | 窗口ID,-1表示所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4CreatePipelineMsg(copterID, settingParam, messageDatas)¶
功能说明:发送创建管道消息,在UE4中创建新的管道/线路对象
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| settingParam | list | 是 | None | 管道参数设置数组 |
| messageDatas | list | 是 | None | 管道点位坐标数据 |
返回值 (Returns):无
异常 (Raises):无
sendUE4CoverPipelineMsg(copterID, settingParam, messageDatas)¶
功能说明:发送覆盖管道消息,用新的数据完全覆盖已有的管道/线路对象
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| settingParam | list | 是 | None | 管道参数设置数组 |
| messageDatas | list | 是 | None | 管道点位坐标数据 |
返回值 (Returns):无
异常 (Raises):无
sendUE4AddPointToPipelineMsg(copterID, messageDatas)¶
功能说明:发送添加点位到管道消息,向已有的管道/线路追加新的点位
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| messageDatas | list | 是 | None | 要追加的点位坐标数据 |
返回值 (Returns):无
异常 (Raises):无
sendUE4DeletePointMsg(copterID, pointIndexs)¶
功能说明:发送删除管道点位消息,删除指定管道中的特定点位
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要删除的点位索引数组 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetPipelineScaleMsg(copterID, pointIndexs, size)¶
功能说明:发送设置管道粗细消息,修改指定点位的管道半径/粗细
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要设置的点位索引数组,-1表示全部 |
| size | float | 是 | None | 管道半径,单位为米 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetPipelineDiaphaneityMsg(copterID, pointIndexs, diaphaneity)¶
功能说明:发送设置管道透明度消息,修改指定点位的管道材质透明度
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要设置的点位索引数组,-1表示全部 |
| diaphaneity | float | 是 | None | 透明度值,范围通常为0-1 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetPipelineLightMsg(copterID, pointIndexs, light)¶
功能说明:发送设置管道自发光强度消息,修改指定点位的管道自发光效果
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要设置的点位索引数组,-1表示全部 |
| light | float | 是 | None | 自发光强度值 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetPipelineColorMsg(copterID, pointIndexs, Color_R, Color_G, Color_B, Color_A)¶
功能说明:发送设置管道颜色消息,修改指定点位的管道材质颜色(RGBA)
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要设置的点位索引数组,-1表示全部 |
| Color_R | float | 是 | None | 红色通道值(0-1或0-255) |
| Color_G | float | 是 | None | 绿色通道值(0-1或0-255) |
| Color_B | float | 是 | None | 蓝色通道值(0-1或0-255) |
| Color_A | float | 是 | None | Alpha通道值(0-1或0-255) |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetPipelinePosMsg(copterID, pointIndexs, messageDatas)¶
功能说明:发送设置管道点位位置消息,修改指定点位的空间坐标位置
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道对象ID |
| pointIndexs | list | 是 | None | 要设置的点位索引数组 |
| messageDatas | list | 是 | None | 新的点位坐标数据,单位为米 |
返回值 (Returns):无
异常 (Raises):无
sendUE4SetWidgetVisble(copterID, isShowUI)¶
功能说明:发送设置控件可见性消息,控制管道/线路相关的UI控件显示或隐藏
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | None | 管道/控件对象ID |
| isShowUI | bool | 是 | None | 是否显示UI控件,True为显示,False为隐藏 |
返回值 (Returns):无
异常 (Raises):无
sendUE4RobotExtAct(copterID=1, ActExt=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], windowID=-1)¶
功能说明:向 UE4 仿真环境发送机器狗(机器人)扩展动作控制指令。通过 TypeMask 位掩码控制各控制项的启用状态,支持动作命令、避障设置、目标位置、姿态控制、速度向量等多种控制模式。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 否 | 1 | 机器狗的 CopterID 标识 |
| ActExt | list[float] | 否 | [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] | 扩展动作参数数组,共16个元素: 0.TypeMask(位掩码) 1.机器狗动作命令(1起立,2跳跃等) 2.避障半径 3-5.目的地位置x,y,z 6-8.机器狗自身Roll,Pitch,Yaw 9-11.机器狗前进向量X,Y,Z 12.机器狗速度设置 13.使用的坐标系(1:NED,2:FRD) |
| windowID | int | 否 | -1 | 目标窗口ID,-1表示发送到所有窗口 |
返回值 (Returns):无
异常 (Raises):无
sendUE4MassMovement(robotDogID, childUAVID, isCombined)¶
功能说明:发送机器狗与无人机的组合/分离控制指令,用于实现机器狗搭载无人机的协同运动控制。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| robotDogID | int | 是 | - | 机器狗的ID标识 |
| childUAVID | int | 是 | - | 子无人机(被搭载)的ID标识 |
| isCombined | bool/int | 是 | - | 是否组合状态,True/1表示组合,False/0表示分离 |
返回值 (Returns):无
异常 (Raises):无
sendDogPosENoAltYaw(copterID, pos_x, pos_y, yaw)¶
功能说明:发送机器狗的水平位置(XY平面)和偏航角控制指令,高度保持不变。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| pos_x | float | 是 | - | 目标位置X坐标(ENU坐标系,单位:米) |
| pos_y | float | 是 | - | 目标位置Y坐标(ENU坐标系,单位:米) |
| yaw | float | 是 | - | 目标偏航角(单位:弧度) |
返回值 (Returns):无
异常 (Raises):无
sendDogPosENoAlt(copterID, pos_x, pos_y)¶
功能说明:发送机器狗的水平位置(XY平面)控制指令,高度和偏航角保持不变。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| pos_x | float | 是 | - | 目标位置X坐标(ENU坐标系,单位:米) |
| pos_y | float | 是 | - | 目标位置Y坐标(ENU坐标系,单位:米) |
返回值 (Returns):无
异常 (Raises):无
sendDogRateNoAltYaw(copterID, yaw_rate, speed_x, speed_y, axis)¶
功能说明:发送机器狗的速率控制指令(偏航角速率 + 水平速度),高度保持不变。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| yaw_rate | float | 是 | - | 偏航角速率(单位:弧度/秒) |
| speed_x | float | 是 | - | X方向速度(单位:米/秒) |
| speed_y | float | 是 | - | Y方向速度(单位:米/秒) |
| axis | int | 是 | - | 坐标系选择(1: NED, 2: FRD/机体坐标系) |
返回值 (Returns):无
异常 (Raises):无
sendDogVelENoAltYaw(copterID, yaw, speed_x, speed_y, axis)¶
功能说明:发送机器狗的速度和前馈偏航角控制指令,高度保持不变。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| yaw | float | 是 | - | 目标偏航角(单位:弧度) |
| speed_x | float | 是 | - | X方向速度(单位:米/秒) |
| speed_y | float | 是 | - | Y方向速度(单位:米/秒) |
| axis | int | 是 | - | 坐标系选择(1: NED, 2: FRD/机体坐标系) |
返回值 (Returns):无
异常 (Raises):无
sendDogVelENoAlt(copterID, speed_x, speed_y, axis)¶
功能说明:发送机器狗的水平速度控制指令,高度和偏航角保持不变。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| speed_x | float | 是 | - | X方向速度(单位:米/秒) |
| speed_y | float | 是 | - | Y方向速度(单位:米/秒) |
| axis | int | 是 | - | 坐标系选择(1: NED, 2: FRD/机体坐标系) |
返回值 (Returns):无
异常 (Raises):无
sendUE4DogSpeed(copterID, speed)¶
功能说明:发送机器狗的运动速度标量设置指令。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| speed | float | 是 | - | 目标速度值(单位:米/秒) |
返回值 (Returns):无
异常 (Raises):无
sendUE4DogObstacleAvoidance(copterID, radius)¶
功能说明:发送机器狗的避障半径设置指令,启用或禁用自主避障功能。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| radius | float | 是 | - | 避障半径(单位:米),小于0时关闭避障,默认0.05 |
返回值 (Returns):无
异常 (Raises):无
sendUE4DogPlayAction(copterID, actionNum)¶
功能说明:发送机器狗的预设动作播放指令,触发特定的行为动作。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | int | 是 | - | 机器狗的CopterID |
| actionNum | int | 是 | - | 动作编号,可选值: 1:Damp, 2:BalanceStand, 3:StopMove, 4:PStandUp, 5:StandDown, 6:RecoveryStand, 7:Sit, 8:RiseSit, 9:SwitchGait, 10:BodyHeight, 11:FootRaiseHeight, 12:SpeedLevel, 13:Hello, 14:Stretch, 15:SwitchJoystick, 16:ContinuousGait, 17:Wallow, 18:Pose, 19:Scrape, 20:FrontFlip, 21:FrontJump, 22:FrontPounce, 23:Dance |
返回值 (Returns):无
异常 (Raises):无
startMulticastListener()¶
功能说明:启动组播监听器,用于接收来自 UE4 仿真环境的组播数据。
参数列表 (Args):无参数
返回值 (Returns):无
异常 (Raises):无
stopMulticastListener()¶
功能说明:停止组播监听器,终止接收来自 UE4 仿真环境的组播数据。
参数列表 (Args):无参数
返回值 (Returns):无
异常 (Raises):无
getRflyStatusMap()¶
功能说明:获取 RflySim 仿真状态映射表,包含当前仿真的运行状态和相关信息。
参数列表 (Args):无参数
返回值 (Returns):返回仿真状态映射字典,键值对形式存储各类状态信息。
异常 (Raises):无
getRflyIP(user)¶
功能说明:获取指定用户的 RflySim 仿真 IP 地址信息。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| user | str | 是 | - | 用户名标识 |
返回值 (Returns):返回指定用户对应的 IP 地址字符串。
异常 (Raises):无
getRflyStartTime(user)¶
功能说明:获取指定用户的 RflySim 仿真启动时间。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| user | str | 是 | - | 用户名标识 |
返回值 (Returns):返回仿真启动时间戳(单位:秒)。
异常 (Raises):无
getRflyMapName(user)¶
功能说明:获取指定用户的RflySim地图名称。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| user | Any | 是 | - | 目标用户标识 |
返回值 (Returns):地图名称 异常 (Raises):无
getRflyHeartbeat(user)¶
功能说明:获取指定用户的RflySim心跳状态。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| user | Any | 是 | - | 目标用户标识 |
返回值 (Returns):心跳状态 异常 (Raises):无
getLocalUserName()¶
功能说明:获取本地用户名。 参数列表 (Args):无参数 返回值 (Returns):本地用户名 异常 (Raises):无
getCurIP()¶
功能说明:获取当前IP地址。 参数列表 (Args):无参数 返回值 (Returns):当前IP地址 异常 (Raises):无
getCurMapName()¶
功能说明:获取当前地图名称。 参数列表 (Args):无参数 返回值 (Returns):当前地图名称 异常 (Raises):无
getCurStartTime()¶
功能说明:获取当前启动时间。 参数列表 (Args):无参数 返回值 (Returns):当前启动时间 异常 (Raises):无
getCurHeartbeat()¶
功能说明:获取当前心跳状态。 参数列表 (Args):无参数 返回值 (Returns):当前心跳状态 异常 (Raises):无
getAllIPAndUserName()¶
功能说明:获取所有IP地址和对应的用户名。 参数列表 (Args):无参数 返回值 (Returns):所有IP地址和用户名的映射 异常 (Raises):无
getAllUEMaps(is_ue5=False)¶
功能说明:获取指定 UE 项目 Content 目录下所有有效的地图名称(.umap 文件)。自动排除首字母为 '_' 以及名称中包含 'LogicMap' 的地图。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| is_ue5 | bool | 否 | False | 是否为UE5项目 |
返回值 (Returns):有效地图名称列表 异常 (Raises):无
getAllUEItems(is_ue5=False)¶
功能说明:遍历项目 Content 及插件 Content 下的 .xml 文件,提取 MeshClass 和 Name,根据预定义规则将 MeshClass 映射为中文类别,并返回按类别分组的名称列表。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| is_ue5 | bool | 否 | False | 是否为UE5项目 |
返回值 (Returns):按中文类别分组的名称字典 异常 (Raises):无
进阶用法示例¶
展示复杂组合场景(如多类协作、异步控制、批量操作)
from RflySimSDK.ue import UE4CtrlAPI, VisionSensorReqNew, CameraData
import time
import threading
# 初始化 UE4 控制 API
ue = UE4CtrlAPI()
# 批量创建多个无人机并设置圆形轨迹
def batch_create_drones(count, center_pos, radius, height):
"""批量创建无人机并分配圆形编队轨迹"""
drones = []
for i in range(count):
angle = (2 * 3.14159 * i) / count
drone_id = 100 + i # 起始ID
# 计算目标位置
target_x = center_pos[0] + radius * __import__('math').cos(angle)
target_y = center_pos[1] + radius * __import__('math').sin(angle)
# 发送初始位置到地面
ue.sendUE4Pos2Ground(drone_id, 1,
[target_x, target_y, height, 0, 0, 0])
drones.append({
'id': drone_id,
'angle': angle,
'radius': radius
})
return drones
# 异步视觉传感器数据获取
def async_vision_sensor(sensor_id, callback):
"""异步获取视觉传感器数据"""
sensor = VisionSensorReqNew()
def fetch_data():
while True:
# 复制最新数据
sensor.CopyData()
callback(sensor_id, sensor)
time.sleep(0.033) # 30Hz 刷新率
thread = threading.Thread(target=fetch_data)
thread.daemon = True
thread.start()
return thread
# 复杂场景:编队飞行 + 动态避障 + 视觉追踪
def complex_scenario():
# 1. 批量创建6架无人机圆形编队
formation = batch_create_drones(
count=6,
center_pos=[0, 0, 0],
radius=50,
height=30
)
# 2. 为编队添加动态圆形轨迹
for drone in formation:
ue.circle_traj(
drone['id'],
center=[0, 0, 30],
radius=drone['radius'],
speed=10,
height=30
)
# 3. 异步启动视觉传感器追踪目标
def on_vision_data(sensor_id, data):
# 处理视觉数据,动态调整编队
print(f"Sensor {sensor_id} captured frame")
async_vision_sensor(201, on_vision_data)
# 4. 动态销毁与重建(模拟故障恢复)
time.sleep(10)
ue.sendUE4Destroy(102) # 销毁2号机
time.sleep(2)
ue.sendUE4Pos2Ground(102, 1, [30, 30, 30, 0, 0, 0]) # 重建
# 执行复杂场景
if __name__ == "__main__":
complex_scenario()
注意事项与避坑指南¶
-
ID 冲突管理:
sendUE4Pos、sendUE4Pos2Ground等方法的copID参数必须全局唯一。若重复发送相同 ID 到不同位置会导致 UE4 中对象闪烁或控制异常,建议建立 ID 分配表(如 100-199 多旋翼、200-299 固定翼)。 -
坐标系混淆:
sendUE4Pos使用 NED(北东下)坐标系,而sendUE4Pos2Ground会将高度强制归零到地面。若在circle_traj中混合使用两者,会出现高度计算错误,建议全程统一使用sendUE4Pos并手动处理地面碰撞检测。 -
异步数据竞争:
VisionSensorReqNew.CopyData()和CameraData.CopyData()非线程安全,若在多线程中同时调用会导致内存对齐错误。必须使用互斥锁保护,或改用CopyDataOld获取上一帧缓存数据作为降级方案。 -
对象生命周期失控:
sendUE4Destroy仅销毁 UE4 视觉对象,不会清理 Python 端残留的CoptReqData或ObjReqData实例。长期运行仿真后会出现内存泄漏,建议建立对象池并显式调用del或重建UE4CtrlAPI实例。 -
网络超时盲区:
sendUE4CmdNet依赖 UDP 发送无确认机制,若 UE4 端未启动或防火墙拦截,调用会静默失败。生产环境必须配合reqVeCrashData或自定义心跳检测,超时后触发重连逻辑而非继续堆积指令。
更新日志¶
2026-04-10: 增加获取UE地图和可放置物品列表的接口2026-03-06: 添加覆盖创建管道的接口2026-03-03: feat:SDK增加IP处理机制,兼容本地版上云2026-03-02: 添加根据ID删除对应的Copter的接口2026-02-28: 增加显示隐藏点位编号UI的API2026-01-20: UE4CtrlAPI组播接口和WSL环境下bug修复2026-01-14: 修改组播端口2026-01-06: 新增组播获取IP和RflySim打开的地图等接口2025-12-18: 新增UE控制接口2025-09-11: fix: 增加Linux端口复用的支持2025-08-19: fix: 更新视觉和UE接口2025-07-14: fix2025-07-11: fix2024-07-30: 补充了吊舱接口内容2024-07-10: 融合吊舱程序所用接口内容