PX4实战之旅(五):利用T265实现室内定点飞行
硬件:Intel NUC软件:PX4 1.13.0Ros NeoticMavros视觉惯性里程计测距(VIO)是一种计算机视觉技术,用于估算3D姿态(本地位置和方向),相对于本地起始位置的移动的机体速度。它通常用于在GPS不存在或不可靠的情况下(例如室内或在桥下飞行时)给载具导航。VIO 使用视觉里程计(Visual Odometry)从相机图像中估计机身姿态,并结合机身IMU的惯性测量以校正。
前言
硬件:
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 定点时无人机绕一个点转圈,越转越大。
确保相机的方向与启动文件中的变换匹配。 确保相机方向没有装错
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)