类集成了调用受控模型的DLL接口的方法。 更多...
Public 成员函数 | |
__init__ (self, CopterID=1, ip='127.0.0.1') | |
构造函数初始化无人机控制接口。 | |
fillList (self, data, inLen) | |
根据需要的长度调整数据列表,以确保其长度符合要求。 | |
sendCustomData (self, CopterID=0, data=[0] *16, checksum=123456, port=50000, IP='127.0.0.1') | |
发送一个包含16维double型数据的自定义数据结构到指定的IP和端口,可用于与Simulink通信。 | |
sendSILIntFloat (self, inSILInts=[0] *8, inSILFLoats=[0] *20, copterID=-1) | |
向 DLL 模型的inSILInts and inSILFLoats接口发送包含整数和浮点数组的数据。 | |
sendSILIntDouble (self, inSILInts=[0] *8, inSILDoubs=[0] *20, copterID=-1) | |
向 DLL 模型的inDoubCtrls接口发送包含整数和双精度浮点数组的数据。 | |
sendInDoubCtrls (self, inDoubsCtrls=[0] *28, copterID=-1) | |
发送一个包含双精度浮点数数组的数据包到模型inDoubCtrls接口,通过UDP。 | |
sendInCtrlExt (self, inSILInts=[0] *8, inSILFLoats=[0] *20, iDxNum=1, copterID=-1) | |
通过UDP发送控制信号到指定无人机的模拟器。 | |
sendInCtrlExtDoub (self, inDoubsCtrls=[0] *28, iDxNum=1, copterID=-1, update=True) | |
通过UDP发送double型控制信号到指定无人机的模拟器端口。 | |
sendInCtrlExtAll (self, inDoubsCtrls=[0] *140, copterID=-1) | |
将一个较长的浮点数向量分段并通过UDP发送到多个控制端口。 | |
sendModelInParams (self, Bitmask, InParams, copterID=-1) | |
通过UDP向CopterSim模型发送仿真参数。 | |
sendInitInParams (self, Bitmask=0, InParams=[0] *32, copterID=-1) | |
发送初始化参数至CopterSim | |
sendDynModiParams (self, Bitmask=0, InParams=[0] *64, copterID=-1) | |
发送动态参数修改至指定CopterSim模拟器 | |
sendUE2Coptersim (self, inFromUE=None, copterID=-1) | |
用于处理UE(三维环境)和CopterSim DLL模型之间的通信。 | |
InitTrueDataLoop (self, TargetCopter=-1) | |
初始化真实数据接收机制 | |
EndTrueDataLoop (self) | |
结束真实数据接收的循环 | |
getTrueDataMsg (self) | |
从30100串口监听真是数据,更新Pixhawk状态 | |
sendFloatsColl (self, size=0, velE=[0, 0, 0], ray=[0, 0, 0, 0, 0, 0], posE=[0, 0, 0], copterID=-1) | |
发送与无人机碰撞相关的浮点数据到CopterSim DLL模型的inFloatsCollision接口。 | |
sendColl20d (self, Coll20d=[0] *20, copterID=-1) | |
向CopterSim DLL模型的inCollision20d接口发送20维碰撞数据。 | |
sendTerrIn15d (self, TerrIn15d=[0] *15, copterID=-1) | |
向CopterSim DLL模型的TerrainIn15d接口发送15维地形数据。 | |
Public 属性 | |
ip | |
udp_socket | |
CopterID | |
out3Ddata | |
outCopterVect | |
udp_socketTrue | |
stopFlagTrueData | |
tTrue | |
类集成了调用受控模型的DLL接口的方法。
此类通过UDP协议与无人机模拟器进行通信,控制模拟器的操作。
__init__ | ( | self, | |
CopterID = 1, | |||
ip = '127.0.0.1' ) |
构造函数初始化无人机控制接口。
CopterID | 初始化时设置的无人机ID,默认值为1。 |
ip | 控制器连接的目标IP地址,默认值为'127.0.0.1'。 |
解析 self.ip = ip: 这行代码将ip参数赋值给self.ip。self指的是对象本身,ip是传入的参数。这表示该对象有一个属性ip,用于存储IP地址。 self.udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM): 这行代码创建了一个套接字对象,并将其赋值给self.udp_socket。socket.socket(socket.AF_INET, socket.SOCK_DGRAM)用于创建一个基于IPv4和UDP协议的套接字。 self.udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1): 这行代码设置了套接字对象的一个选项。它允许套接字发送广播消息。 self.CopterID = CopterID: 这行代码将CopterID参数赋值给self.CopterID。这表示该对象有一个属性CopterID,用于存储无人机的ID。
fillList | ( | self, | |
data, | |||
inLen ) |
根据需要的长度调整数据列表,以确保其长度符合要求。
data | 输入的原始数据,可以是numpy数组或列表(维度不定)。 |
inLen | 期望的数据列表维度。 |
此方法接收数组或列表,根据提供的长度参数进行调整。如果数据长度不足,则填充0;如果数据长度过长,则截断。 解析 if isinstance(data, np.ndarray): 首先检查输入的数据data是否为NumPy数组。如果是,将其转换为Python列表。 if isinstance(data, list) and len(data)==inLen 接下来检查数据的类型和长度。如果数据是列表且长度与预期的inLen相等,则直接返回数据。 if isinstance(data, list): 如果数据是列表,则进一步检查数据的长度。如果列表的长度小于inLen,则在列表末尾添加足够的零,使其长度等于inLen。如果列表的长度大于inLen,则仅保留列表的前inLen个元素。 else: 如果数据不是列表,说明数据可能是其他类型(例如整数、浮点数等)。此时将该数据包装成一个列表,并在列表中添加足够的零,使其长度等于inLen。 return data 最后返回处理后的数据。
getTrueDataMsg | ( | self | ) |
InitTrueDataLoop | ( | self, | |
TargetCopter = -1 ) |
sendColl20d | ( | self, | |
Coll20d = [0]*20, | |||
copterID = -1 ) |
向CopterSim DLL模型的inCollision20d接口发送20维碰撞数据。
Coll20d | (list or numpy array, optional): 1到20维的碰撞double数据,默认为20个0。 |
copterID | (int, optional): 指定发送数据的无人机ID。若为非正数,则使用初始化时的无人机ID。 |
此方法封装了无人机的20维碰撞数据,并通过UDP发送到指定的模拟器端口。 struct Ue4Coll20d { int checksum; //校验码1234567880 int CopterID; float inCollision20d[20]; } struct.pack ii20f 功能: 根据提供的碰撞数据和无人机ID,封装数据并通过UDP发送。数据格式化为'ii20f',即两个整数和二十个浮点数。 示例 dll = DllSimCtrlAPI.DllSimCtrlAPI() dll.sendColl20d([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],1)
sendCustomData | ( | self, | |
CopterID = 0, | |||
data = [0]*16, | |||
checksum = 123456, | |||
port = 50000, | |||
IP = '127.0.0.1' ) |
发送一个包含16维double型数据的自定义数据结构到指定的IP和端口,可用于与Simulink通信。
CopterID | (int): 飞行器的标识ID,默认为0。 |
data | (list or numpy.array): 可以是1到16维的向量,自定要发送的数据,默认为16个0。 |
checksum | (int): 用于校验的检验和,默认为123456。 |
port | (int): 目标端口号,默认为50000。 |
IP | (str): 目标IP地址,默认为'127.0.0.1'。 |
Description: 本方法封装了一个结构体 CustomData,该结构体包含一个整型校验和,一个整型飞行器ID和一个包含16个double类型数据的数组。 方法首先确保提供的数据向量长度为16,不足时自动补零。 使用 struct.pack 方法按照 "ii16d" 的格式打包数据,其中 'ii' 表示两个整型数据,'16d' 表示16个双精度浮点数。 然后通过 UDP socket 发送打包后的数据到指定的 IP 地址和端口。 Note: 调用此方法前需确保已创建并配置好 udp_socket 对象。
sendDynModiParams | ( | self, | |
Bitmask = 0, | |||
InParams = [0]*64, | |||
copterID = -1 ) |
发送动态参数修改至指定CopterSim模拟器
Bitmask | (int): 一个32位整数,决定InParams 中的哪些参数将被修改。每个位代表一个不同的参数,如果一个位被设置为1,那么对应的参数将被修改。 |
InParams | (list): 64维包含double的列表,代表要修改的参数。 |
copterID | (int): 发送参数至哪个CopterSim。如果copterID 小于或等于0,参数将被发送到与DLLSimCtrlAPI 实例关联的Copter。 |
描述: 该函数作用为向DLL模型FaultParamAPI.DynModiParams接口传入数据,其中,参数InParams为使用者需要传入DLL模型FaultInParams接口的参数, 数据类型为double;参数Bitmask为64位无符号的位掩码,用来指定传入到DLL模型DynModiParams接口参数生效的位数,比如当Bitmask为0b01时, 传入到DLL模型的DynModiParams参数仅第1位有效。 该函数调用的结构体如下,checksum要求为1234567893。函数预留copterID参数传入位,当函数传入的CopterID大于0时,函数采用传入的 CopterID,否则取对象本身的CopterID。通过30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的InParams进行 长度校正后将结构体相关数据按iiQ64d的格式打包,并通过UDP的方式发出,其中 'ii' 表示2个整型数据(校验位),'Q'表示无符号双长整型,'64d' 表示64个双精度浮点数。 struct PX4DynModiParams{ int checksum;//1234567893 int CopterID; uint64_t Bitmask; double InParams[64]; };
sendFloatsColl | ( | self, | |
size = 0, | |||
velE = [0, 0, 0], | |||
ray = [0, 0, 0, 0, 0, 0], | |||
posE = [0, 0, 0], | |||
copterID = -1 ) |
发送与无人机碰撞相关的浮点数据到CopterSim DLL模型的inFloatsCollision接口。
size | (float): 无人机的尺寸。 |
velE | (list of float): 3维列表,无人机在东北天坐标系中的速度,格式为[x, y, z]。 |
ray | (list of float): 6维列表,表示无人机各方向的射线数据,格式为[前, 后, 左, 右, 上, 下]。 |
posE | (list of float): 3维列表,无人机在东北天坐标系中的位置,格式为[x, y, z]。 |
copterID | (int): 指定发送数据的无人机ID。若为非正数,则使用初始化时的无人机ID。 |
此方法封装了与无人机的碰撞相关数据,并通过UDP发送到指定的模拟器端口。 struct Ue4RayTraceDrone { int checksum;//校验码1234567890 int CopterID; float size; float velE[3]; float ray[6];//前后左右上下 float posE[3]; }struct.pack ii13f 功能: 根据提供的参数,封装数据并通过UDP发送。使用struct.pack格式化数据为'ii13f',即两个整数和十三个浮点数。 示例: dll = DllSimCtrlAPI.DllSimCtrlAPI() dll.sendFloatsColl(1,[0,0,0],[0,0,0,0,0,0],[0,0,0])
sendInCtrlExt | ( | self, | |
inSILInts = [0]*8, | |||
inSILFLoats = [0]*20, | |||
iDxNum = 1, | |||
copterID = -1 ) |
通过UDP发送控制信号到指定无人机的模拟器。
inSILInts | (list 或 numpy.array): 1到8维包含整数的向量。 |
inSILFLoats | (list 或 numpy.array): 1到20维包含浮点数的向量。 |
iDxNum | (int): 指定使用哪一个InCtrlExt端口(1到5之间)。 |
copterID | (int): 目标无人机ID。如果为-1,则发送到自身ID。 |
描述: 该函数作用为向DLL模型inCtrlExt 1-5系列接口中的指定接口传入数据,接口由iDxNum决定,iDxNum=1时表示向DLL模型 inCtrlExt 1接口传入数据,以此类推,数据类型为8维整型+20维单精度浮点型。 原理上,该函数调用的结构体格式与DllInDoubCtrls一致,区别在于结构体中的checksum,inCtrlExt 1-5接口对应结构体的checksum 为1234567800 + iDxNum,另外传入的数据精度及格式也存在区别,该函数传入参数中数据类型为8维整型+20维单精度浮点型,实际发给 DLL模型为28维double型(注意,DLL模型inCtrlExt系列接口默认设置为float型)。 函数内容包括,以1234567800 + iDxNum作为校验和传入checksum,函数预留copterID参数传入位,当函数传入的CopterID 大于0时,函数采用传入的CopterID,否则取对象本身的CopterID。在RflySim平台中,该结构体通过 30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的inSILInts和inSILFLoats进行长度 校正后将结构体相关数据按10i20f的格式打包,并通过UDP的方式发出,其中 '10i' 表示10个整型数据(包括校验和和ID),'20f' 表示 20个单精度浮点数。
sendInCtrlExtAll | ( | self, | |
inDoubsCtrls = [0]*140, | |||
copterID = -1 ) |
将一个较长的浮点数向量分段并通过UDP发送到多个控制端口。
inDoubsCtrls | (list 或 numpy.array): 1到140维包含double的向量。 |
copterID | (int): 目标无人机ID。如果为-1,则发送到self里的ID。 |
描述: 该函数基于sendInCtrlExtDoub()实现,作用为支持DLL模型inCtrlExt 1-5接口数据输入,会将传入的inDoubsCtrls参数按照 长度分段通过inCtrlExt 1-5接口传入到DLL模型,每段最多28个元素,从inCtrlExt 1 接口开始发送。最后一个端口发送时, 设置update为True以立即更新,其他端口设置为False。 具体原理见sendInCtrlExtDoub()函数描述。
sendInCtrlExtDoub | ( | self, | |
inDoubsCtrls = [0]*28, | |||
iDxNum = 1, | |||
copterID = -1, | |||
update = True ) |
通过UDP发送double型控制信号到指定无人机的模拟器端口。
inDoubsCtrls | (list 或 numpy.array): 1到28维包含double的向量。 |
iDxNum | (int): 指定使用哪一个InCtrlExt端口(1到5之间)。 |
copterID | (int): 目标无人机ID。如果为-1,则发送到自身ID。 |
update | (bool): 是否立即更新 |
描述: 该函数作用为向DLL模型inCtrlExt 1-5系列接口中的指定接口传入数据,接口由iDxNum决定,iDxNum=1时表示向DLL模型 inCtrlExt 1接口传入数据,以此类推,数据类型为28维双精度浮点型。该函数与sendInCtrlExt()的主要区别在于传入DLL模型 数据精度与数据格式。 原理上,该函数调用的结构体格式与DllInDoubCtrls一致,区别在于结构体中的checksum,inCtrlExt 1-5接口对应结构体的checksum 为1234567800 + iDxNum,传入inDoubsCtrls参数数据类型为28维double型,该数据会传入到DLL模型的inCtrlExt接口。(注意, DLL模型inCtrlExt系列接口默认设置为float型,在使用该函数给DLL模型传入数据时,需要将DLL模型inCtrlExt接口数据类型修改为double后重新 生成DLL函数才会生效)。 函数内容包括,以1234567800 + iDxNum作为校验和传入checksum,函数预留copterID参数传入位,当函数传入的CopterID 大于0时,函数采用传入的CopterID,否则取对象本身的CopterID。在RflySim平台中,该结构体通过 30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的inDoubsCtrls进行长度 校正后将结构体相关数据按2i28d的格式打包,并通过UDP的方式发出,其中 '2i' 表示2个整型数据(校验和和ID),'28d' 表示28个双精度浮点数。
sendInDoubCtrls | ( | self, | |
inDoubsCtrls = [0]*28, | |||
copterID = -1 ) |
发送一个包含双精度浮点数数组的数据包到模型inDoubCtrls接口,通过UDP。
inDoubsCtrls | (list 或 numpy.array): 1-28维包含双精度浮点数的numpy或list向量。默认为28个零。 |
copterID | (int): 要发送数据的无人机ID。如果为-1,则默认使用当前实例的无人机ID。 |
Description: 该函数作用为向DLL模型的inDoubCtrls传入数据,数据格式为28维double型。 原理上,该函数封装了一个DllInDoubCtrls结构体的调用方法,结构体定义见下方,该结构体对应了DLL模型的inDoubCtrls输入接口。 结构体中包含了整形校验和checksum、飞行器序号CopterID、双精度浮点型数组inDoubCtrls[28]。 函数内容包括:以DllInDoubCtrls结构体的校验和传入checksum,函数预留copterID参数传入位,当函数传入的CopterID大于0时, 函数采用传入的CopterID,否则取对象本身的CopterID。在RflySim平台中,DllInDoubCtrls结构体通过30100+(copterID-1)*2 UDP 端口号通讯(copterID从1开始计数)。将函数传入的inSILDoubs进行长度校正后将结构体相关数据按2i28d的格式打包,并通过UDP的方式发出, 其中 '2i' 表示2个整型数据(校验和和ID),'28d' 表示28个双精度浮点数。 结构体定义: struct DllInDoubCtrls{ int checksum;//校验码1234567897 int CopterID; // 飞机的ID double inDoubCtrls[28];//28维的double型输入 }; 注意: 确保在调用此方法前已创建并适当配置了udp_socket对象,并且设置了self.ip属性。
sendInitInParams | ( | self, | |
Bitmask = 0, | |||
InParams = [0]*32, | |||
copterID = -1 ) |
发送初始化参数至CopterSim
Bitmask | (int, 可选): 一个32位整数,表示要修改的参数。默认值为0。 |
InParams | (list, 可选): 32维包含double的列表,代表初始化参数。默认值为[0]*32。 |
copterID | (int, 可选): 要发送参数的CopterSim的ID。默认值为-1,这意味着参数将发送至存储在实例变量CopterID 中的CopterSimID。 |
描述: 该函数作用为向DLL模型FaultParamAPI.InitInParams接口传入数据,其中,参数InParams为使用者需要传入DLL模型FaultInParams接口的参数, 数据类型为double;参数Bitmask为32位无符号的位掩码,用来指定传入到DLL模型InitInParams接口参数生效的位数,比如当Bitmask为0b01时, 传入到DLL模型的InitInParams参数仅第1位有效。 该函数调用的结构体如下,checksum要求为1234567892。函数预留copterID参数传入位,当函数传入的CopterID大于0时,函数采用传入的 CopterID,否则取对象本身的CopterID。通过30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的InParams进行 长度校正后将结构体相关数据按iI32d的格式打包,并通过UDP的方式发出,其中 'i' 表示1个整型数据(校验位),'I'表示无符号整型,'32d' 表示32个双精度浮点数。 struct PX4ModelInParams{ int checksum;//1234567891 for PX4ModelInParams, and 1234567892 for PX4InitInParams uint32_t Bitmask; double InParams[32]; }; 注意: - 在此实现中,`checkSum` 参数被设置为1234567892。 - `PortNum` 基于`copterID`计算。 - 使用`struct.pack`方法创建`buf`参数。 - 使用`udp_socket.sendto`方法发送数据。
sendModelInParams | ( | self, | |
Bitmask, | |||
InParams, | |||
copterID = -1 ) |
通过UDP向CopterSim模型发送仿真参数。
Bitmask | (uint32): 一个32位无符号的位掩码,指定各种标志或设置。 |
InParams | (list或numpy.array): 32维包含双精度浮点数的列表或数组。 |
copterID | (int): 可选;指定目标无人机ID。如果为-1或未提供,则默认为self.CopterID。 |
描述: 该函数作用为向DLL模型FaultParamAPI.FaultInParams接口传入数据,其中,参数InParams为使用者需要传入DLL模型FaultInParams接口的参数, 数据类型为double;参数Bitmask为32位无符号的位掩码,用来指定传入到DLL模型FaultInParams接口参数生效的位数,比如当Bitmask为0b01时, 传入到DLL模型的FaultInParams参数仅第1位有效。 该函数调用的结构体如下,checksum要求为1234567891。函数预留copterID参数传入位,当函数传入的CopterID大于0时,函数采用传入的 CopterID,否则取对象本身的CopterID。通过30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的InParams进行 长度校正后将结构体相关数据按iI32d的格式打包,并通过UDP的方式发出,其中 'i' 表示1个整型数据(校验位),'I'表示无符号整型,'32d' 表示32个双精度浮点数。 struct PX4ModelInParams{ int checksum;//1234567891 for PX4ModelInParams, and 1234567892 for PX4InitInParams uint32_t Bitmask; double InParams[32]; };
sendSILIntDouble | ( | self, | |
inSILInts = [0]*8, | |||
inSILDoubs = [0]*20, | |||
copterID = -1 ) |
向 DLL 模型的inDoubCtrls接口发送包含整数和双精度浮点数组的数据。
inSILInts | (list): 支持1-8维的numpy或list向量 |
inSILDoubs | (list): 支持1-20维的numpy或list向量 |
copterID | (int): 指定要发送数据的飞行器ID,默认为-1。 |
Description: 该函数作用为向DLL模型的inDoubCtrls接口传入数据,数据格式为前8维整型,后8维双精度浮点型。 原理上,该函数封装了一个DllInDoubCtrls结构体的调用方法,结构体定义见下方,该结构体对应了DLL模型的inDoubCtrls输入接口。 结构体中包含了整形校验和checksum、飞行器序号CopterID、双精度浮点型数组inDoubCtrls[28]。 函数内容包括:以DllInDoubCtrls结构体的校验和传入checksum,函数预留copterID参数传入位,当函数传入的CopterID大于0时, 函数采用传入的CopterID,否则取对象本身的CopterID。在RflySim平台中,DllInDoubCtrls结构体通过 30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的inSILInts和inSILDoubs进行长度 校正后将结构体相关数据按2i28d的格式打包,并通过UDP的方式发出,其中 '2i' 表示2个整型数据(校验和和ID),'28d' 表示28个双精度浮点数。 这里以整型+双精度浮点型数据传入参数实际发出的还是28维double型,这样做的目的是为了兼容PX4SILIntFloat结构体前8维整型后20维 浮点型的数据格式。 结构体定义: struct DllInDoubCtrls{ int checksum;//校验码1234567897 int CopterID; // 飞机的ID double inDoubCtrls[28];//28维的double型输入 }; Note: 调用此方法前需确保已创建并配置好 udp_socket 对象及 self.ip 属性已被设定。
sendSILIntFloat | ( | self, | |
inSILInts = [0]*8, | |||
inSILFLoats = [0]*20, | |||
copterID = -1 ) |
向 DLL 模型的inSILInts and inSILFLoats接口发送包含整数和浮点数组的数据。
inSILInts | (list or numpy.array): 1到8维整数数组,自定数据,默认为8个0。 |
inSILFLoats | (list or numpy.array): 1到20维浮点数数组,自定数据,默认为20个0。 |
copterID | (int): 指定要发送数据的飞行器ID,默认为-1。 |
Description: 该函数作用为向DLL模型的inSILInts和inSILFloats接口传入数据。 原理上,该函数封装了一个PX4SILIntFloat结构体的调用方法,结构体定义见下方,该结构体对应了DLL模型的inSILInts 和inSILFloats输入接口。结构体中包含了整形校验和checksum、飞行器序号CopterID、整型数组inSILInts[8] 和浮点型数组inSILFLoats[16]。 函数内容包括:以PX4SILIntFloat结构体的校验和传入checksum,函数预留copterID参数传入位,当函数传入的CopterID 大于0时,函数采用传入的CopterID,否则取对象本身的CopterID。在RflySim平台中,PX4SILIntFloat结构体通过 30100+(copterID-1)*2 UDP端口号通讯(copterID从1开始计数)。将函数传入的inSILInts和inSILFLoats进行长度 校正后将结构体相关数据按10i20f的格式打包,并通过UDP的方式发出,其中 '10i' 表示10个整型数据(包括校验和和ID),'20f' 表示 20个单精度浮点数。 结构体定义: struct PX4SILIntFloat{ int checksum;//1234567897 int CopterID; int inSILInts[8]; float inSILFLoats[16]; }; Note: 调用此方法前需确保已创建并配置好 udp_socket 对象及 self.ip 属性已被设定。
sendTerrIn15d | ( | self, | |
TerrIn15d = [0]*15, | |||
copterID = -1 ) |
向CopterSim DLL模型的TerrainIn15d接口发送15维地形数据。
TerrIn15d | (list or numpy array, optional): 1到15维地形浮点数据,默认为15个0。 |
copterID | (int, optional): 指定发送数据的无人机ID。若为非正数,则使用初始化时的无人机ID。 |
此方法封装了无人机的15维地形数据,并通过UDP发送到指定的模拟器端口。 功能: 根据提供的地形数据和无人机ID,封装数据并通过UDP发送。数据格式化为'ii15f',即两个整数和十五个浮点数。 示例 dll = DllSimCtrlAPI.DllSimCtrlAPI() dll.sendTerrIn15d([0,0,0,0,0,0,0,0,0,0,0,0,0],1)
sendUE2Coptersim | ( | self, | |
inFromUE = None, | |||
copterID = -1 ) |
用于处理UE(三维环境)和CopterSim DLL模型之间的通信。
inFromUE | (list of float, optional): 32维双精度浮点数列表。RflySim3D发送到CopterSim的数据 |
copterID | (int, optional): 将数据发送到的无人机的ID。如果小于或等于零,则发送到初始化时设置的无人机ID。 |
根据无人机ID通过UDP将结构化数据打包并发送到dll模型。 struct UEToCopterDataD{ int checksum; //1234567899为校验ID int CopterID; //发出本消息的飞机ID double inFromUE[32]; //通过蓝图发出的数据 } struct.pack ii32d 示例: dll = DllSimCtrlAPI.DllSimCtrlAPI() dll.sendUE2Coptersim([0.1]*32,1)