避坑指南:在Ubuntu 20.04上搞定XTDrone+ORB-SLAM2,我踩过的那些依赖版本坑
避坑指南在Ubuntu 20.04上搞定XTDroneORB-SLAM2我踩过的那些依赖版本坑当你在Ubuntu 20.04上尝试搭建XTDrone与ORB-SLAM2的开发环境时可能会遇到各种令人抓狂的依赖版本冲突问题。作为一个经历过无数次失败后终于成功配置的开发老手我将分享那些让我熬过无数个不眠之夜的坑以及如何优雅地避开它们。1. 环境配置前的关键准备在开始之前有几个关键决策会直接影响后续的配置成功率Ubuntu版本选择20.04 LTS是最稳定的选择但默认软件仓库中的包版本可能与XTDrone和ORB-SLAM2不兼容ROS版本Noetic是唯一官方支持的选择但它的包生态与早期版本有很大不同开发环境隔离强烈建议使用Docker或至少创建一个新的用户账户来避免污染主系统提示在执行任何系统级安装前先使用timeshift创建系统快照这能让你在搞砸时快速回滚。2. OpenCV 4.2的兼容性陷阱Ubuntu 20.04默认安装的OpenCV 4.2.0看似完美实则暗藏杀机。ORB-SLAM2对OpenCV的调用方式在4.x版本中有重大变化# 检查已安装的OpenCV版本 pkg-config --modversion opencv4如果显示不是4.2.x建议彻底卸载后重新安装# 完全卸载现有OpenCV sudo apt purge libopencv* python3-opencv opencv-data sudo find /usr/local/ -name *opencv* -exec rm -i {} \;关键修改点在于ORB-SLAM2的CMakeLists.txt# 修改前 find_package(OpenCV 3.0 QUIET) # 修改后 find_package(OpenCV 4.2 EXACT REQUIRED)常见错误及解决方案错误类型现象修复方法CV_LOAD_IMAGE_UNCHANGED编译时报未定义替换为cv::IMREAD_UNCHANGEDopencv/cv.h not found头文件缺失改为#include opencv2/imgproc.hpp链接错误undefined reference确保链接了opencv_core等正确版本库3. Pangolin 0.5与Eigen 3.2.10的微妙平衡这对组合就像一对闹别扭的情侣——版本稍有不对就会导致各种奇怪错误。以下是经过验证的安装流程# 先安装正确版本的Eigen 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 -DCMAKE_INSTALL_PREFIX/usr/local/eigen-3.2.10 .. sudo make install接着安装Pangolin 0.5git clone https://gitee.com/mirrors/Pangolin.git -b v0.5 Pangolin-0.5 cd Pangolin-0.5 mkdir build cd build cmake .. -DEIGEN_INCLUDE_DIR/usr/local/eigen-3.2.10/include/eigen3 make -j$(nproc) sudo make install遇到FFmpeg兼容性问题时需要降级安装wget 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 install4. ROS Noetic环境下的特殊处理ROS Noetic带来了一些新的挑战特别是在消息格式和依赖管理方面修改ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt# 添加Noetic特有依赖 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs cv_bridge image_transport tf sensor_msgs geometry_msgs )解决常见的编译错误stl_map.h错误修改include/LoopClosing.h中的类型定义g2o链接错误确保安装了libsuitesparse-dev和libqglviewer-dev环境变量设置echo export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:$HOME/catkin_ws/src/ORB_SLAM2/Examples/ROS ~/.bashrc source ~/.bashrc5. XTDrone与ORB-SLAM2的集成调试当两个系统需要协同工作时会出现一些独特的挑战PX4固件版本选择推荐使用1.13.x版本避免使用过新的版本它们可能引入不兼容的MAVLink消息格式MAVROS配置要点sudo apt install ros-noetic-mavros ros-noetic-mavros-extras wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.shGazebo模型路径问题确保模型文件放在~/.gazebo/models/设置正确的GAZEBO_MODEL_PATH环境变量6. 终极验证与性能调优当一切安装就绪后运行以下测试序列单独测试ORB-SLAM2./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml ~/Datasets/rgbd_dataset_freiburg1_roomXTDrone仿真测试roslaunch px4 mavros_posix_sitl.launch roslaunch xtdrone_run run_with_orbslam2.launch性能优化技巧在ORB_SLAM2的yaml配置文件中调整特征点数量使用rosrun rqt_reconfigure rqt_reconfigure动态调整参数考虑为Pangolin启用硬件加速渲染记住每个硬件配置都可能需要微调这些参数。在我的RTX 3060笔记本上以下设置获得了最佳平衡# ORB参数优化 ORBextractor.nFeatures: 2000 ORBextractor.scaleFactor: 1.2 ORBextractor.nLevels: 8配置完成后终于看到无人机在Gazebo中平稳飞行同时ORB-SLAM2实时构建出环境地图的那一刻之前所有的挫折都变得值得了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2458376.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!