DllSimCtrlAPI 接口文档¶
简介¶
简述:该文件提供了RflySim仿真平台的底层仿真控制与数据交互接口,封装了多类仿真控制、数据管理与模型加载相关功能类,支撑第三方代码与PX4等飞控的闭环联合仿真。
RflySim平台需要通过动态链接库实现Python环境与仿真核心、飞控固件之间的交互,该模块封装了对接底层仿真控制库的全套接口,可用于不同类型无人机仿真任务的底层控制调度。模块支持三维仿真数据、硬件在环仿真数据的结构化管理,同时提供了RflySim专属的综合模型控制协议实现,能够适配多旋翼动态链接库模型加载、自定义仿真模型调度等多种开发场景,是RflySimSDK中实现闭环仿真控制的核心基础模块。
快速开始¶
最简可用示例,复制后修改最少配置即可运行。请确保已经正确安装RflySim SDK,且PX4飞控已经启动
from RflySimSDK.ctrl.DllSimCtrlAPI import ModelLoad
import time
# 1. 初始化模型加载对象,加载仿真控制接口,使用默认草地地图,本地IP,第一架无人机
sim_ctrl = ModelLoad(
dll_name=None, # 默认使用自带的仿真DLL
CopterID=1, # 无人机ID,默认为1
MapName="Grasslands", # 使用默认草地地图
ip="127.0.0.1" # 本地仿真地址
)
# 2. 创建一架无人机,默认初始位置(0, 0),初始偏航0度,不使用GPS
sim_ctrl.CreateVehicle(
CopterID=1,
useGPS=False
)
# 3. 启动仿真循环,定时更新3D仿真画面
for i in range(100):
# 更新无人机状态输出
sim_ctrl.Updata3Doutput()
# 发送更新信息到3D可视化界面
sim_ctrl.SendUpdate3DMap()
# 控制仿真帧率,约50Hz
time.sleep(0.02)
环境与依赖¶
- Python 环境:
>= 3.8.10 - 依赖库:
EarthModel、UE4CtrlAPI、UEMapServe、copy、ctrl.IpManager、ctypes、cv2、math、numpy、os、pymavlink、pymavlink.dialects.v20、shutil、socket、struct、sys、threading、time - 前置准备:调用此接口前,必须确保RflySimSDK已正确安装并完成环境配置。
核心接口说明¶
该模块 DllSimCtrlAPI.py 包含了配置变量、辅助函数及核心业务类。
全局常量与枚举定义¶
本节列出模块中所有可直接引用的全局常量和枚举定义。
独立常量¶
无
全局/独立函数¶
无
Data3D 类¶
存储无人机三维仿真相关的状态数据,支持从原始数据解析并更新各类无人机状态信息,适用于RflySim仿真中无人机状态数据的管理与维护。
__init__(copter_data=None, CopterID=-1, ClassID=-1)¶
功能说明:初始化Data3D对象,若提供原始无人机数据则自动调用update方法完成数据解析,否则将所有状态成员初始化为默认值,可存储的状态包括飞行器ID、三维样式、运行时间、速度、位置、姿态(欧拉角和四元数)、电机转速、加速度、角速度、GPS位置以及保留数据。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
copter_data |
Any |
否 | None |
原始无人机状态数据,传入后会自动解析更新状态 |
CopterID |
Any |
否 | -1 |
无人机的编号ID |
ClassID |
Any |
否 | -1 |
无人机的类别ID |
返回值 (Returns):
Data3D实例对象
异常 (Raises): 无
update(copter_data, CopterID=-1, ClassID=-1)¶
功能说明:根据传入的无人机编号ID、类别ID和原始数据,更新Data3D对象存储的所有无人机状态信息,包括运行时间、速度、位置、姿态、电机转速等各类状态数据。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
copter_data |
Any |
是 | - | 待解析的原始无人机状态数据 |
CopterID |
Any |
否 | -1 |
无人机的编号ID |
ClassID |
Any |
否 | -1 |
无人机的类别ID |
返回值 (Returns): 无 异常 (Raises): 无
示例:
# 初始化空Data3D对象
drone_data = Data3D()
# 传入原始数据更新状态
drone_data.update(raw_copter_data, CopterID=1, ClassID=0)
updateUdp(UIV)¶
功能说明:从UDP接收的数据中更新无人机状态信息。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
UIV |
Any |
是 | - | 从UDP接收的待解析状态数据 |
返回值 (Returns): 无 异常 (Raises): 无
示例:
drone_data = Data3D()
# 从接收的UDP数据更新状态
udp_packet = receive_udp_data()
drone_data.updateUdp(udp_packet)
DataHIL 类¶
用于硬件在环(HIL)仿真的顶层数据管理类,本类当前未定义额外的成员方法与类变量,可作为硬件在环仿真数据交互的基类使用。
__init__()¶
功能说明:初始化 DataHIL 类实例
参数列表 (Args):
无
返回值 (Returns):
DataHIL实例对象
异常 (Raises): 无
DllSimCtrlAPI 类¶
用于通过UDP广播与RflySim仿真环境通信,控制仿真中无人机的工具类。
__init__(self, CopterID=1, ip="127.0.0.1")¶
功能说明:初始化DllSimCtrlAPI对象,创建支持广播的UDP套接字,存储无人机ID和目标IP地址。 参数列表 (Args):
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| CopterID | Any | 1 | 目标控制无人机的ID,用于区分仿真环境中多架无人机 |
| ip | Any | "127.0.0.1" | 仿真环境所在服务端的IP地址,本地仿真默认使用本地回环地址 |
返回值 (Returns):无 异常 (Raises):无
fillList(data, inLen)¶
功能说明:此方法接收数组或列表,根据提供的长度参数进行调整。如果数据长度不足,则填充0;如果数据长度过长,则截断。处理逻辑:若输入为NumPy数组则先转换为Python列表;若输入已经是长度匹配的列表则直接返回;若为列表但长度不匹配则补零或截断;若输入不是列表则将单个数据包装为列表后补零到指定长度,最后返回处理后的数据。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| data | 任意 | 是 | 无 | 需要调整长度的输入数据,可以是NumPy数组、Python列表或单个数值 |
| inLen | int | 是 | 无 | 目标输出列表长度 |
返回值 (Returns):处理后长度为inLen的列表
异常 (Raises):无
sendCustomData(CopterID=0, data=[0] * 16, checksum=123456, port=50000, IP="127.0.0.1")¶
功能说明:封装CustomData结构体,将数据打包后通过UDP socket发送到指定IP和端口。结构体包含整型校验和、整型飞行器ID和16个double类型数据,方法会自动将输入数据调整为16长度(不足补零),再按ii16d格式打包发送。调用前需确保已创建并配置好udp_socket对象。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | int | 否 | 0 | 目标飞行器ID |
| data | list | 否 | [0] * 16 | 需要发送的16维数据 |
| checksum | int | 否 | 123456 | 数据校验和 |
| port | int | 否 | 50000 | 目标UDP端口号 |
| IP | str | 否 | 127.0.0.1 | 目标IP地址 |
返回值 (Returns):无 异常 (Raises):无
sendSILIntFloat(inSILInts=[0] * 8, inSILFLoats=[0] * 20, copterID=-1)¶
功能说明:向DLL模型的inSILInts和inSILFloats输入接口通过UDP发送PX4SILIntFloat结构体数据。结构体包含校验和、飞行器ID、8维整型数组、16维单精度浮点数组,方法会对输入数据做长度校正,按10i20f格式打包后通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID。调用前需确保已创建并配置好udp_socket对象且self.ip属性已设定。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inSILInts | list | 否 | [0] * 8 | 输入的8维整型数据 |
| inSILFLoats | list | 否 | [0] * 20 | 输入的20维单精度浮点数据 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendSILIntDouble(inSILInts=[0] * 8, inSILDoubs=[0] * 20, copterID=-1)¶
功能说明:向DLL模型的inDoubCtrls输入接口通过UDP发送数据,兼容前8维整型后20维双精度的输入格式,最终以28维双精度格式发送。结构体为DllInDoubCtrls,包含校验和、飞行器ID、28维双精度数组,方法会对输入数据做长度校正,将输入的整型和双精度数据拼接后按2i28d格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID。调用前需确保已创建并配置好udp_socket对象且self.ip属性已设定。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inSILInts | list | 否 | [0] * 8 | 输入的前8维整型数据 |
| inSILDoubs | list | 否 | [0] * 20 | 输入的后20维双精度数据 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendInDoubCtrls(inDoubsCtrls=[0] * 28, copterID=-1)¶
功能说明:向DLL模型的inDoubCtrls输入接口通过UDP发送28维双精度数据,结构体为DllInDoubCtrls,包含校验和、飞行器ID、28维双精度数组。方法会对输入数据做长度校正,按2i28d格式打包后通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID。调用前需确保已创建并配置好udp_socket对象且self.ip属性已设定。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inDoubsCtrls | list | 否 | [0] * 28 | 需要发送的28维双精度输入数据 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendInCtrlExt(inSILInts=[0] * 8, inSILFLoats=[0] * 20, iDxNum=1, copterID=-1)¶
功能说明:向DLL模型的inCtrlExt 1~5系列指定接口通过UDP发送数据,接口编号由iDxNum指定,输入格式为8维整型+20维单精度浮点,最终转换为28维double格式发送给DLL。校验和为1234567800 + iDxNum,方法对输入做长度校正后按10i20f格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inSILInts | list | 否 | [0] * 8 | 输入的8维整型数据 |
| inSILFLoats | list | 否 | [0] * 20 | 输入的20维单精度浮点数据 |
| iDxNum | int | 否 | 1 | 目标inCtrlExt接口编号,范围1~5 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendInCtrlExtDoub(inDoubsCtrls=[0] * 28, iDxNum=1, copterID=-1, update=True)¶
功能说明:向DLL模型的inCtrlExt 1~5系列指定接口通过UDP发送28维双精度数据,接口编号由iDxNum指定。校验和为1234567800 + iDxNum,方法对输入做长度校正后按2i28d格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID。注意:DLL模型inCtrlExt接口默认是float类型,使用本方法需要修改接口类型为double后重新生成DLL才会生效。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inDoubsCtrls | list | 否 | [0] * 28 | 需要发送的28维双精度输入数据 |
| iDxNum | int | 否 | 1 | 目标inCtrlExt接口编号,范围1~5 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
| update | bool | 否 | True | 是否立即更新数据,在批量分段发送时仅最后一段设为True |
返回值 (Returns):无 异常 (Raises):无
sendInCtrlExtAll(inDoubsCtrls=[0] * 140, copterID=-1)¶
功能说明:批量向DLL模型的inCtrlExt 1~5共5个接口发送数据,基于sendInCtrlExtDoub实现。将输入的最多140维数据按每28个元素分段,依次从inCtrlExt 1到inCtrlExt 5接口发送,仅最后一段发送时设置update=True立即更新。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inDoubsCtrls | list | 否 | [0] * 140 | 需要发送的总数据,最多支持5个接口×28维=140维 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendModelInParams(Bitmask, InParams, copterID=-1)¶
功能说明:向DLL模型FaultParamAPI.FaultInParams接口注入参数,通过PX4ModelInParams结构体打包发送。使用32位无符号位掩码指定哪些参数生效,对输入参数做长度校正后按iI32d格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID,固定校验和为1234567891。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Bitmask | int | 是 | 无 | 32位无符号位掩码,指定输入参数中哪些位生效,例如0b01表示仅第1位有效 |
| InParams | list | 是 | 无 | 需要注入的最多32维double型参数 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendInitInParams(Bitmask=0, InParams=[0] * 32, copterID=-1)¶
功能说明:向DLL模型FaultParamAPI.InitInParams接口注入初始化参数,通过PX4ModelInParams结构体打包发送。使用32位无符号位掩码指定哪些参数生效,对输入参数做长度校正后按iI32d格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID,固定校验和为1234567892。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Bitmask | int | 否 | 0 | 32位无符号位掩码,指定输入参数中哪些位生效,例如0b01表示仅第1位有效 |
| InParams | list | 否 | [0] * 32 | 需要注入的最多32维double型初始化参数 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendDynModiParams(Bitmask=0, InParams=[0] * 64, copterID=-1)¶
功能说明:向DLL模型FaultParamAPI.DynModiParams接口注入动态修改参数,通过PX4DynModiParams结构体打包发送。使用64位无符号位掩码指定哪些参数生效,对输入参数做长度校正后按iiQ64d格式打包,通过30100+(copterID-1)*2端口发送;若输入copterID大于0则使用输入ID,否则使用对象自身的CopterID,固定校验和为1234567893。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Bitmask | int | 否 | 0 | 64位无符号位掩码,指定输入参数中哪些位生效,例如0b01表示仅第1位有效 |
| InParams | list | 否 | [0] * 64 | 需要注入的最多64维double型动态参数 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
sendUE2Coptersim(inFromUE=None, copterID=-1)¶
功能说明:根据无人机ID将UE侧发来的数据打包为UEToCopterDataD结构体,通过UDP发送给DLL模型。结构体包含固定校验和1234567899、飞行器ID、32维double数据,按ii32d格式打包发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inFromUE | list | 否 | None | UE发出的32维double数据,默认生成全0的32维数据 |
| copterID | int | 否 | -1 | 目标飞行器ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
InitTrueDataLoop(TargetCopter=-1)¶
功能说明:初始化UDP监听循环,用于从CopterSim的30100系列端口接收真实数据。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| TargetCopter | int | 否 | -1 | 目标监听的无人机ID,小于等于0时使用对象自身的CopterID |
返回值 (Returns):无 异常 (Raises):无
EndTrueDataLoop()¶
功能说明:结束真实数据接收模式,停止监听循环。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
getTrueDataMsg()¶
功能说明:启动循环监听30100系列端口发来的真实数据,获取真实数据消息。 参数列表 (Args):无参数 返回值 (Returns):接收到的真实数据消息 异常 (Raises):无
sendFloatsColl(size, velE=[0, 0, 0], ray=[0, 0, 0, 0, 0, 0], posE=[0, 0, 0], copterID=-1)¶
功能说明:此方法封装与无人机的碰撞相关数据,并通过UDP发送到指定的模拟器端口。根据提供的参数封装数据后,使用struct.pack以格式ii13f(两个整数和十三个浮点数)格式化数据后发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| size | None |
否 | 0 | 无人机碰撞体积大小 |
| velE | List[float] |
否 | [0, 0, 0] | 无人机东东北北下坐标系下的速度,长度为3 |
| ray | List[float] |
否 | [0, 0, 0, 0, 0, 0] | 六个方向(前后左右上下)的射线检测距离,长度为6 |
| posE | List[float] |
否 | [0, 0, 0] | 无人机东北下坐标系下的位置,长度为3 |
| copterID | int |
否 | -1 | 目标无人机的ID,-1表示对所有无人机生效 |
返回值 (Returns):无返回值 异常 (Raises):无
sendColl20d(Coll20d=[0] * 20, copterID=-1)¶
功能说明:此方法封装无人机的20维碰撞数据,并通过UDP发送到指定的模拟器端口。根据提供的碰撞数据和无人机ID,封装数据后使用struct.pack以格式ii20f(两个整数和二十个浮点数)格式化数据后发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Coll20d | List[float] |
否 | [0] * 20 | 20维碰撞数据,长度为20 |
| copterID | int |
否 | -1 | 目标无人机的ID,-1表示对所有无人机生效 |
返回值 (Returns):无返回值 异常 (Raises):无
sendTerrIn15d(TerrIn15d=[0] * 15, copterID=-1)¶
功能说明:此方法封装无人机的15维地形数据,并通过UDP发送到指定的模拟器端口。根据提供的地形数据和无人机ID,封装数据后使用struct.pack以格式ii15f(两个整数和十五个浮点数)格式化数据后发送。
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| TerrIn15d | List[float] |
否 | [0] * 15 | 15维地形数据,长度为15 |
| copterID | int |
否 | -1 | 目标无人机的ID,-1表示对所有无人机生效 |
返回值 (Returns):无返回值 异常 (Raises):无
sendDllTakeoff(takeoffHeight=-10)¶
功能说明:发送起飞指令到PX4仿真,指定目标起飞高度。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| takeoffHeight | float |
否 | -10 | 目标起飞高度,单位为米 |
返回值 (Returns):无返回值 异常 (Raises):无
sendDllPosNeD(x=0, y=0, z=0, yaw=0)¶
功能说明:发送东北下坐标系下的位置期望与期望偏航角到飞控,用于位置控制。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| x | float |
否 | 0 | 东北下坐标系下x方向(东向)位置,单位为米 |
| y | float |
否 | 0 | 东北下坐标系下y方向(北向)位置,单位为米 |
| z | float |
否 | 0 | 东北下坐标系下z方向(向下)位置,单位为米 |
| yaw | float |
否 | 0 | 期望偏航角,单位为弧度 |
返回值 (Returns):无返回值 异常 (Raises):无
sendDllPosNedNoYaw(x=0, y=0, z=0)¶
功能说明:发送东北下坐标系下的位置期望到飞控,不指定期望偏航角,保持当前偏航角,用于位置控制。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| x | float |
否 | 0 | 东北下坐标系下x方向(东向)位置,单位为米 |
| y | float |
否 | 0 | 东北下坐标系下y方向(北向)位置,单位为米 |
| z | float |
否 | 0 | 东北下坐标系下z方向(向下)位置,单位为米 |
返回值 (Returns):无返回值 异常 (Raises):无
sendDllVelFRD(vx=0, vy=0, vz=0, yawRate=0)¶
功能说明:发送前右下机体坐标系下的速度期望与期望偏航角速率到飞控,用于速度控制。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | float |
否 | 0 | 前右下机体坐标系下x方向(前向)速度,单位为m/s |
| vy | float |
否 | 0 | 前右下机体坐标系下y方向(右向)速度,单位为m/s |
| vz | float |
否 | 0 | 前右下机体坐标系下z方向(向下)速度,单位为m/s |
| yawRate | float |
否 | 0 | 期望偏航角速率,单位为rad/s |
返回值 (Returns):无返回值 异常 (Raises):无
sendDllVelNEDNoYaw(vx=0, vy=0, vz=0)¶
功能说明:发送东北下坐标系下的速度期望到飞控,不指定偏航速率,保持当前偏航角,用于速度控制。 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | float |
否 | 0 | 东北下坐标系下x方向(东向)速度,单位为m/s |
| vy | float |
否 | 0 | 东北下坐标系下y方向(北向)速度,单位为m/s |
| vz | float |
否 | 0 | 东北下坐标系下z方向(向下)速度,单位为m/s |
返回值 (Returns):无返回值 异常 (Raises):无
RflySimCP 类¶
RflySim 综合模型控制协议,定义了RflySim控制通信协议的各类参数常量。
__init__()¶
功能说明:初始化RflySim综合模型控制协议实例 参数列表 (Args):无 返回值 (Returns):无 异常 (Raises):无
IsBitSet(num, bit)¶
功能说明:检查指定位是否被置位 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| num | int | 是 | 无 | 需要检查的整数 |
| bit | int | 是 | 无 | 指定的位 |
返回值 (Returns):bool: 如果指定位被置位,则返回True,否则返回False。 异常 (Raises):无
IsPosSet(num)¶
功能说明:检查是否启用了位置控制 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| num | int | 是 | 无 | 需要检查的整数 |
返回值 (Returns):bool: 如果启用了位置控制,则返回True,否则返回False。 异常 (Raises):无
getPosNED(x=0, y=0, z=0, yaw=0)¶
功能说明:生成北东地坐标系下的期望位置与偏航组合控制指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| x | float | 否 | 0 | 北方向位置(NED坐标系原点为原点) |
| y | float | 否 | 0 | 东方向位置 |
| z | float | 否 | 0 | 下方向位置 |
| yaw | float | 否 | 0 | 期望偏航角,单位弧度,北为0,顺时针增加 |
返回值 (Returns):打包完成的控制指令数值 异常 (Raises):无
getPosLocal(x=0, y=0, z=0, yaw=0)¶
功能说明:生成局部坐标系下的期望位置与偏航组合控制指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | x | float | 否 | 0 | X方向位置(ENU坐标系原点为起飞点) | | y | float | 否 | 0 | Y方向位置 | | z | float | 否 | 0 | 下方向位置 | | yaw | float | 否 | 0 | 期望偏航角,单位弧度,北为0,顺时针增加 |
返回值 (Returns):打包完成的控制指令数值 异常 (Raises):无
getVelNedNoYaw(northvel=0, eastvel=0, downvel=0)¶
功能说明:生成北东地坐标系下的期望速度控制指令,不指定偏航,保持当前偏航 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| northvel | float | 否 | 0 | 北方向期望速度 |
| eastvel | float | 否 | 0 | 东方向期望速度 |
| downvel | float | 否 | 0 | 下方向期望速度 |
返回值 (Returns):打包完成的控制指令数值 异常 (Raises):无
getVelNED(vx=0, vy=0, vz=0, yawRate=0)¶
功能说明:生成北东地坐标系下的期望速度与偏航速率组合控制指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | float | 否 | 0 | 北方向期望速度 |
| vy | float | 否 | 0 | 东方向期望速度 |
| vz | float | 否 | 0 | 下方向期望速度 |
| yawRate | float | 否 | 0 | 期望偏航速率 |
返回值 (Returns):打包完成的控制指令数值 异常 (Raises):无
getVelFRD(vx=0, vy=0, vz=0, yawRate=0)¶
功能说明:生成前右下机体坐标系下的期望速度与偏航速率组合控制指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | float | 否 | 0 | 前方向期望速度(机体FRD坐标系) |
| vy | float | 否 | 0 | 右方向期望速度 |
| vz | ||||
| yawRate | float | 否 | 0 | 期望偏航速率 |
返回值 (Returns):打包完成的控制指令数值 异常 (Raises):无
SendSynAcc(ax, ay, az)¶
功能说明:同步发送加速度期望指令,无延迟发送 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | ax | float | 是 | 无 | X方向期望加速度 | | ay | float | 是 | 无 | Y方向期望加速度 | | az | float | 是 | 无 | Z方向期望加速度 |
返回值 (Returns):无 异常 (Raises):无
SendSynFull(x, y, z, vx, vy, vz, ax, ay, az, yawRate)¶
功能说明:同步发送完整包含位置、速度、加速度和偏航速率期望指令,无延迟发送 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | x | float | 是 | 无 | 期望位置X分量 | | y | float | 是 | 无 | 期望位置Y分量 | | z | float | 是 | 无 | 期望位置Z分量 | | vx | float | 是 | 无 | 期望速度X分量 | | vy | float | 是 | 无 | 期望速度Y分量 | | vz | float | 是 | 无 | 我期望速度Z分量 | | ax | float | 是 | 无 | 期望加速度X分量 | | ay | float | 是 | 无 | 期望加速度Y分量 | | az | float | 是 | 无 | 期望加速度Z分量 | | yawRate | float | 是 | 无 | 期望偏航速率 |
返回值 (Returns):无 异常 (Raises):无
SendSynAttThrust(roll, pitch, yaw, thrust)¶
功能说明:同步发送期望姿态与总推力指令,无延迟发送 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | roll | float | 是 | 无 | 期望滚转角,单位弧度 | | pitch | float | 是 | 无 | 期望俯仰角,单位弧度 | | yaw | float | 是 | 无 | 期望偏航角,单位弧度 | | thrust | float | 是 | 无 | 期望总推力 |
返回值 (Returns):无 异常 (Raises):无
SendSynAtt(roll, pitch, yaw)¶
功能说明:同步发送期望姿态指令,无延迟发送 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | roll | float | 是 | 无 | 期望滚转角,单位弧度 | | pitch | float | 是 | 无 | 期望俯仰角,单位弧度 | | yaw | 是 | 无 | 期望偏航角,单位弧度 |
返回值 (Returns):无 异常 (Raises):无
TakeoffSyn(height)¶
功能说明:同步发送起飞指令,指令不能有延迟,起飞到指定高度 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | 无 | 起飞目标高度 | | height | float | 是 | 无 | 起飞目标高度 |
返回值 (Returns):无 异常 (Raises):无
ReturnHomeSyn(height)¶
功能说明:同步发送返航指令,指令不能有延迟,先飞到返航点,保持指定高度 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | height | float | 是 | 无 | 返航过程保持的飞行高度 |
返回值 (Returns):无 异常 (Raises):无
LandSyn(height=0)¶
功能说明:同步发送降落指令,指令不能有延迟,降落至指定高度 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | height | float | 否 | 0 | 降落目标高度 |
返回值 (Returns):无 异常 (Raises):无
SendPosSpeedFWSyn(x, y, z, speed)¶
功能说明:为固定翼综合模型同步发送位置与速度指令,同时指定期望位置和期望飞行速度,指令无延迟 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 | | :--- | :---: | :--- | :--- | | x | float | 是 | 无 | 期望位置X坐标 | | y | float | 是 | 无 | 期望位置Y坐标 | | z | float | 是 | 无 | 期望位置Z坐标 | | speed | float | 是 | 无 | 期望飞行速度大小 |
返回值 (Returns):无 异常 (Raises):无
ResetSynCmd()¶
功能说明:重置同步命令状态 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无
ModelLoad 类¶
用于向RflySim仿真环境中加载自定义飞行器模型的工具类。
__init__(dll_name, CopterID=1, ClassID=-1, MapName="Grasslands", ip="127.0.0.1", LocX=0, LocY=0, Yaw=0, UdpMode=0, useGPS=False, GpsOrin=[0, 0, 0])¶
功能说明:构造模型加载对象,连接仿真环境并加载指定的飞行器模型到指定位置。 参数列表 (Args):
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| dll_name | - | 无 | 待加载的模型动态链接库文件名 |
| CopterID | - | 1 | 加载后飞行器的ID编号,用于区分多机场景中的不同飞行器 |
| ClassID | - | -1 | 飞行器类别ID,-1表示自动分配 |
| MapName | - | "Grasslands" | 目标加载场景的名称 |
| ip | - | "127.0.0.1" | 仿真服务所在的IP地址 |
| LocX | - | 0 | 模型加载的初始东北天坐标系X坐标(东向,单位:米) |
| LocY | - | 0 | 模型加载的初始东北天坐标系Y坐标(北向,单位:米) |
| Yaw | - | 0 | 模型加载的初始偏航角,单位:度 |
| UdpMode | - | 0 | UDP通信模式,0为默认模式 |
| useGPS | - | False | 是否为该模型启用GPS仿真 |
| GpsOrin | - | [0, 0, 0] | GPS传感器相对于机体原点的偏移量,顺序为前后、左右、上下 |
返回值 (Returns):无 异常 (Raises):无
CreateVehicle(CopterID=1, ClassID=-1, MapName="Grasslands", ip="127.0.0.1", LocX=0, LocY=0, Yaw=0, UdpMode=0, useGPS=False, GpsOrin=[0, 0, 0])¶
功能说明:在三维仿真场景中创建一架无人机载具 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | 任意 | 否 | 1 | 无人机的ID编号 |
| ClassID | 任意 | 否 | -1 | 无人机机型ID,-1表示默认机型 |
| MapName | 任意 | 否 | Grasslands | 加载的场景地图名称 |
| ip | 任意 | 否 | 127.0.0.1 | 仿真服务连接的IP地址 |
| LocX | 任意 | 否 | 0 | 无人机初始位置X坐标 |
| LocY | 任意 | 否 | 0 | 无人机初始位置Y坐标 |
| Yaw | 任意 | 否 | 0 | 无人机初始偏航角 |
| UdpMode | 任意 | 否 | 0 | UDP通信模式,0为默认模式 |
| useGPS | 任意 | 否 | False | 是否启用GPS仿真 |
| GpsOrin | 任意 | 否 | [0, 0, 0] | GPS初始偏移量 |
|
返回值 (Returns):无 异常 (Raises):无
Updata3Doutput()¶
功能说明:更新三维场景的输出数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
SendUpdate3DMap(isSetSpeed=False)¶
功能说明:向三维仿真场景发送地图更新信息,可选择设置仿真速度 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| isSetSpeed | 任意 | 否 | False | 是否更新设置仿真运行速度 |
|
返回值 (Returns):无 异常 (Raises):无
get3DDataBuf()¶
功能说明:获取三维场景数据缓冲区 参数列表 (Args):无参数 返回值 (Returns):三维场景数据缓冲区对象 异常 (Raises):无
Send3DData()¶
功能说明:发送三维场景数据到仿真服务 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
SendSimData()¶
功能说明:发送仿真数据到飞控端 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
SendHILData()¶
功能说明:发送硬件在环仿真数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
SendOutCopter()¶
功能说明:发送无人机状态数据输出 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
fillList(data, inLen, fill=0)¶
功能说明:将列表填充至指定长度,填充指定值 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| data | 任意 | 是 | 无 | 待填充的原始列表 |
| inLen | 任意 | 是 | 无 | 填充后目标长度 |
| fill | 任意 | 否 | 0 | 用于填充的元素值 |
|
返回值 (Returns):填充完成后的列表 异常 (Raises):无
StartAutUpdate(UpdateFreq=30, speed=-1)¶
功能说明:启动三维场景自动更新线程 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| UpdateFreq | 任意 | 否 | 30 | 自动更新频率,单位Hz |
| speed | 任意 | 否 | -1 | 仿真运行速度倍率,-1表示不修改原速度 |
|
返回值 (Returns):无 异常 (Raises):无
StopAutUpdate()¶
功能说明:停止三维场景自动更新线程 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
AutUpdateLoop()¶
功能说明:自动更新的循环执行函数,由线程调用 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
StartExtCtrl()¶
功能说明:启动外部控制接收线程 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
StopExtCtrl()¶
功能说明:停止外部控制接收线程 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
Recv20100Loop()¶
功能说明:端口20100的数据接收循环函数,由接收线程调用 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
Recv30100Loop()¶
功能说明:无 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无
DllDestroyModel()¶
功能说明:销毁模型 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无
DllReInitModel()¶
功能说明:初始化模型 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无
DllInputSILs(in_ints, in_floats)¶
功能说明:输入SIL数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_ints | None | 否 | [0] * 8 |
输入整型SIL数据 |
| in_floats | None | 否 | [0] * 20 |
输入浮点型SIL数据 |
返回值 (Returns):无 异常 (Raises):无
DllInputColls(in_floats_collision)¶
功能说明:输入Collision数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_floats_collision | None | 否 | [0] * 20 |
碰撞输入浮点型数据 |
返回值 (Returns):无 异常 (Raises):无
DllTerrainIn15d(terrain15d)¶
功能说明:输入地形高度数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| terrain15d | None | 否 | [0] * 15 |
15维地形高度数据 |
返回值 (Returns):无 异常 (Raises):无
DllInitGpsPos(gps)¶
功能说明:输入GPS坐标的原点值 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| gps | None | 否 | [0] * 3 |
GPS原点经纬度、高度数据 |
返回值 (Returns):无 异常 (Raises):无
DllInitPosAngState(init_pos_offset, init_ang_offset)¶
功能说明:初始化位置和角度状态 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| init_pos_offset | None | 否 | [0, 0, 0] |
初始位置偏移量 |
| init_ang_offset | None | 否 | [0, 0, 0] |
初始角度偏移量 |
返回值 (Returns):无 异常 (Raises):无
DllInputDoubCtrls(in_doub_ctrls)¶
功能说明:输入控制指令数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_doub_ctrls | None | 否 | [0] * 28 |
28维双精度控制指令数据 |
返回值 (Returns):无 异常 (Raises):无
DllinSIL28d(in_doub_ctrls)¶
功能说明:输入控制指令数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_doub_ctrls | None | 否 | [0] * 28 |
28维双精度控制指令数据 |
返回值 (Returns):无 异常 (Raises):无
DllInCtrlExt(in_ctrl_ext)¶
功能说明:输入故障注入数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_ctrl_ext | None | 否 | [0] * 140 |
140维扩展控制故障注入数据 |
返回值 (Returns):无 异常 (Raises):无
DllInFromUE(in_from_ue)¶
功能说明:输入UE数据给DLL 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| in_from_ue | None | 否 | [0] * 32 |
来自UE的32维输入数据 |
返回值 (Returns):无 异常 (Raises):无
DllInputColls(inCll)¶
功能说明:输入碰撞数据给DLL 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| inCll | None | 否 | [0] * 20 |
20维碰撞输入数据 |
返回值 (Returns):无 异常 (Raises):无
DllGetStep0()¶
功能说明:获取步长 参数列表 (Args): 无参数 返回值 (Returns):仿真步长数值 异常 (Raises):无
Dllstep()¶
功能说明:执行仿真步骤 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无
ModelUpdate(step_time)¶
功能说明:执行仿真步骤,仿真step_time秒 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| step_time | None | 是 | 无 | 需要推进仿真的时间,单位为秒 |
返回值 (Returns):无 异常 (Raises):无
DlloutVehileInfo60d()¶
功能说明:导出车辆的60维信息数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
DllOutCopterData()¶
功能说明:导出多旋翼飞行器的仿真数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
SendPosNED(x=0, y=0, z=0, yaw=0)¶
功能说明:发送NED坐标系下的位置和偏航角指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| x | None | 否 | 0 | NED坐标系下北方向位置坐标 |
| y | None | 否 | 0 | NED坐标系下东方向位置坐标 |
| z | None | 否 | 0 | NED坐标系下Down方向位置坐标 |
| yaw | None | 否 | 0 | 偏航角 |
返回值 (Returns):无 异常 (Raises):无
SendPosLocal(x=0, y=0, z=0, yaw=0)¶
功能说明:发送本地坐标系下的位置和偏航角指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| x | None | 否 | 0 | 本地坐标系下x方向位置坐标 |
| y | None | 否 | 0 | 本地坐标系下y方向位置坐标 |
| z | None | 否 | 0 | 本地坐标系下z方向位置坐标 |
| yaw | None | 否 | 0 | 偏航角 |
返回值 (Returns):无 异常 (Raises):无
SendVelNED(vx=0, vy=0, vz=0, yawRate=0)¶
功能说明:发送NED坐标系下的速度和偏航角速度指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | None | 否 | 0 | NED坐标系下北方向速度 |
| vy | None | 否 | 0 | NED坐标系下东方向速度 |
| vz | None | 否 | 0 | NED坐标系下Down方向速度 |
| yawRate | None | 否 | 0 | 偏航角速度 |
返回值 (Returns):无 异常 (Raises):无
SendVelFRD(vx=0, vy=0, vz=0, yawRate=0)¶
功能说明:发送机体FRD坐标系下的速度和偏航角速度指令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vx | None | 否 | 0 | FRD坐标系下前方向速度 |
| vy | None | 否 | 0 | FRD坐标系下右方向速度 |
| vz | None | 否 | 0 | FRD坐标系下下方向速度 |
| yawRate | None | 否 | 0 | 偏航角速度 |
返回值 (Returns):无 异常 (Raises):无
SendVelNEDNoYaw(northvel=0, eastvel=0, downvel=0)¶
功能说明:发送NED坐标系下的速度指令(不包含偏航角速度) 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| northvel | None | 否 | 0 | NED坐标系下北方向速度 |
| eastvel | None | 否 | 0 | NED坐标系下东方向速度 |
| downvel | None | 否 | 0 | NED坐标系下Down方向速度 |
返回值 (Returns):无 异常 (Raises):无
MultiCopterDll 类¶
多旋翼无人机仿真模型加载类,用于在RflySim仿真环境中加载多旋翼无人机模型并完成仿真初始化配置。
__init__(CopterID=1, ClassID=-1, MapName="Grasslands", ip="127.0.0.1", LocX=0, LocY=0, Yaw=0, UdpMode=0, useGPS=False, GpsOrin=[0, 0, 0])¶
功能说明:初始化多旋翼无人机模型实例,在仿真环境中完成无人机模型加载与基础参数配置 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
CopterID |
int |
否 | 1 |
多旋翼无人机的编号,用于区分同一仿真环境中不同的无人机 |
ClassID |
int |
否 | -1 |
无人机类别ID,-1表示使用默认类别配置 |
MapName |
str |
否 | "Grasslands" |
仿真环境使用的地图名称,默认为Grasslands草地地图 |
ip |
str |
否 | "127.0.0.1" |
仿真服务连接的IP地址,本地仿真默认使用本地回环地址 |
LocX |
float |
否 | 0 |
无人机初始位置的东向坐标(X轴) |
LocY |
float |
否 | 0 |
无人机初始位置的北向坐标(Y轴) |
Yaw |
float |
否 | 0 |
无人机初始航向角,单位为度 |
UdpMode |
int |
否 | 0 |
UDP通信模式配置,0为默认模式,可根据通信需求选择不同模式 |
useGPS |
bool |
否 | False |
是否开启GPS仿真,True为开启,False为关闭 |
GpsOrin |
list[float] |
否 | [0, 0, 0] |
GPS传感器相对于无人机机体的偏移量,格式为[x, y, z] |
返回值 (Returns):
MultiCopterDll实例对象
异常 (Raises: 无
示例:
from RflySimSDK.ctrl import MultiCopterDll
# 加载1号多旋翼无人机,开启GPS,初始位置在原点
copter = MultiCopterDll(CopterID=1, useGPS=True, LocX=0, LocY=0)
进阶用法示例¶
展示复杂组合场景(如多类协作、异步控制、批量操作)
import RflySimSDK.ctrl as rfly_ctrl
import threading
# 多无人机批量组网异步控制示例
def batch_vehicle_control(vehicle_configs):
# 1. 批量创建多架无人机
model_loader = rfly_ctrl.ModelLoad()
vehicle_list = []
for config in vehicle_configs:
veh = model_loader.CreateVehicle(config["model_path"], config["init_pos"])
vehicle_list.append(veh)
# 填充模型输入参数列表
sim_ctrl = rfly_ctrl.DllSimCtrlAPI()
sim_ctrl.fillList()
# 发送初始化参数
sim_ctrl.sendInitInParams(config["init_params"])
# 2. 异步更新3D场景可视化,不阻塞控制逻辑
def async_update_visual():
data_3d = rfly_ctrl.Data3D()
while True:
output_buf = model_loader.get3DDataBuf()
model_loader.Updata3Doutput(output_buf)
data_3d.updateUdp()
model_loader.SendUpdate3DMap()
update_thread = threading.Thread(target=async_update_visual, daemon=True)
update_thread.start()
# 3. 多类协作完成异构控制:固定翼+多旋翼同时发送不同格式控制量
rfly_cp = rfly_ctrl.RflySimCP()
for idx, veh in enumerate(vehicle_list):
if veh.type == "multicopter":
# 发送多旋翼扩展双精度控制量
sim_ctrl.sendInCtrlExtDoub(idx, veh.thrust, veh.attitude)
else:
# 发送固定翼整型+浮点型混合控制量
sim_ctrl.sendSILIntFloat(idx, veh.mode, veh.aileron, veh.elevator)
# 同步飞机状态数据
pos = rfly_cp.getPosNED(veh.id)
vel = rfly_cp.getVelNED(veh.id)
rfly_cp.SendSynFull(veh.id, pos, vel, rpy=veh.attitude)
if __name__ == "__main__":
# 配置3架无人机组网任务
configs = [
{"model_path": "copter_x.param", "init_pos": [0,0,0], "init_params": {}},
{"model_path": "plane_a.param", "init_pos": [5,0,0], "init_params": {}},
{"model_path": "copter_y.param", "init_pos": [0,5,0], "init_params": {}}
]
batch_vehicle_control(configs)
注意事项与避坑指南¶
- 参数填充前置要求:调用
DllSimCtrlAPI类的任何控制量发送方法前,必须先调用fillList方法完成参数列表初始化,否则会发送空数据导致仿真异常。 - 3D可视化更新时序:开启自动更新3D场景需要调用
ModelLoad.StartAutUpdate,若自定义异步更新,不要重复调用Send3DData和StartAutUpdate,避免出现数据重复发送导致画面卡顿。 - 位姿状态读取前提:调用
RflySimCP类的getPosNED、getVelNED等状态读取方法前,需要确保已经完成仿真数据同步,否则会读出全零的错误状态数据。 - 批量操作内存管理:批量创建多无人机后,若需要重新加载仿真,需要清空原有实例对象并重新调用
fillList,否则残留的旧参数会混入新控制量导致控制错误。
更新日志¶
2026-03-03: feat:SDK增加IP处理机制,兼容本地版上云2025-12-05: feat: 1.添加综合模型的设置NED位置与速度接口 2.添加distSimCtrlAPI的异步指令执行以及消息缓存区大小2024-09-12: feat:增加发送相对位置的接口2024-09-12: feat:新增SendVelFRD接口2024-09-06: fix:API页面中增加调用关系图2024-09-06: fix:更新API2024-08-31: fix:更新DLL控制库2024-07-26: fix:更新API主页2024-07-24: fix:重构DLL模型相关函数描述介绍2024-07-23: fix:修复bug2024-07-22: fix:修复失效的接口2024-06-18: fix:API格式调整2024-06-12: fix:更新接口注释2024-06-05: fix:更新doxygen生成文档2024-06-05: fix:更新DLLSimCtrlAPI的注释