1. 环境准备Ubuntu20.04基础配置在开始配置XTDrone和ORB-SLAM2之前我们需要确保Ubuntu20.04系统的基础环境已经准备就绪。我强烈建议使用全新安装的Ubuntu20.04系统这样可以避免很多因为系统残留配置导致的兼容性问题。实测下来使用虚拟机或物理机都可以但物理机的性能表现会更稳定特别是当需要运行Gazebo仿真时。首先更新系统软件包列表和已安装的软件包sudo apt update sudo apt upgrade -y接下来安装一些基础开发工具sudo apt install -y build-essential cmake git wget curl对于国内用户建议更换apt源为国内镜像以加速下载速度。阿里云和清华大学的镜像源都是不错的选择。更换源后记得再次运行sudo apt update。这里有个小技巧如果你不确定哪些软件包需要更新可以使用apt list --upgradable命令查看可更新的软件包列表。2. XTDrone环境配置全攻略2.1 PX4固件与依赖安装XTDrone的核心是PX4飞控固件我推荐使用PX4 1.13版本这个版本在Ubuntu20.04上表现最为稳定。安装前需要先安装一些必要的依赖sudo apt install -y python3-pip python3-dev python3-numpy pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future这里有个坑需要注意不要混用pip2和pip3安装依赖否则可能会导致版本冲突。我刚开始配置时就因为这个问题浪费了不少时间排查错误。2.2 ROS Noetic安装指南ROS是XTDrone的重要组成部分Ubuntu20.04对应的是ROS Noetic版本。我强烈推荐使用鱼香肉丝的一键安装脚本这个脚本会自动配置国内镜像源大大加快安装速度wget http://fishros.com/install -O fishros . fishros安装完成后记得验证ROS环境是否配置正确source /opt/ros/noetic/setup.bash roscore如果能看到ROS master启动成功的日志说明安装基本没问题。2.3 Gazebo11仿真环境搭建Gazebo是XTDrone的仿真平台我们需要安装Gazebo11版本。以下是安装命令sudo sh -c echo deb http://packages.osrfoundation.org/gazebo/ubuntu-stable lsb_release -cs main /etc/apt/sources.list.d/gazebo-stable.list wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - sudo apt update sudo apt install -y gazebo11 libgazebo11-dev安装完成后建议一并安装以下ROS包这些在后续的仿真中都会用到sudo apt install -y ros-noetic-rviz ros-noetic-robot-state-publisher ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control ros-noetic-moveit2.4 MAVROS配置与优化MAVROS是ROS与PX4飞控通信的桥梁安装命令如下sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh sudo chmod x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh这里有个大坑最后一步安装地理数据集非常耗时而且国内下载速度可能很慢。我的经验是如果下载卡住超过10分钟建议手动下载这三个数据集egm96-5.tar.bz2egm96.zipemm2015.zip下载完成后解压到/usr/share/GeographicLib/目录下即可。3. ORB-SLAM2环境深度配置3.1 OpenCV版本管理技巧ORB-SLAM2对OpenCV版本有严格要求Ubuntu20.04默认安装的是OpenCV4.2这个版本基本可以满足需求。如果你系统中有多个OpenCV版本建议先清理sudo apt purge libopencv* python3-opencv opencv-data sudo apt install -y libopencv-dev python3-opencv验证安装pkg-config --modversion opencv4应该输出4.2.0或类似版本号。3.2 Eigen3的正确安装方式Eigen是ORB-SLAM2依赖的线性代数库推荐安装3.2.10版本sudo apt purge libeigen3-dev sudo rm -rf /usr/include/eigen3 wget https://gitlab.com/libeigen/eigen/-/archive/3.2.10/eigen-3.2.10.tar.gz tar -xvf eigen-3.2.10.tar.gz cd eigen-3.2.10 mkdir build cd build cmake .. make -j$(nproc) sudo make install安装后检查ls /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h如果能看到这个文件说明安装成功。3.3 Pangolin安装与排坑指南Pangolin是ORB-SLAM2的显示工具必须安装0.5版本sudo rm -rf /usr/local/include/pangolin /usr/local/lib/libpangolin* /usr/local/share/pangolin git clone https://gitee.com/mirrors/Pangolin.git -b v0.5 Pangolin-0.5 cd Pangolin-0.5 sudo apt install -y cmake pkg-config libglew-dev libboost-dev libboost-thread-dev mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j$(nproc) sudo make install验证安装pkg-config --modversion pangolin应该输出0.5。4. 系统联调与实战测试4.1 环境变量整合配置为了让XTDrone和ORB-SLAM2能够协同工作需要正确设置环境变量。编辑~/.bashrc文件添加以下内容source ~/catkin_ws/devel/setup.bash source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/catkin_ws/src/ORB_SLAM2/Examples/ROS保存后执行source ~/.bashrc4.2 ORB-SLAM2编译与修改从XTDrone中复制ORB_SLAM2代码到工作空间cp -r ~/XTDrone/sensing/slam/vslam/ORB_SLAM2/ ~/catkin_ws/src/ mkdir ~/catkin_ws/scripts/ cp ~/catkin_ws/src/ORB_SLAM2/xtdrone* ~/catkin_ws/scripts/ cd ~/catkin_ws/src/ORB_SLAM2 chmod x build.sh ./build.sh编译过程中可能会遇到几个常见问题Pangolin与FFmpeg兼容性问题 需要安装FFmpeg 3.4.8wget https://ffmpeg.org/releases/ffmpeg-3.4.8.tar.gz tar -xvf ffmpeg-3.4.8.tar.gz cd ffmpeg-3.4.8 ./configure --prefix/usr/local/ffmpeg-3.4.8 --enable-shared make -j$(nproc) sudo make install echo export LD_LIBRARY_PATH/usr/local/ffmpeg-3.4.8/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrcOpenCV头文件问题 修改ORB_SLAM2代码中的OpenCV头文件引用// 将 #include opencv/cv.h // 改为 #include opencv2/imgproc/imgproc_c.h #include opencv2/highgui/highgui_c.h4.3 联合仿真测试完成所有配置后可以启动联合仿真测试。首先启动PX4仿真roslaunch px4 mavros_posix_sitl.launch然后启动ORB-SLAM2节点rosrun ORB_SLAM2 Stereo ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/Stereo/EuRoC.yaml true在实际测试中我发现无人机的飞行轨迹和ORB-SLAM2的建图结果需要仔细调参才能完美匹配。建议先从简单的直线飞行开始测试逐步增加复杂度。
Ubuntu20.04下XTDrone与ORB-SLAM2实战:从避坑指南到环境联调
1. 环境准备Ubuntu20.04基础配置在开始配置XTDrone和ORB-SLAM2之前我们需要确保Ubuntu20.04系统的基础环境已经准备就绪。我强烈建议使用全新安装的Ubuntu20.04系统这样可以避免很多因为系统残留配置导致的兼容性问题。实测下来使用虚拟机或物理机都可以但物理机的性能表现会更稳定特别是当需要运行Gazebo仿真时。首先更新系统软件包列表和已安装的软件包sudo apt update sudo apt upgrade -y接下来安装一些基础开发工具sudo apt install -y build-essential cmake git wget curl对于国内用户建议更换apt源为国内镜像以加速下载速度。阿里云和清华大学的镜像源都是不错的选择。更换源后记得再次运行sudo apt update。这里有个小技巧如果你不确定哪些软件包需要更新可以使用apt list --upgradable命令查看可更新的软件包列表。2. XTDrone环境配置全攻略2.1 PX4固件与依赖安装XTDrone的核心是PX4飞控固件我推荐使用PX4 1.13版本这个版本在Ubuntu20.04上表现最为稳定。安装前需要先安装一些必要的依赖sudo apt install -y python3-pip python3-dev python3-numpy pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future这里有个坑需要注意不要混用pip2和pip3安装依赖否则可能会导致版本冲突。我刚开始配置时就因为这个问题浪费了不少时间排查错误。2.2 ROS Noetic安装指南ROS是XTDrone的重要组成部分Ubuntu20.04对应的是ROS Noetic版本。我强烈推荐使用鱼香肉丝的一键安装脚本这个脚本会自动配置国内镜像源大大加快安装速度wget http://fishros.com/install -O fishros . fishros安装完成后记得验证ROS环境是否配置正确source /opt/ros/noetic/setup.bash roscore如果能看到ROS master启动成功的日志说明安装基本没问题。2.3 Gazebo11仿真环境搭建Gazebo是XTDrone的仿真平台我们需要安装Gazebo11版本。以下是安装命令sudo sh -c echo deb http://packages.osrfoundation.org/gazebo/ubuntu-stable lsb_release -cs main /etc/apt/sources.list.d/gazebo-stable.list wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - sudo apt update sudo apt install -y gazebo11 libgazebo11-dev安装完成后建议一并安装以下ROS包这些在后续的仿真中都会用到sudo apt install -y ros-noetic-rviz ros-noetic-robot-state-publisher ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control ros-noetic-moveit2.4 MAVROS配置与优化MAVROS是ROS与PX4飞控通信的桥梁安装命令如下sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh sudo chmod x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh这里有个大坑最后一步安装地理数据集非常耗时而且国内下载速度可能很慢。我的经验是如果下载卡住超过10分钟建议手动下载这三个数据集egm96-5.tar.bz2egm96.zipemm2015.zip下载完成后解压到/usr/share/GeographicLib/目录下即可。3. ORB-SLAM2环境深度配置3.1 OpenCV版本管理技巧ORB-SLAM2对OpenCV版本有严格要求Ubuntu20.04默认安装的是OpenCV4.2这个版本基本可以满足需求。如果你系统中有多个OpenCV版本建议先清理sudo apt purge libopencv* python3-opencv opencv-data sudo apt install -y libopencv-dev python3-opencv验证安装pkg-config --modversion opencv4应该输出4.2.0或类似版本号。3.2 Eigen3的正确安装方式Eigen是ORB-SLAM2依赖的线性代数库推荐安装3.2.10版本sudo apt purge libeigen3-dev sudo rm -rf /usr/include/eigen3 wget https://gitlab.com/libeigen/eigen/-/archive/3.2.10/eigen-3.2.10.tar.gz tar -xvf eigen-3.2.10.tar.gz cd eigen-3.2.10 mkdir build cd build cmake .. make -j$(nproc) sudo make install安装后检查ls /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h如果能看到这个文件说明安装成功。3.3 Pangolin安装与排坑指南Pangolin是ORB-SLAM2的显示工具必须安装0.5版本sudo rm -rf /usr/local/include/pangolin /usr/local/lib/libpangolin* /usr/local/share/pangolin git clone https://gitee.com/mirrors/Pangolin.git -b v0.5 Pangolin-0.5 cd Pangolin-0.5 sudo apt install -y cmake pkg-config libglew-dev libboost-dev libboost-thread-dev mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j$(nproc) sudo make install验证安装pkg-config --modversion pangolin应该输出0.5。4. 系统联调与实战测试4.1 环境变量整合配置为了让XTDrone和ORB-SLAM2能够协同工作需要正确设置环境变量。编辑~/.bashrc文件添加以下内容source ~/catkin_ws/devel/setup.bash source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/catkin_ws/src/ORB_SLAM2/Examples/ROS保存后执行source ~/.bashrc4.2 ORB-SLAM2编译与修改从XTDrone中复制ORB_SLAM2代码到工作空间cp -r ~/XTDrone/sensing/slam/vslam/ORB_SLAM2/ ~/catkin_ws/src/ mkdir ~/catkin_ws/scripts/ cp ~/catkin_ws/src/ORB_SLAM2/xtdrone* ~/catkin_ws/scripts/ cd ~/catkin_ws/src/ORB_SLAM2 chmod x build.sh ./build.sh编译过程中可能会遇到几个常见问题Pangolin与FFmpeg兼容性问题 需要安装FFmpeg 3.4.8wget https://ffmpeg.org/releases/ffmpeg-3.4.8.tar.gz tar -xvf ffmpeg-3.4.8.tar.gz cd ffmpeg-3.4.8 ./configure --prefix/usr/local/ffmpeg-3.4.8 --enable-shared make -j$(nproc) sudo make install echo export LD_LIBRARY_PATH/usr/local/ffmpeg-3.4.8/lib:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrcOpenCV头文件问题 修改ORB_SLAM2代码中的OpenCV头文件引用// 将 #include opencv/cv.h // 改为 #include opencv2/imgproc/imgproc_c.h #include opencv2/highgui/highgui_c.h4.3 联合仿真测试完成所有配置后可以启动联合仿真测试。首先启动PX4仿真roslaunch px4 mavros_posix_sitl.launch然后启动ORB-SLAM2节点rosrun ORB_SLAM2 Stereo ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/Stereo/EuRoC.yaml true在实际测试中我发现无人机的飞行轨迹和ORB-SLAM2的建图结果需要仔细调参才能完美匹配。建议先从简单的直线飞行开始测试逐步增加复杂度。