|
| | __init__ (self, 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]) |
| | 这是类的构造函数,用于初始化 ModelLoad 类的实例。参数的详细含义参考 Bat脚本使用参考
|
| | CreateVehicle (self, 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]) |
| | 初始化并配置载具模型。参数的详细含义参考 Bat脚本使用参考
|
| | Updata3Doutput (self) |
| | 用于更新载具模型仿真输出,读取车辆当前的运动状态数据并更新到 out3Ddata 和 outHilData,并与地形数据进行交互。
|
| | SendUpdate3DMap (self, isSetSpeed=False) |
| | 用于向 RflySim3D发送命令,更新 3D 地图或设置RflySim3D仿真速度。
|
| | get3DDataBuf (self) |
| | 提取载具模型的 3D 仿真数据out3Dvect并将其打包,以便通过网络转发给RflySim3D
|
| | Send3DData (self) |
| | 将打包的 3D 数据通过 UDP 发送到端口 20010,用于与 RflySim3D 进行通信
|
| | SendSimData (self) |
| | 将与 Send3DData 同样的 3D 数据发送到端口 30100,用于仿真数据的传输
|
| | SendHILData (self) |
| | 发送硬件在环(HIL)仿真数据到指定的端口,通常用于与飞控系统交互
|
| | SendOutCopter (self) |
| | 发送仿真数据到30100端口,可用于日志记录
|
| | fillList (self, data, inLen, fill=0) |
| | 填充或裁剪一个列表
|
| | StartAutUpdate (self, UpdateFreq=30, speed=-1) |
| | 用于启动自动更新循环,以指定的频率更新仿真状态。
|
| | StopAutUpdate (self) |
| | 用于停止自动更新循环
|
| | AutUpdateLoop (self) |
| | 自动更新循环的核心逻辑,实现持续的仿真更新、数据发送等功能。
|
| | StartExtCtrl (self) |
| | 用于启动外部控制功能,创建两个用于接收外部控制数据的UDP套接字,并开启两个线程来监听数据。
|
| | StopExtCtrl (self) |
| | 停止外部控制,关闭UDP套接字并终止接收线程。
|
| | Recv20100Loop (self) |
| | 线程的主循环,用于接收20100端口的数据并根据控制模式执行相应的控制命令。
|
| | Recv30100Loop (self) |
| | 线程的主循环,用于接收30100端口的数据并根据不同的数据类型执行相应处理。
|
| | DllDestroyModel (self) |
| | 销毁当前加载的仿真模型
|
| | DllReInitModel (self) |
| | 重新初始化仿真模型。
|
| | DllInputSILs (self, in_ints=[0] *8, in_floats=[0] *20) |
| | 将综合模型系统仿真输入数据传递给 DLL,参见 sendSILIntFloat
|
| | DllInputColls (self, in_floats_collision=[0] *20) |
| | 将碰撞数据传递给 DLL,用于仿真中处理碰撞情况,参见 sendColl20d
|
| | DllTerrainIn15d (self, terrain15d=[0] *15) |
| | 输入三维场景的地形高度数据给DLL,用于仿真环境的地形建模,参见 sendTerrIn15d
|
| | DllInitGpsPos (self, gps=[0] *3) |
| | 初始化仿真的 GPS 坐标原点,用于地理位置相关的仿真,参见 sendReGPSOrin
|
| | DllInitPosAngState (self, init_pos_offset=[0, 0, 0], init_ang_offset=[0, 0, 0]) |
| | 初始化位置和姿态状态,用于设置仿真对象的初始位置信息和朝向,参见 sendReSimXyzRPYaw
|
| | DllInputDoubCtrls (self, in_doub_ctrls=[0] *28) |
| | 综合模型外部控制指令输入接口,用于传递 28 维的双精度控制指令数据,参见 sendInDoubCtrls
|
| | DllinSIL28d (self, in_doub_ctrls=[0] *28) |
| | 综合模型外部控制指令输入接口,用于传递 28 维的双精度控制指令数据,参见 sendInDoubCtrls
|
| | DllInCtrlExt (self, in_ctrl_ext=[0] *140) |
| | 扩展控制数据,用于支持更高级的控制仿真功能,参见 sendInCtrlExtAll
|
| | DllInFromUE (self, in_from_ue=[0] *32) |
| | 从RflySim3D输入自定义数据到 DLL,用于与外部仿真环境的集成。
|
| | DllInputColls (self, inCll=[0] *20) |
| | 传递 20 维float数组的碰撞数据的接口,用于处理仿真对象之间的碰撞检测。
|
| | DllGetStep0 (self) |
| | 获取仿真的步长,用于确定仿真时间步的大小。如果 DLL 中没有对应的函数,默认返回 0.001
|
| | Dllstep (self) |
| | 执行一次仿真步骤。这是对 DLL 中仿真时间推进的基本调用。
|
| | ModelUpdate (self, step_time) |
| | 手动更新仿真状态的接口
|
| | DlloutVehileInfo60d (self) |
| | 从 DLL 获取 60 维的载具三维信息数据。包括各种飞行器或车辆的状态数据。
|
| | DllOutCopterData (self) |
| | 从 DLL 获取 32 维数据,包括飞行器的传感器读数、状态信息等
|
| | SendPosNED (self, x=0, y=0, z=0, yaw=0) |
| | 发送NED(北东地)地球参考系下的位置控制命令。
|
|
| SendPosLocal (self, x=0, y=0, z=0, yaw=0) |
| | SendVelNED (self, vx=0, vy=0, vz=0, yawRate=0) |
| | 发送NED(北东地)地球参考系下的速度及偏航控制命令。
|
| | SendVelFRD (self, vx=0, vy=0, vz=0, yawRate=0) |
| | 发送FRD(前右下)机体参考系下的速度控制命令。
|
| | SendVelNEDNoYaw (self, northvel=0, eastvel=0, downvel=0) |
| | 发送NED(北东地)地球参考系下的速度及偏航控制命令。
|
|
| | udp_socket |
|
bool | isSendExtData = False |
|
| out3Ddata = Data3D() |
|
list | out3Dvect = [0]*60 |
|
| outHilData = DataHIL() |
|
list | outCopterVect = [0]*32 |
|
int | simSpeed = 1 |
|
| dll = ctypes.CDLL(dll_full_name) |
|
bool | isBroadCast = False |
|
bool | isAutoUpdate = False |
|
| CopterID = CopterID |
|
| ClassID = ClassID |
|
| MapName = MapName |
|
| LocX = LocX |
|
| LocY = LocY |
|
| Yaw = Yaw |
|
| UdpMode = UdpMode |
|
| useGPS = useGPS |
|
list | GpsOrin = [40.1540302,116.2593683,50.0] |
|
| map = UEMapServe.UEMapServe(MapName) |
|
| ue = UE4CtrlAPI.UE4CtrlAPI(ip) |
|
| geo = EarthModel.EarthModel() |
|
| ip = ip |
|
int | port = 20100 + CopterID*2 -1 |
|
int | port2 = 30100 + CopterID*2 -1 |
|
list | InitPos = [self.LocX,self.LocY,terrain_height] |
|
list | InitAng = [0,0,self.Yaw/180*math.pi] |
|
list | GpsOrinInit = [0,0,0] |
|
| t1 = threading.Thread(target=self.AutUpdateLoop, args=()) |
|
int | Interval = 1/UpdateFreq |
|
int | nextTime = time.time() |
|
| lastTime = time.time() |
| | udp_20100 |
|
bool | isRec20100 = True |
|
| t2 = threading.Thread(target=self.Recv20100Loop, args=()) |
| | udp_30100 |
|
bool | isRec30100 = True |
|
| t3 = threading.Thread(target=self.Recv30100Loop, args=()) |
DLL文件外部加载接口类
用于加载和初始化一个指定的 DLL 文件(动态链接库)