XPlane仅支持10系列及以下版本。
PX4原生固件仅支持v1.3.3及以下版本(下载地址:Release Stable Release v1.13.3 · PX4/PX4-Autopilot · GitHub),更高版本中,已移除对HLAStar(XPlane)机型支持。
QGC仅支持3.5.6及以下版本(下载地址:https://github.com/mavlink/qgroundcontrol/releases/tag/v3.5.6),更高版本已经移除对XPlane仿真支持。
一、PX4配置
1.烧写PX4 v1.13.3版本固件,在机架选项选择HILStar(XPlane)。
2.启动HIL仿真。
3.若需要通过MAVROS控制,则需要额外从TELEM口引出引出RX TX GND 3跟线通过TTL-USB模块连接电脑,因为自带的USB端口在仿真中会被QGC占用。以TELEM1为例,检查TELEM1是否启用,建议将MAV_0_MODE配置为Onboard,以适应传输实时性要求高的场景。
4.配置波特率,此处可设置为57600。
二、XPlane配置
1.打开XPlane,此处以PT60RC机型,郑州新郑机场为起飞机场示例,选择完毕后点击FLY with these options。
2.进入界面后为驾驶员界面,按下shift1~8可切换视角,常用6和8,按下方向键可调整视角位置。
3.通过Setting->Data Input & Output配置数据输入输出。将UDP rate调整到20-50Hz,如果频率过高,最终QGC接收并转发给飞机的传感器数据帧率也会特别高,增加飞机负担,导致TELEM1接出来的数据延时较高。
4.通过Setting->Net Connect配置网络端口。注意电脑需要连接局域网或者外部网络,若IP地址为127.0.0.1会导致数据无法传输。
三、QGC连接XPlane
1.点击组件->HIL Config,在弹出的小窗点击连接,此时可看到飞机正常XPlane模拟的传感器数据后,在QGC上显示出飞机的位置。
测试发现如果勾选了Enable sensor level HIL,无法接收遥控器和mavros的输入,原因暂未知
(至此可通过接入游戏手柄控制XPlane中的飞机)
四.MAVROS连接
1.新建hil_mavros.launch文件,写入如下内容。并将查询到的USB-TTL模块的端口名,写入其中。此处笔者的端口为/dev/ttyUSB0,波特率要与之前对TELEM1设定的保持一致。
<?xml version="1.0"?>
<launch>
<group ns="uav_0">
<arg name="ID" value="0"/>
<arg name="fcu_url" value="/dev/ttyUSB0:57600"/>
<!-- MAVROS -->
<include file="$(find mavros)/launch/px4.launch">
<arg name="gcs_url" value=""/>
<arg name="fcu_url" value="$(arg fcu_url)"/>
<arg name="tgt_system" value="$(eval 1 + arg('ID'))"/>
<arg name="tgt_component" value="1"/>
</include>
</group>
</launch>
2.运行该launch文件,可看见MAVROS成功连接。(此处延时约为160ms)
(至此可通过MAVROS程序控制XPlane中的飞机)