ORB-SLAM2在Ubuntu20上配合ROS编译运行

该文详细介绍了在Ubuntu系统中安装ROS,配置ORB-SLAM2所需依赖,包括Pangolin、Eigen3和opencv的安装步骤,并提供了编译ORB-SLAM2源码的详细过程,包括修改源码以适配opencv4。此外,还给出了测试ORB-SLAM2系统功能的方法。

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


前言

ORB-SLAM2的源码在编译过程中会出现各种问题,现将修改后的源码以及安装说明记录于此。


一、安装ROS

直接使用鱼香ros一行命令安装,非常方便。

wget http://fishros.com/install -O fishros && bash fishros

在这里插入图片描述
输入1后回车
在这里插入图片描述
继续选择1
在这里插入图片描述
然后选择2等待换源,过程中会打印一些信息,大部分是绿色的,如果出现如下图所示的报错,可以按CTRL+C退出该指令,然后重复以上步骤,直到换源成功(打印的都是绿色字样)。
在这里插入图片描述
后面会让你选择ROS版本,我们选择1
在这里插入图片描述
继续选择1
在这里插入图片描述
等待10分钟左右,出现以下信息说明ros安装成功了。
在这里插入图片描述

二、相关依赖包的安装

1.安装编译器

sudo apt-get update
sudo apt-get install  cmake gcc g++ git

第二行命令过程中需要输入y确认安装。

2.安装Pangolin和Eigen3

点击链接下载,将该压缩包解压到主目录下

sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install

安装完成后,可以测试是否安装成功

cd Pangolin
cd examples/HelloPangolin
mkdir build && cd build
cmake ..
make
./HelloPangolin

若出现以下图片,则说明Pangolin安装成功
在这里插入图片描述

下面安装Eigen3

sudo apt-get install libeigen3-dev

参考链接:https://blog.youkuaiyun.com/weixin_56566649/article/details/124355140

3.opencv版本的相关说明

源码作者使用的是opencv3,但是ros-noetic自带的是opencv4,如果用opencv3来编译orb-slam2,在运行作者给的ros节点例程时会出错,所以这里直接使用opencv4来编译orb-slam2。在安装ros时,就已经帮我们安装好了opencv4,所以无需额外安装。由于兼容性问题,源码中需要修改一些函数名,并在cmakelist文件中指明使用opencv4。
参考链接https://blog.youkuaiyun.com/K4762/article/details/105270600
我将修改后的源码放在该链接,提取码1111。

三、编译ORB-SLAM2

在工作目录创建catkin_ws工作空间

mkdir catkin_ws
cd catkin_ws
mkdir src
catkin_make

将下载的包解压到~/catkin_ws/src目录中,并改名为ORB_SLAM2,接着编辑.bashrc文件

sudo nano ~/.bashrc

在该文件底下键入

source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS

按ctrl加s保存,再按ctrl加x退出
然后进入ORB_SLAM2文件夹中打开终端

chmod +x build.sh
./build.sh

编译orb-slam2,成功后继续编译orb-slam2的ros例程

chmod +x build_ros.sh
./build_ros.sh

成功之后可以测试一下,因为需要数据集,下载起来比较麻烦,想测试的可以下载,第一个是不用ros的测试集,第二个是用ros的测试集。
将第一个数据集解压到ORB_SLAM2/data文件夹,并在ORB_SLAM2文件夹中运行如下命令

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

不带ros的整体效果图如下
在这里插入图片描述

接下来演示配合ros运行的例程,打开三个终端,分别运行

roscore
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

注意该测试要将第二个下载链接中的V1_01_easy.bag文件放在ORB_SLAM2文件夹,第二行和第三行命令要在ORB_SLAM2文件夹目录下运行
第三行命令运行后在你没有任何操作时会是暂停状态,只需在该终端下键入空格键即可运行。
带ros的整体效果图如下
在这里插入图片描述


参考链接

http://t.csdn.cn/hjJZM
http://t.csdn.cn/a7IlE
http://t.csdn.cn/9DXZ3

### 配置 ORB-SLAM2ORB-SLAM3 运行环境 要在 Ubuntu 20.04 上成功配置 ORB-SLAM2ORB-SLAM3 并使其与 ROS 实现无缝集成,需遵循以下方法: #### 安装依赖项 首先安装必要的软件包和工具链。这些包括编译器、构建工具以及 OpenCV 等库的支持。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential cmake git libeigen3-dev libsuitesparse-dev \ libopencv-dev python3-catkin-tools ros-noetic-* -y ``` 上述命令会安装 CMake、Eigen 库、SuiteSparse 数学优化库、OpenCV 开发版本以及其他 ROS Noetic 所需的相关组件[^1]。 #### 下载并编译 ORB-SLAM2ORB-SLAM3 克隆官方仓库到本地目录,并按照说明完成源码的下载与编译过程。 对于 **ORB-SLAM2**: ```bash git clone https://github.com/raulmur/ORB_SLAM2.git cd ORB_SLAM2 chmod +x build.sh ./build.sh ``` 而对于 **ORB-SLAM3**, 类似操作适用于此项目结构: ```bash git clone https://github.com/UZI-CVSLAB/orb_slam3_ros.git cd orb_slam3_ros/ catkin_make source devel/setup.bash ``` 注意,在此过程中可能遇到路径设置问题;确认最终生成可执行二进制文件位于指定位置 `PATH/ORB_SLAM3/Examples/ROS` 即表明正确无误。 #### 启动节点和服务 为了验证整个系统的功能正常与否,可以开启多个终端窗口来分别启动不同的服务端口及数据流处理程序。 在一个新的 Terminal 中输入以下指令初始化核心通信框架: ```bash roscore ``` 接着于第二个 Tab 页面加载预先录制好的传感器数据集用于测试目的: ```bash rosbag play MH_01_easy.bag --clock ``` 最后一步是在第三个独立 Session 内调用实际算法逻辑模块本身: ```bash rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml ``` 以上三步共同协作实现了完整的视觉里程计解决方案演示效果展示[^2]。 通过这样的方式不仅完成了基础软硬件平台准备工作还确保了各子系统之间良好交互性能达到预期目标——即支持实时定位映射任务需求满足条件下的高效运作模式转换机制形成闭环控制体系架构设计思路清晰明确易于维护扩展性强等特点优势明显突出表现优异值得推广普及应用价值极高前景广阔未来潜力无限!
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值