在之前的文章中,我们已经成功在树莓派(ubuntu mate 18.04)上部署了T265的追踪摄像头。本文将利用MAVROS协议,将T265测量的位姿信息发送给px4固件,实现室内室外无GPS情况下的视觉定位。

0.预操作

前提是树莓派中已经安装了如下组件:

  • T265驱动和相应的ROS驱动
  • ROS系统
  • MAVROS包
  • 树莓派已经通过usb或者串口和飞控硬件链接
  • 注意安装位置,可以查看T265的官方文档,了解默认的坐标。安装在飞机上时,镜头正对着地面即可不调整飞机和摄像头的坐标位置。

1.视觉里程计介绍(VIO)

VIO是一种用来估计移动物体速度和3D位置(局部位置和姿态)的计算机视觉技术。通常用于在GPS信号缺失或者不可靠的情况下的导航(例如在室内或者在桥下飞行)。
VIO采用视觉里程计(Visual Odometry),通过相机的图像以及结合设备的IMU的惯性测量结果,去估计设备的位置。
本文介绍PX4以及机载电脑如何设置VIO。本文介绍的方法是通过ROS将VIO的信息传输给PX4,PX4本身不在乎接收到的里程信息是从何处传来的。

2.安装中介包

T265本身带IMU,可以实时获取机身在三维空间的坐标已经高度和速度信息,将它获取的数据发布给px4的飞行控制器,飞控可以根据这些信息进入position模式(定点)。
中介包有两个,安装自己需要的就行

  • PX4官方写的VIO:https://github.com/Auterion/VIO
  • APM写的t265_to_mavros:https://github.com/thien94/vision_to_mavros

3.PX4固件调参

连接QGC地面站,关于地面站的介绍见这篇文章

Parameter Setting for External Position Estimation
EKF2_AID_MASK Set vision position fusion, vision velocity fusion, vision yaw fusion and external vision rotation accoring to your desired fusion model.
EKF2_HGT_MODE Set to Vision to use the vision a primary source for altitude estimation.
EKF2_EV_DELAY Set to the difference between the timestamp of the measurement and the "actual" capture time. For more information see below.
EKF2_EV_POS_X, EKF2_EV_POS_Y, EKF2_EV_POS_Z Set the position of the vision sensor with respect to the vehicles body frame.

如果被正确配置,通过QGC地面站中的ANYLAZE中的ODOMETRY中查看实时获取的信息。
也可以通过MAVROS发布的ROS节点查看信息

rostopic echo vision_pose/pose

这个时候移动T265,数值会实时发生变化。