避坑指南:在Ubuntu 20.04上用XTDrone跑通ORB-SLAM3仿真,我踩过的那些编译坑
避坑指南Ubuntu 20.04下XTDrone与ORB-SLAM3仿真的深度排雷手册当你在Ubuntu 20.04上尝试用XTDrone运行ORB-SLAM3仿真时可能会遇到各种棘手的编译错误和环境配置问题。本文将从实战角度出发分享我在这一过程中踩过的坑以及如何系统性地解决这些问题。1. 环境准备与依赖管理在开始之前确保你的系统满足以下基本要求操作系统Ubuntu 20.04 LTS推荐纯净安装ROS版本Noetic官方推荐PX4版本1.13.x与XTDrone兼容1.1 关键依赖安装虽然XTDrone提供了一键安装脚本但有些依赖仍需特别注意# 基础编译工具 sudo apt-get install -y build-essential cmake git # 图像处理相关 sudo apt-get install -y libopencv-dev libeigen3-dev libglew-dev # Python绑定 sudo apt-get install -y python3-dev python3-numpy注意OpenCV版本冲突是常见问题建议使用ROS Noetic默认的OpenCV 4.21.2 Pangolin的正确安装方式Pangolin是ORB-SLAM3的可视化工具版本选择至关重要# 推荐使用0.6版本 git clone -b v0.6 https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake -DCPP11_NO_BOOST1 .. make -j$(nproc) sudo make install验证安装是否成功cd ../examples/HelloPangolin mkdir build cd build cmake .. make ./HelloPangolin如果看到旋转的立方体说明安装正确。2. ORB-SLAM3源码适配与编译2.1 源码获取与XTDrone适配cd ~/catkin_ws/src git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git从XTDrone复制适配文件cp ~/XTDrone/sensing/slam/vslam/ORB_SLAM3/Examples_old/Stereo/px4_sitl.yaml ~/catkin_ws/src/ORB_SLAM3/Examples_old/Stereo/ cp ~/XTDrone/sensing/slam/vslam/ORB_SLAM3/Examples_old/Stereo-Inertial/px4_sitl.yaml ~/catkin_ws/src/ORB_SLAM3/Examples_old/Stereo-Inertial/ cp ~/XTDrone/sensing/slam/vslam/ORB_SLAM3/xtdrone* ~/catkin_ws/scripts/2.2 关键文件修改CMakeLists.txt修改要点将所有find_package(OpenCV)中的版本检查改为4.2将C标准从11改为14cd ~/catkin_ws/src/ORB_SLAM3 sed -i s/11/14/g CMakeLists.txt sed -i s/11/14/g Thirdparty/DBoW2/CMakeLists.txt sed -i s/11/14/g Thirdparty/g2o/CMakeLists.txt sed -i s/11/14/g Thirdparty/Sophus/CMakeLists.txtbuild_ros.sh修改# 将Examples改为Examples_old sed -i s/Examples/Examples_old/g build_ros.sh3. 常见编译错误及解决方案3.1 Catch2相关错误错误信息示例fatal error: catch2/catch.hpp: No such file or directory解决方案git clone https://github.com/catchorg/Catch2.git cd Catch2 mkdir build cd build cmake .. make -j$(nproc) sudo make install3.2 Sophus头文件缺失错误信息fatal error: sophus/se3.hpp: No such file or directory解决方法cd ~/catkin_ws/src/ORB_SLAM3/Thirdparty/Sophus mkdir build cd build cmake .. make -j$(nproc) sudo make install3.3 slots_reference未声明错误信息error: slots_reference was not declared in this scope这通常是由于C标准版本不匹配导致解决方案已在2.2节中说明将C11改为C14。4. 运行时问题排查4.1 话题连接失败当ORB-SLAM3运行但没有显示图像waiting for images时通常是话题连接问题。诊断步骤检查话题是否发布rostopic list | grep stereo_camera使用rqt_graph可视化节点连接rqt_graph修改xtdrone_run_orbslam_stereo.sh中的话题映射# 错误格式 /camera/left/image_raw:/_/stereo_camera/left/image_raw # 正确格式 /camera/left/image_raw:/$1_$2/stereo_camera/left/image_raw4.2 环境变量设置确保将ORB_SLAM3添加到ROS_PACKAGE_PATHecho export ROS_PACKAGE_PATH\$ROS_PACKAGE_PATH:~/catkin_ws/src/ORB_SLAM3/Examples_old/ROS ~/.bashrc source ~/.bashrc5. 性能优化与调试技巧5.1 编译优化在编译时使用Release模式可以显著提高性能# 修改build_ros.sh cmake .. -DROS_BUILD_TYPERelease5.2 可视化调试工具推荐使用以下工具进行调试rqt查看话题和节点rviz可视化SLAM结果plotjuggler分析传感器数据5.3 内存管理ORB-SLAM3对内存要求较高可以通过以下方式优化关闭不必要的可视化调整ORB特征点数量修改配置文件使用轻量级Gazebo模型6. 进阶配置与扩展6.1 多传感器融合要启用IMU数据使用Stereo-Inertial模式sh xtdrone_run_orbslam_stereo_inertial.sh iris 06.2 自定义特征提取参数在px4_sitl.yaml中调整ORB参数# ORB特征点数量 ORBextractor.nFeatures: 1000 # 金字塔层数 ORBextractor.nLevels: 8 # 尺度因子 ORBextractor.scaleFactor: 1.26.3 回环检测优化调整Vocabulary文件路径rosrun ORB_SLAM3 Stereo ~/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt ...可以考虑使用更大的词汇表文件提高识别率。7. 系统集成与实战建议在实际项目中我总结了以下几点经验版本控制使用git管理所有修改方便回退增量测试每完成一个步骤就测试相关功能日志记录详细记录每次错误和解决方案备份配置成功配置后备份整个工作空间对于团队协作建议使用Docker容器统一开发环境编写自动化测试脚本建立常见问题知识库遇到棘手问题时可以检查系统日志/var/log/syslog使用gdb调试核心转储在ROS社区寻求帮助
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2460179.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!