Airsim+QGC的微空NxtPX4v2无人机硬件在环仿真
- [问题现象:QGC电机输出无法设置;Airsim HITL时,无人机电机不转](#问题现象:QGC电机输出无法设置;Airsim HITL时,无人机电机不转)
- 解决方案:重编源码
- 其他参数设置
- 效果展示
问题现象:QGC电机输出无法设置;Airsim HITL时,无人机电机不转
在尝试结合无人机硬件和Airsim软件去做硬件在环仿真的时候发现,使用的**NxtPX4v2飞控本身的固件并不完全支持HITL**。
其官网用户手册表明,NxtPX4v2产品已经进入PX4官方硬件支持列表,因此本人首先是从PX4 官方release页面上找了v1.16至v1.18多个版本,先后通过QGC进行固件刷新,但是更新机架为HIL Quadcopter X后总是出现电机(Actuators)的输出无法设置的问题,如下图** 右侧所示的Actuator outputs, 下方是空的**;另外,发送Arm指令时,在** Airsim中无人机的旋翼也不转**,无法起飞。

解决方案:重编源码
顺着NxtPX4v2飞控用户手册找到项目Github源码,拉下源码后, 在PX4-Autopilot/boards/hkust/nxt-dual/default.px4board的末尾,添加一行CONFIG_MODULES_SIMULATION_PWM_OUT_SIM=y,然后在Nxt-FC/PX4-Autopilot目录下执行编译语句make hkust_nxt-dual,生成的.px4文件会放到PX4-Autopilot/build/hkust_nxt-dual_default/hkust_nxt-dual_default.px4
在QGC中选择该文件作为自定义固件,进行升级即可。

其他参数设置
后面本人还遇到的问题是一开始预飞检查会报错,ekf2 missing data 这样的问题,原因是NxtPX4v2 无板载磁力计,SYS_HAS_MAG这个参数默认为0,但是仿真的时候所有传感器数据来源于Airsim,这个参数是可以改为1的。EKF2 中默认是通过vehicle_magnetometer模块读取磁力计数据,进行数据融合,读不到的话就死锁了。
可以用listener estimator_status 1这个命令看一下当前状态,或者QGC的vehicle_setup->参数中看一下相关的设置。
效果展示
Airsim_HITL