LabVIEW与Xplane飞行界面数据仿真交互

很多时候,我们使用labview可以和第三方的软件进行交互,可以得到更好的效果。
今天我们分享的,是和外界软件怎么udp通信。
有些同学是做飞行控制的,在做飞行仿真时候,肯定会用到视景仿真。也就是通过屏幕,显示飞机的姿态,经纬度等信息。
一般地,做飞行仿真,如果自己使用unity3d或者unreal的虚拟引擎来做,比较费时间,需要对机场环境建模。
而针对普通的用户,更好的方式,则是使用目前比较流行的3d飞行游戏软件来开发。
像开源的flight gear,或者收费的xplane等,都提供第三方的通信接口,通过udp,可以接收游戏引擎中飞机的基本数据,也可以向游戏引擎发数据,控制飞机姿态和位置。
今天以xplane作为一个实例,讲述labview通过udp显示xplane的数据,并显示在地平仪和电子地图上。
xplane游戏界面如下,做过飞行仿真的同学肯定不陌生在地图上显示的效果如下。
由于地图放大很大,所以呈马赛克状,下图右侧为xplane的飞机姿态,左侧为labview显示的姿态和地图位置(需要看实际效果,可以跳转本文末尾,看视频更佳)
首先,本文使用的版本是xplane11,其他版本操作类似。在交互前,最重要的是进入设置界面进行数据设置。
点击选项卡数据,数据输出。 这里可以勾选要输出的数据。
勾选有4列,第一个显示在座舱,就是飞行时候,数据会显示在飞行界面左上角。第4列是udp输出,勾选后,软件会将勾选的数据通过udp发送出去。
一般的勾选udp就行,但是,第一列显示座舱勾选后,我们会直观看到实际数据是多少,这样udp输出的数据,通过我们二次开发的软件解析,可以对比数据一致性。
记得右下角,勾选 进行网络数据输出。
下图,左上角,就是刚才勾选的座舱显示的数据。
我勾选了速度,姿态,经纬度等。所以都显示出来了。
实际udp外发的时候,也是从上到下,数据依次发送的。
我们解析数据时候,可以和这个对照一下。
现在看下udp 数据结构: 所有数据均以字节形式发送,udp数据开头为“data,”
prolouge 的第五个字节是“内部使用”字节
接下来的 36 个字节是消息
消息的前 4 个字节表示数据元素的索引号,如 x-平面 中的“数据输出”屏幕所示
最后 32 个字节是数据,最多 8 个单精度浮点数
下面是从 x-plane 发送的原始数据字符串:
68 65 84 65 60 18 0 0 0 171 103 81 191 187 243 46 190 103 246 45 67 156 246 26 67 47 231 26 67 0 192 121 196 0 192 121 196 85 254 151 193
让我们分解一下:
68,65,84,65,60 = d,a,t,a,‘’ :这些是 char。我们不关心的第 5 个字节,所以当 将任何数据句子发送到 x-plane,应在此处放置一个 0(零)。
18,0,0,0 = 18 :这是对应于x平面中特定数据集的索引号。在此示例字符串中, 我们正在查看数据集,“18:俯仰,滚动,标题”。在这 4 个字节中,我们唯一需要的字节是第一个字节。其他 3 个将始终为零。第一个字节不需要任何计算,用作整数。
171,103,…,151,193:这 32 个字节构成了需要计算的 8 个单精度浮点数。
向x-plane发送数据句子的格式与从x-plane发送的格式完全相同
发送句子时,请确保序言的第 5 个字节为零 (0)
并非所有数据集都使用所有 8 个浮点数。它们要么只是零,要么是“0,192,121,196”,即 -999。
对于数据集中您不希望更改或希望将控制权“交还”给x-plane的任何项目, 发送值 -999 或 0,192,121,196。 通过上述描述和设置,我们下面可以通过labview来接收udp数据。
程序很简单,udp连接,udp读取,udp关闭。 udp连结,端口为默认的49001,然后收到的数据,前5个是data,丢掉。截取后面的数据。
后面数据,每4个字节为一个数据。虽然有一个数据是序号,但是也是4个字节。
所以,我们强制转换成单精度,得到我们要的数据。
通过对比实际座舱右上角显示的数据,我们通过索引,可以得到想要的数据。
我们会发现有一个数据特别大,那是因为不应该用单精度转化,是参数的id号,可以通过条件结构来筛选需要的信息,不过参数固定的话对我们来说可以不用管。
通过labview编写的地面站软件显示得到如下的效果(动图)。
从软件界面可以清晰看到xplane飞机的俯仰角、横滚角、经纬度、高度,飞机电子地图显示等。
如果需要使用labview控制xplane飞行,则需要使用udp发送。发送时候,格式需要查看xplane的说明。
后面,大家可以自由使用labview获取飞机信息啦。


如何提高灌封胶的抗开裂能力
富士康对苹果有多重要?超出想象
单管共射放大电路原理图解析
高通5G基带解决方案被大量采用,40余款骁龙888终端已投放市场
微软与 OpenAI:携手共创AI新时代
LabVIEW与Xplane飞行界面数据仿真交互
海尔共享空调惊艳亮相 最新迭代空气解决方案获广泛认可
树莓派4b学习笔记
VESD感测型静电消除器-除静电设备新选择
如何理解FPGA的配置状态字寄存器
智米智能马桶盖评测 高性价比的高品质
鸣志电器拟在越南设厂 受中美贸易摩擦影响?
智能手套集成AR/VR技术 纺织综合所打造牙医教具辅助系统
一清创新智慧码头IGV解决方案推动港口无人驾驶加快应用
盘点:2016年十大电池黑科技
在2020中国移动全球合作伙伴大会期间,5G消息产业发展又进一程
安富利电子元件亚洲任命台湾区新总裁
LED 英文词汇汇总
跳表是用来干什么的
针对智能家庭,联想发布智能扫地机器人