从零到一:基于T265与PX4的无人机室内VIO自主飞行系统搭建全攻略

📅 2026/7/15 1:54:55 👁️ 阅读次数 📝 编程学习
从零到一:基于T265与PX4的无人机室内VIO自主飞行系统搭建全攻略

1. 硬件选型与系统架构设计

想要在室内实现无人机的自主飞行,首先得搞定硬件配置。我当初搭建这套系统时,花了整整两周时间对比各种硬件组合,最终确定了这套性价比最高的方案。

核心硬件清单

  • 飞控系统:雷迅V5+(刷写PX4固件),支持MAVLink协议,稳定性经过市场验证
  • 视觉传感器:Intel T265双目相机,6DoF追踪,内置IMU,USB3.0接口
  • 机载计算机:Jetson Xavier NX,6核CPU+384核Volta GPU,15W功耗模式下性能足够
  • 动力系统:T-motor Air 2216电机+1045桨叶组合,静推力达到1.2kg

这套配置最妙的地方在于平衡了性能和成本。T265相机自带视觉惯性里程计(VIO)算法,省去了自己写SLAM的麻烦。NX的算力足够处理图像数据,而PX4飞控的成熟生态让飞行控制变得简单。

系统架构设计有三个关键点需要注意:

  1. 数据流设计:T265→NX处理→MAVROS→PX4飞控,这条链路要确保低延迟
  2. 供电设计:建议给NX单独供电,避免电机干扰导致系统重启
  3. 安装布局:T265要避开螺旋桨气流干扰,我的方案是装在机架正前方

2. 开发环境搭建实战

开发环境搭建是最容易踩坑的环节。我重装了三次系统才摸清门道,下面分享避坑指南。

2.1 系统安装与基础配置

Ubuntu 18.04是必须的,因为ROS Melodic和JetPack 4.6的兼容性最好。推荐使用SD卡镜像法安装,比SDK管理器快得多。安装完成后第一件事:

sudo apt-get update sudo apt upgrade -y

必装工具

  • jtop:实时监控NX运行状态
sudo apt install python3-pip sudo pip3 install jetson-stats
  • SSH远程连接:方便调试
sudo apt install openssh-server sudo systemctl enable ssh

2.2 ROS安装的坑与解决方案

ROS安装最容易卡在rosdep update这一步。经过多次尝试,我发现最稳的方法是:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-get update sudo apt-get install ros-melodic-desktop-full

遇到更新失败时,可以尝试这个脚本:

wget https://gitee.com/ncnynl/rosdep/raw/master/rosdep_update.sh sudo chmod +x ./rosdep_update.sh sudo ./rosdep_update.sh

2.3 MAVROS安装技巧

二进制安装比源码编译省心很多:

sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh

关键检查点:安装完成后运行roscore,再开新终端运行rosrun turtlesim turtlesim_node,能看到小乌龟说明ROS环境正常。

3. 视觉里程计系统集成

T265的集成是整个系统的核心,这里分享几个实战技巧。

3.1 Realsense SDK编译指南

重要提示:编译前千万别插T265!先装依赖:

sudo apt-get install libudev-dev pkg-config libgtk-3-dev libusb-1.0-0-dev libglfw3-dev libssl-dev

然后按步骤编译:

git clone https://github.com/IntelRealSense/librealsense cd librealsense sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ mkdir build && cd build cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true -DFORCE_RSUSB_BACKEND=ON make -j6 sudo make install

测试命令realsense-viewer,能看到T265数据流说明安装成功。

3.2 坐标转换配置

这是最容易被忽视的关键环节。我们需要配置vision_to_mavros包:

mkdir -p ~/vision_ws/src cd ~/vision_ws/src git clone https://github.com/thien94/vision_to_mavros.git catkin_make

关键修改:编辑t265_all_nodes.launch文件,将apm.launch改为px4.launch。这个细节决定数据能否正确传递到PX4。

4. 飞控参数配置与联调

参数配置不当会导致无人机乱飞,这是我用炸机换来的经验。

4.1 必须修改的PX4参数

通过QGroundControl修改以下参数:

MAV_1_CONFIG = TELEM 2 MAV_1_MODE = Onboard SER_TEL2_BAUD = 921 EKF2_AID_MASK = 24 EKF2_HGT_MODE = Vision MAV_ODOM_LP = 1

特别注意:EKF2_AID_MASK=24表示启用视觉位置和姿态估计,但禁用视觉速度估计。如果环境纹理丰富,可以设为280启用全部视觉信息。

4.2 系统联调步骤

按顺序启动三个终端:

  1. 启动T265节点:
roslaunch realsense2_camera rs_t265.launch
  1. 启动MAVROS:
roslaunch mavros px4.launch
  1. 启动坐标转换:
roslaunch vision_to_mavros t265_tf_to_mavros.launch

调试技巧:用rostopic echo mavros/vision_pose/pose查看数据,移动T265时应该能看到坐标变化。如果数据异常,检查TF树是否正确。

5. 飞行测试与性能优化

真正的挑战从这里开始,室内飞行要考虑更多现实因素。

5.1 首次飞行 checklist

  1. 先测试定高模式,确保基础飞行正常
  2. 启动所有ROS节点后,观察QGC的MAVLink Inspector
  3. 切换至定点模式时,保持手放在遥控器上随时准备接管
  4. 首次飞行建议在离地30cm悬停,观察稳定性

5.2 常见问题解决方案

问题1:无人机漂移严重

  • 检查T265安装是否稳固
  • 降低EKF2_POSNE_M_NSE参数值
  • 确保飞行环境纹理丰富

问题2:高度保持不稳

  • 检查EKF2_HGT_MODE是否为Vision
  • 尝试增加T265的相机曝光时间

问题3:数据延迟明显

  • 检查USB连接是否松动
  • 降低图像分辨率(T265支持多种分辨率配置)

经过这些优化,我的无人机最终能在3m×3m的空间内实现±5cm的定位精度,完全满足室内巡检等应用需求。这套系统现在已稳定运行超过200小时,最关键的是理解每个环节的关联性,出现问题时要系统性地排查。