ORB_SLAM2 KITTI数据集测试

本文详细介绍ORB_SLAM2在Ubuntu16.04+ROSkinetic环境下的安装配置流程,包括必备软件安装、Pangolin及OpenCV编译、ROS版本编译等步骤,并演示如何使用USB摄像头进行SLAM测试。

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

首先需要查找ORB_SLAM2 的安装与运行方式,这里不再介绍,百度就可得到大量教程,配置环境是相对复杂的过程,一定要保持耐心。这里贴出一个相对规范的教程:

写在前面:

ros版本和非ros版本都能在同一个文件夹下编译成功,我是个经常看到csdn的消息的人,希望大家遇到安装类型的错误可以给我留言,24小时内一般都会有回复。

首先就不讲怎样安装ros了,(点进去是ros的中文wiki,安装过程很详细),能在网上搜出大量的教程,我的开发环境时虚拟机Ubuntu16.04+ROS kinetic版本。

装ORB-SLAM2

创建ROS工程

  • 使用ROS创建workspace

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
mkdir ORB-SLAM2

  • 添加环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装必备软件

  • 安装git cmake

sudo apt-get install git cmake

  • 安装一些库

sudo apt-get install libblas-dev liblapack-dev

  • 安装Pangolin

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
sudo apt-get install build-essential
cd ~/catkin_ws/ORB-SLAM2
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin

  • 编译安装Pangolin

mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make

  • 安装OpenCV依赖

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

  • 下载OpenCV并解压到Ubuntu,然后进入OpenCV文件夹进行编译安装(其实你如果安装成功了kinetic版本的ros,opencv3.3的版本已经在你系统中了,不需要单独安装。)

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

  • 安装eigen库(注意 请下载3.2.10版本,如果用3.3.x版本可能会造成ORB-SLAM2编译失败,因为eigen3.3.4版本修改了文件目录结构)
  • 下载Eigen,进入到在解压后的Eigen文件夹(例如eigen-eigen-07105f7124f9)下

mkdir build
cd build
cmake ..
make
sudo make install

  • 下载ORB_SLAM2:

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

  • 编译安装

cd ORB_SLAM2
chmod +x build.sh
vim build.sh

把build.sh的make -j改成make(这是为了防止多线程编译出错,对于build_ros.sh文件也是同理,下面就不说了)

  • 运行build.sh

./build.sh

  • 注意坑1:如果在编译构建的过程中出现error:usleep()函数未定义的错误,要到报错误的代码文件里面加上(或者在头文件加也行),笔者加了下面的内容到很多个文件,比较省事的办法是自己写个头文件,把下面的内容复制过去,然后再报错的文件内,逐个添加你新建的头文件就行了:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
  • 修改环境变量(user就是用户的名字,把它改成你自己的路径名字,ORB-SLAM2/Examples/ROS所在的完整路径。)

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/(user)/catkin_ws/ORB-SLAM2/Examples/ROS

这个时候 打开~/.bashrc文件 最末端的时候应该是这个样子:

 

  • 编译安装ROS版本的ORB-SLAM2

cd ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh

  • 注意坑2:如果在编译构建的过程中出现关于boost库的错误,要到/Examples/ROS/ORB-SLAM2/CMakeLists.txt文件下修改 加上 -lboost_system
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
)

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

在ROS中使用usb摄像头跑ORB SLAM2

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make

  • 编译usb_cam

mkdir build
cd build
cmake ..
make

  • 测试一下usb摄像头
    首先开个新的终端,运行roscore(如果显示命令没有找到就说明的你没有source source /opt/ros/indigo/setup.bash)
    在运行该节点之前,需要先配置一下节点参数,打开src/usb_cam-develop/launch文件中的的launch文件,我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1,若想看usb摄像头是哪个端口号,可cd到根目录中的dev文件夹下查看。

ls /dev/video*
cd /home/pan/catkin_ws/src/usb_cam
cd launch
gedit usb_cam-test.launch

将其中的内容替换成(其中/dev/videoX要对应为usb摄像头)

<launch>
  <node name="camera" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="camera" />
    <param name="io_method" value="mmap"/>
    <remap from="/usb_cam/image_raw" to="/camera/image_raw" />
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/camera/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>
  • 开三个终端,依次分别运行

roscore

roslaunch usb_cam usb_cam-test.launch

rosrun ORB_SLAM2 Mono /home/(user)/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user)/catkin_ws/src/ORB_SLAM2/Examples/Monocular/MyCam.yaml 

如果遇到你打开了摄像头,摄像头有数据,但是SLAM系统却提示你,Waiting for images。如下图所示。那是因为你没有在ros_mono.cc中把订阅的话题改成你usb相机或者自带相机发布的topic的名字,一般来说,改成usb_cam就行。修改地方在ros_mono.cc中的下面那个地方,如下图所示。

 

  • 运行时,首先是建图
    为了图像清晰,设置只选前两项。建图时尽量获得更多的特征点。

     

    初始化

     

    建图

     

    建图

  • 觉得生成地图OK之后,可以开启定位模式(把localization勾上)

     

    定位

     



部分内容转载自:
链接:https://www.jianshu.com/p/f39bf76cfc61
 

<think>嗯,用户想在Ubuntu 20.04上运行ORB-SLAM3的数据集,我需要一步步指导他们怎么做。首先,我应该考虑ORB-SLAM3的依赖项。记得之前安装ORB-SLAM2的时候需要安装Pangolin、OpenCV、Eigen这些库,ORB-SLAM3可能也类似。用户可能已经安装了部分依赖,但最好还是列出所有必要的步骤。 接下来是编译ORB-SLAM3。需要从GitHub克隆仓库,然后使用cmake和make进行编译。可能需要注意第三方库的路径是否正确,比如DBoW2和g2o。之前的引用中提到过要设置LD_LIBRARY_PATH,所以用户可能需要修改环境变量,确保运行时能找到这些库。记得在.bashrc里添加导出语句,然后source一下。 然后是关于数据集的部分。用户可能不知道如何准备数据集,比如EuRoC或KITTI。需要指导他们下载数据集并解压到合适的目录。ORB-SLAM3的示例命令可能需要调整数据集路径,用户需要根据实际情况修改。例如,运行单目示例时,要指定词汇文件和配置文件的位置,还有数据集路径。 还有可能遇到依赖版本的问题,比如OpenCV的版本是否兼容。Ubuntu 20.04默认的OpenCV版本可能较高,需要检查ORB-SLAM3是否支持。如果出现错误,可能需要降级或者修改代码。此外,Pangolin的安装也可能有问题,需要确保正确编译安装。 用户还可能遇到环境变量未正确设置的问题,导致程序找不到库文件。这时候需要确认.bashrc中的导出语句是否正确,特别是路径是否匹配实际安装位置。还有执行权限的问题,示例程序可能需要chmod +x来赋予权限。 最后,生成相关问题时,要考虑用户可能遇到的后续问题,比如如何调试、如何适配其他数据集,或者实时运行摄像头数据。这样用户能有一个全面的了解,继续深入使用ORB-SLAM3。</think>### 在Ubuntu 20.04上运行ORB-SLAM3数据集的步骤 #### 1. **安装依赖项** ORB-SLAM3需要以下依赖: - **Pangolin**:用于可视化界面 - **OpenCV**(≥4.4):建议使用4.4以上版本 - **Eigen3**:线性代数库 - **DBoW2和g2o**(ORB-SLAM3自带,需编译) 安装命令: ```bash sudo apt-get install cmake libopencv-dev libeigen3-dev libboost-all-dev ``` #### 2. **编译ORB-SLAM3** ```bash git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod +x build.sh ./build.sh ``` #### 3. **配置环境变量** 在`~/.bashrc`末尾添加以下内容(路径需根据实际安装位置修改): ```bash export LD_LIBRARY_PATH=/path/to/ORB_SLAM3/Thirdparty/DBoW2/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/path/to/ORB_SLAM3/Thirdparty/g2o/lib:$LD_LIBRARY_PATH ``` 执行`source ~/.bashrc`生效[^3]。 #### 4. **准备数据集** 以EuRoC数据集为例: - 下载数据集(如`MH_01_easy`)并解压 - 数据集路径需包含`mav0`文件夹 #### 5. **运行示例** 单目SLAM示例命令: ```bash ./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /path/to/dataset/MH_01_easy/mav0/ cam0 ``` - `ORBvoc.txt`:ORB词典文件 - `EuRoC.yaml`:相机参数配置文件 - 路径需替换为实际数据集路径[^1][^2] ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值