前言

硬件:
Intel NUC
Intel Realsense T265
Pixhawk 2.4.8

软件:
PX4 1.13.0
Ubuntu 20.04
Ros Neotic
Mavros

视觉惯性里程计测距(VIO)是一种计算机视觉技术,用于估算3D姿态(本地位置和方向),相对于本地起始位置的移动的机体速度。 它通常用于在GPS不存在或不可靠的情况下(例如室内或在桥下飞行时)给载具导航。
VIO 使用视觉里程计(Visual Odometry)从相机图像中估计机身姿态,并结合机身IMU的惯性测量以校正。

一、相机安装

将相机连接到机载计算机并将其安装到机架上:
使用提供的线缆连接 T265 和板载计算机。
尽可能使镜头朝下安装相机(默认)。
相机对振动非常敏感;建议使用软安装(例如使用隔振泡沫)。

二、安装Realsense驱动

使用下面的命令安装

sudo apt-get install ros-noetic-realsense2-camera

安装完驱动之后,将T265连接到NUC,启动下面的launch文件测试

roslaunch realsense2_camera demo_t265.launch

启动后会弹出RVIZ,里面可以显示T265的位姿,移动T265可以查看RVIZ显示是否正常。
请添加图片描述

三、安装VIO桥接包

下载

cd ~/catkin_ws/src
git clone https://github.com/Auterion/VIO.git

如果上面网址不存在,也可以在网盘中下载,然后解压放到src下
链接:https://pan.baidu.com/s/1lFRgjZ7rEOrt7hP4Q74M2g?pwd=1hbc
提取码:1hbc
–来自百度网盘超级会员V6的分享
编译

cd ~/catkin_ws
catkin_make

四、配置摄像头方向

如果需要,配置摄像头方向:
如果摄像机的镜头朝下安装(默认设置),则VIO桥接包不需要任何配置。
对于任何其他方向,请在修改bridge_mavros.launch中以下部分

<node pkg="tf" type="static_transform_publisher" name="tf_baseLink_cameraPose"
    args="0 0 0 0 1.5708 0 base_link camera_pose_frame 1000"/>

这是将ROS中摄像头帧camera_pose_frame链接到mavros无人机帧base_link的静态转换。
前三个参数指定解释为从飞控中心到摄像机的 x,y,z方向,以米为单位。 例如,如果摄像头在飞控前方10cm,上方4cm, 则前三个数字将是:[0.1, 0, 0.04 …]
接下来的三个 参数 是旋转弧度(偏航, 俯仰, 横滚)。 所以 [… 0, 1.5708, 0] 是向下俯仰90度(朝向地面)。 直面是 [… 0 0 0]。

PX4中还需要修改下面三个参数。
EKF2_EV_POS_X, EKF2_EV_POS_Y, EKF2_EV_POS_Z 设置T265相对于机体的位置。

五、运行VIO

通过使用适当的启动文件调用 roslaunch 来运行VIO:

cd ~/catkin_ws
source devel/setup.bash 
roslaunch px4_realsense_bridge 启动文件

启动文件可以是下面三个:

bridge_mavros.launch: 同时启动桥接和MAVROS。
bridge.launch: 如果其他组件负责启动 MAVROS(仅启动桥接),则使用此launch文件
bridge_mavros_sitl.launch:用于模拟仿真(启动桥接, MAVROS, SITL)验证与飞控的连接。

我这里使用bridge_mavros.launch测试时发现飞控收不到T265位姿,可能是MAVROS启动失败。于是单独进行启动,就正常了。
先将飞控连上NUC,启动MAVROS

roslaunch mavros px4.launch

出现下面的提示说明连接正常
请添加图片描述

再启动T265桥接

cd ~/catkin_ws
source devel/setup.bash 
roslaunch px4_realsense_bridge bridge.launch

出现下面提示说明启动正常
请添加图片描述
然后执行:

rostopic echo /mavros/odometry/out

正常的话会打印T265的位姿
请添加图片描述

六、通过MAVROS连接地面站

我这里飞控是用USB连接的NUC,USB端口已经被MAVROS使用,不能再连地面站,为了方便我这里通过MAVROS连接地面站

修改px4.launch

roscd mavros
cd launch
gedit px4.launch

将下图位置修改为

<arg name="gcs_url" default="udp-b://@" />

请添加图片描述
设置地面站不要自动连接飞控
请添加图片描述然后打开地面站,启动MAVROS,地面站就自动连接到飞控了,并且和MAVROS不冲突

PX4设置

连接到地面站,修改下面的参数
EKF2_AID_MASK
修改数据来源,将位置和偏航的数据来源修改为视觉,也就是T265
请添加图片描述
修改
EKF2_HGT_MODE
将高度模式设置为视觉
请添加图片描述

然后重启飞控,启动MAVROS和VIO桥接,打开地面站,在MAVLink Inspector可以看到LOCAL_POSITION_NED消息,移动T265可以查看数据是否正常,无人机此时可以切换到Position模式

请添加图片描述数据的坐标系为前右下(FRD),将机架抬离地面,应该看到位置的z坐标减小。 向前移动无人机,应该增加位置的 x 坐标。 向右移动无人机时,应增加 y 坐标。线性速度也是以 FRD 机架参照系表示。

检查无误就可以飞行测试了。

常见问题 / 解决方案

问题: 当无人机飞行时发生漂移/飞走,但是手拿着时位姿不会发生漂移。
如果使用 T265,请尝试将其软安装(soft-mounting,做好减震,此相机对高频振动非常敏感)。

问题: 启用 VIO 定点时无人机绕一个点转圈,越转越大。
确保相机的方向与启动文件中的变换匹配。 确保相机方向没有装错

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐