RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
DllSimCtrlAPI类 参考

类集成了调用受控模型的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__()

__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。

成员函数说明

◆ EndTrueDataLoop()

EndTrueDataLoop ( self)

结束真实数据接收的循环

  • 参数
    返回
     End the true data mode
    

◆ fillList()

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()

getTrueDataMsg ( self)

从30100串口监听真是数据,更新Pixhawk状态

  • 参数
    返回
     Start loop to listen True data from 30100 serial data
    
+ 这是这个函数的调用关系图:

◆ InitTrueDataLoop()

InitTrueDataLoop ( self,
TargetCopter = -1 )

初始化真实数据接收机制

  • 参数
    返回
     Initialize UDP True data listen loop from CopterSim through 30100 series ports
    
+ 函数调用图:

◆ sendColl20d()

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()

sendCustomData ( self,
CopterID = 0,
data = [0]*16,
checksum = 123456,
port = 50000,
IP = '127.0.0.1' )

发送一个包含16维double型数据的自定义数据结构到指定的IP和端口,可用于与Simulink通信。

  • sendCustomData
    参数
    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()

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()

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()

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()

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()

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()

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()

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()

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()

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()

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()

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()

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)
    

该类的文档由以下文件生成: