1. 硬件准备与系统选型搭建无人机自主导航系统的第一步是选择合适的硬件平台。我推荐使用NUC12Pro作为机载电脑它的体积小巧但性能足够强大能够流畅运行ROS和Ego_planner算法。飞控方面Pixhawk 6C是个不错的选择它支持PX4固件与Mavros的兼容性很好。传感器方面D435i深度相机是个性价比很高的选择它既能提供深度信息又内置IMU非常适合室内环境下的SLAM建图。在实际采购硬件时有几点需要注意首先确保NUC有足够的散热能力因为长时间运行SLAM算法会让CPU负载很高。其次飞控和机载电脑之间的连接要稳定建议使用高质量的USB线缆。D435i相机的安装位置也很关键最好固定在无人机重心附近避免振动影响图像质量。2. 基础环境配置拿到硬件后第一步是给NUC安装Ubuntu系统。我建议使用20.04 LTS版本因为这个版本对ROS Noetic和各类硬件驱动的支持最好。安装过程和我们平时装系统差不多制作启动盘、分区、安装但有几个细节需要注意首先是电源管理设置建议禁用自动休眠避免飞行过程中系统进入休眠状态。其次是网络配置最好设置静态IP方便后续通过SSH远程调试。最后别忘了安装必要的开发工具sudo apt update sudo apt install -y git cmake build-essential对于无人机开发ROS是必不可少的。安装ROS Noetic时我建议使用清华源速度会快很多sudo sh -c . /etc/lsb-release echo deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ lsb_release -cs main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install -y ros-noetic-desktop-full3. 传感器驱动安装D435i相机的驱动安装是个关键步骤这里我分享几个实测有效的技巧。首先安装librealsense SDK时建议选择v2.48.0这个稳定版本git clone -b v2.48.0 https://github.com/IntelRealSense/librealsense cd librealsense在安装依赖时如果遇到网络问题可以尝试更换apt源。编译时记得开启BUILD_EXAMPLES选项这样后面可以方便地测试相机mkdir build cd build cmake ../ -DBUILD_EXAMPLEStrue make -j4 sudo make install安装realsense-ros驱动时版本匹配很重要。我测试过v2.3.1这个版本与SDK的兼容性最好cd ~/catkin_ws/src git clone -b v2.3.1 https://github.com/IntelRealSense/realsense-ros.git git clone https://github.com/pal-robotics/ddynamic_reconfigure.git cd ~/catkin_ws catkin_make相机安装后如果发现图像噪点过多可以尝试关闭结构光roslaunch realsense2_camera rs_camera.launch emitter_enabled:false4. VINS-Fusion视觉惯性里程计视觉惯性里程计是自主导航的核心组件VINS-Fusion是个不错的选择。在安装前需要先准备好依赖项这里有个小技巧可以直接使用Fast-Drone-250项目中提供的3rd_party压缩包里面已经包含了必要的库文件。安装Ceres Solver时记得先安装它的依赖项sudo apt-get install -y liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev对于OpenCV的安装我建议使用3.4.11版本因为VINS-Fusion对这个版本的支持最好。编译时记得开启Release模式mkdir build cd build cmake -D CMAKE_BUILD_TYPERelease -D CMAKE_INSTALL_PREFIX/usr/local .. make -j4 sudo make install安装完VINS-Fusion后可以通过以下命令测试roslaunch realsense2_camera rs_camera.launch rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml5. Fast-Drone-250代码部署Fast-Drone-250是ZJU-FAST-Lab开发的一套非常优秀的无人机自主导航框架。在部署时我建议新建一个专门的工作空间mkdir -p ~/control/src cd ~/control/src git clone https://github.com/ZJU-FAST-Lab/Fast-Drone-250.git编译时可能会遇到一些依赖问题这里分享几个常见问题的解决方法。首先是Eigen版本冲突可以通过以下命令解决sudo apt-get install -y libeigen3-dev如果遇到Gazebo相关错误可以尝试安装这些包sudo apt-get install -y ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control成功编译后可以先在仿真环境中测试source ~/control/devel/setup.bash roslaunch ego_planner single_run_in_sim.launch6. 系统联调与参数优化当所有组件都安装完成后就需要进行系统联调了。这里有几个关键点需要注意首先是时间同步问题建议使用chrony进行时间同步sudo apt-get install -y chrony sudo systemctl enable chrony sudo systemctl start chrony其次是传感器坐标系对齐需要确保D435i的IMU坐标系与Pixhawk的坐标系一致。可以通过修改urdf文件来实现。Ego_planner的参数调优是个经验活我建议先从这些参数开始调整规划器速度限制根据无人机实际性能调整障碍物膨胀半径通常设为无人机半径的1.5倍重规划频率室内环境建议设置在5-10Hz可以通过rviz实时观察规划效果roslaunch ego_planner rviz.launch7. 实际飞行测试在进行实际飞行测试前务必做好安全检查。我的经验是先在室内空旷环境进行低空测试使用安全绳限制无人机高度准备紧急停止方案首次飞行建议使用遥控器作为备份通过以下命令启动roslaunch ego_planner realflight.launch飞行中常见的问题有定位漂移检查VINS-Fusion的参数配置规划轨迹抖动调整Ego_planner的平滑参数控制响应迟缓检查Pixhawk的PID参数记得飞行测试时要记录日志方便后续分析rosbag record -a -O test_flight.bag8. 进阶优化技巧当系统基本运行稳定后可以考虑一些进阶优化。比如使用GPU加速VINS-Fusion的计算这需要安装CUDA和cuDNN。对于Ego_planner可以尝试修改代价函数来适应不同的场景// 在ego_planner_node.cpp中修改 cfg.traj_opt_weights(0) 1.0; // time cost cfg.traj_opt_weights(1) 1.0; // acc cost cfg.traj_opt_weights(2) 0.1; // jerk cost另一个实用的技巧是使用Octomap进行动态环境建模这需要安装额外的包sudo apt-get install -y ros-noetic-octomap-ros ros-noetic-octomap-server在实际项目中我发现合理设置传感器数据频率也很重要。D435i的深度图频率设置在15-30Hz之间通常能取得较好的平衡。