在之前的文章中,我们已经成功在树莓派(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,数值会实时发生变化。