开源飞控px4固件的使用
px4外部定位数据协议接口
px4固件对外部定位数据(包括三轴姿态角)的引入提供了现成的功能支持,并提供了相应的Mavlink协议接口。理论上,我们只需要将optitrack定位系统中提供的定位信息(x,y,z三轴位置以及姿态角四元素)按照既定的Mavlink协议格式发送给飞行控制器即可实现飞行器的室内定位。
px4提供的引入外部定位信息的Mavlink消息
查看px4的mavlink协议,可以看到138号消息提供了对Motion capture(即optitrack)姿态和位置数据的引入和支持。
经过测试time_usec时间戳和covariance数据不起作用,可直接置零。
需要注意的是,虽然我们可以从optitrack直接拿到姿态四元数和三轴位置xyz,但是optitrack定义的坐标系方向和px4定义的本地坐标系方向有些不同,需要进行坐标系的旋转才可统一。
px4外部定位信息启用
经过上述步骤,我们虽然已经通过mavlink第138号消息将optitrack提供的定位数据成功灌入到px4中,但是在默认状态下px4使用的是GPS的定位数据,这里需要在QGC(px4原生地面站)中修改名为ATT_EXT_HDG_M的参数值,将其参数值从0改为2即可开启该功能模块。
px4外部航向信息的比重调整
需要注意的是,这里只有xyz三轴位置是直接被飞控采用的,外部三轴姿态中的俯仰和横滚是不被采用的(因为大地坐标和optitrack室内空间坐标都在重力场下,俯仰和横滚是一致的),且外部航向是和磁罗盘数据作融合后作为修正项使用的,这里我们需要提高外部航向的比重,毕竟现在航向定义完全取决于室内定位系统。所以需要将ATT_W_