ROS进阶学习(七)-- ORB_SLAM2实战(一)

本文详细记录了在Ubuntu 16.04环境下安装与配置ORB_SLAM2的过程,包括摄像头驱动安装、相关依赖库的编译及问题解决方法。适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是重装系统后第一次泡ORB_SLAM2,把遇到的问题以及解决方法记录一下,方便以后查阅,另外很多人学ORB_slam只是跑个DEMO,并没有去实战应用,现在刚好有一些想法和思路会在这几篇博客进行更新。

平台:ubuntu 16.04

ROS:kinetic

opencv 2.4.9.1(Required at leat 2.4.3. Tested with OpenCV 2.4.11 and OpenCV 3.2**)

摄像头:笔记本自带

安装步骤:

一、驱动摄像头显示图像

$ cd ~/camera_ws/src  
$ git clone https://github.com/bosch-ros-pkg/usb_cam  
$ cd ..  
$ catkin_make  
$ source devel/setup.bash  

$ roscore
$ roslaunch usb_cam usb_cam-test.launch  

记录下显示窗口的topic: /usb_cam/image_raw

二 、编译ORB-SLAM2之前的相关依赖项和库安装

1)安装Boost

 $ sudo apt-get install libboost-all-dev  
2)安装g2o

为了编译g2o需要先安装如下三个库

$ sudo apt-get install libblas-dev  
$ sudo apt-get install liblapack-dev  
$ sudo apt-get install libeigen3-dev

$ cd ~/camera_ws/src  
$ git clone https://github.com/RainerKuemmerle/g2o  
$ cd ~/camera_ws/src/g2o  
$ mkdir build   
$ cmake ..  
$ make   
$ sudo make install  

3 ) 安装 Pangolin

$ sudo apt-get install libglew-dev   #安装Glew  
$ sudo apt-get install cmake         #安装CMake  
$ sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev  #安装Boost  
$ sudo apt-get install libpython2.7-dev  #安装Python2'Python3  
下载、编译、安装Pangolin:  
$ cd ~/orbslam_ws/src  
$ git clone https://github.com/stevenlovegrove/Pangolin.git  
$ cd Pangolin  
$ mkdir build  
$ cd build  
$ cmake -DCPP11_NO_BOOST=1 ..  
$ make  
$ sudo make install  

 三、下载ORB_SLAM2  ROS包                                                              

$ cd ~/camera_ws/src  
$ git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2  
$ cd ORB_SLAM2
$ chmod +x build.sh
$ ./build.sh
$ chmod +x build_ros.sh
$ ./build_ros.sh   

然后执行两个 .sh 重新编译

四、部分安装问题解决

1、没有生成Mono : ./build_ros.sh 没编译成功

2、./build_ros.sh 报错,DSO missing ...... 

找到 ORB_SLAM2 下的CMakeLists.txt,修改如下
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system
)

五、运行

1) roscore  

2)  roslaunch usb_cam usb_cam-test.launch  

3) rosrun ORB_SLAM2 Mono  /home/zhuoli/camera_ws//src/ORB_SLAM2/Vocabulary/ORBvoc.txt  /home/zhuoli/camera_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml  








<think>好的,用户遇到了CMake在配置CATKIN_DEVEL_PREFIX和CMAKE_PREFIX_PATH时出现的FindPackage错误,特别是在使用ROS Noetic和ORB-SLAM覆盖工作区的情况下。我需要先理解这些错误通常是由什么引起的,然后给出解决方案。 首先,用户提到的CATKIN_DEVEL_PREFIX和CMAKE_PREFIX_PATH是ROS和catkin构建系统中的关键环境变量。当CMake找不到所需的包时,通常是因为这些路径没有正确设置,或者不同工作区的环境变量相互干扰。例如,覆盖工作区(overlay workspace)的配置不当可能导致CMake无法定位依赖项。 接下来,用户可能按照官方文档配置了工作区,但可能在覆盖工作区的过程中没有正确source setup.bash文件,或者多个工作区的环境变量产生了冲突。特别是在使用ORB-SLAM这样的第三方包时,可能需要特定的依赖项,而ROS Noetic的版本差异也可能导致兼容性问题。 需要检查的几个方面: 1. **环境变量是否正确加载**:用户是否在每次构建前都source了devel/setup.bash?尤其是在使用覆盖工作区时,必须确保环境变量被正确设置。 2. **依赖包是否安装**:ORB-SLAM可能依赖某些ROS包,用户是否安装了所有必需的依赖?例如roscpp、rospy、std_msgs等。 3. **工作区顺序是否正确**:覆盖工作区的顺序会影响包的查找。用户需要确保当前工作区在环境变量中优先级最高。 4. **CMakeLists.txt配置**:检查用户的CMakeLists.txt是否正确声明了依赖项,例如使用find_package和catkin_package命令,并正确包含头文件和库路径。 可能的解决方案步骤: - 确认环境变量是否正确设置,特别是CATKIN_DEVEL_PREFIX和CMAKE_PREFIX_PATH,确保没有冲突。 - 确保所有依赖包已安装,可以通过rosdep install命令安装缺失的依赖。 - 清理并重新构建工作区,有时候旧的构建文件会导致问题。 - 检查CMakeLists.txt中的find_package和catkin_package是否正确配置,例如是否漏掉了某些依赖项或者路径错误。 另外,用户提到的引用[1]中的catkin_package命令示例,需要确认其参数是否正确,特别是CATKIN_DEPENDS和DEPENDS部分是否包含所有必要的包。如果ORB-SLAM需要非catkin的依赖,可能需要使用DEPENDS来指定。 最后,可能需要查看具体的CMake错误信息,以确定是哪个包找不到,从而更有针对性地解决。例如,错误信息可能指出缺少PCL或OpenCV,这时候需要安装相应的ROS包或系统库。</think>针对CMake在ROS Noetic环境中因$CATKIN_DEVEL_PREFIX$和$CMAKE_PREFIX_PATH$配置导致的FindPackage错误,以下是分步解决方案: ### 1. 检查工作区覆盖顺序 当使用覆盖工作区(如ORB-SLAM)时,必须确保当前工作区的环境变量优先级最高。执行: ```bash source devel/setup.bash --extend # 强制继承父工作区路径[^2] ``` 验证路径优先级: ```bash echo $CMAKE_PREFIX_PATH | tr ':' '\n' ``` *输出应以当前工作区的devel路径开头* ### 2. 修复环境变量冲突 若出现路径重复或顺序错误,手动重置环境变量: ```bash unset CMAKE_PREFIX_PATH source /opt/ros/noetic/setup.bash source ./devel/setup.bash ``` ### 3. 验证catkin_package配置 在CMakeLists.txt中必须正确定义依赖关系: ```cmake find_package(catkin REQUIRED COMPONENTS roscpp rospy orbslam # 第三方包需确保已被find_package识别 ) catkin_package( INCLUDE_DIRS include LIBRARIES your_lib CATKIN_DEPENDS roscpp rospy orbslam DEPENDS system_lib ) ``` 若使用非catkin包(如ORB-SLAM),需添加: ```cmake find_package(ORB_SLAM2 REQUIRED) # 确保FindORB_SLAM2.cmake在CMAKE_MODULE_PATH include_directories(${ORB_SLAM2_INCLUDE_DIRS}) ``` ### 4. 重建工作区 执行完全清理后重建: ```bash cd ~/catkin_ws rm -rf build devel catkin_make clean catkin_make -DCMAKE_BUILD_TYPE=Release ``` ### 5. 典型错误处理 若出现`Could not find a package configuration file provided by "xxx"`错误: ```bash # 安装缺失的ROS依赖 rosdep install --from-paths src --ignore-src -r -y # 手动添加第三方库路径 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/opt/ORB_SLAM2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值