本文详细介绍了乌班图安装ORB-SLAM2的安装和配置,并使用USB摄像头生成特征点云图
目录
1 下载ORB_SLAM2源码
1.1源码下载
https://github.com/raulmur/ORB_SLAM/ 进入官网下载源码
注:这里若使用乌班图下载速度较慢,可以先在windows下载,然后通过filezilla上传到乌班图
1.2 git安装
git clone https://github.com/raulmur/ORB_SLAM2.git
2 安装并编译pangolin
2.1 安装依赖项
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
2.2 从Github下载Pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
如果你这里下载好了,那恭喜你,pangolin可以正常编译,但如果你和笔者一样,一直显示仓库连接不上,那么请先在windows打开
https://github.com/stevenlovegrove/Pangolin 注意一定不能直接克隆选择左边的v0.6版本,0.7版本编译会出错,错误信息如下:
pangolin could not be found because dependency eigen3 could not be found
如果你出现了这个错误信息,那么请按照如下步骤操作:
1、检查/usr/local/include,如果有pangolin相关文件,删除它(我遇到的情况是没有的)。
2、删除Pangolin文件,并克隆0.6版本代码。
3、重新编译安装Pangolin即可
如果是在windows下载好了,那打开filezilla,主机名字写sftp://ip ,然后输入乌班图用户名和密码,点击连接即可
连接好了后将文件直接拖拽到目录下,编译安装
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
笔者在编译时遇到了需要更高版本的cmake的错误,此时需要先卸载原来的cmake,然后再重装:
1.先卸载:
which cmake
cd /usr/bin/
sudo rm cmake
2.然后下载更高版本cmake,可在cmake官网 Download | CMake 下载,我下载的是cmake-3.12.4.tar.gz
3.编译
cd cmake-3.12.4
./configure
make
sudo make install
cmake --version(需要重新开一个终端)
3 安装并编译Eigen
3.1 使用命令安装
sudo apt-get install libeigen3-dev
3.2 从源码安装
Eigen 进入官网下载
3.3 编译
cd eigen-eigen-5a0156e40feb
mkdir build
Cd build
cmake ..&make
sudo make install
然后运行sudo cp -r /usr/local/include/eigen3 /usr/include
pangolin会在/usr/include 目录下进行搜索,导致pangolin安装失败,上面命令可以解决
搜索不到时,CMakeList里面添加头文件
#include_directories("/usr/include/eigen3")
4 编译g2o
cd catkin_ws/src/ORB_SLAM2/Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
5 编译DBoW2
cd catkin_ws/src/ORB_SLAM/Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make
6 编译ORB_SLAM
cd ORB_SLAM2
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
./build_ros.sh
注意:如果你下载的ORB_SLAM2不在catkin_ws/src内,那你需要将整个文件夹全部移入catkin_ws/src内,然后再export
如果以上你没问题了,那么恭喜,你差不多可以使用了,笔者在./build_ros.sh时遇到了如下问题
问题1:
error: ‘usleep’ was not declared in this scope
解决方法:将ORB_SLAM2中的examples和src中所有后缀为.cc的都加上
#include <unistd.h>
问题2:
File "/opt/ros/kinetic/share/ros/core/rosbuild/bin/check_same_directories.py", line 46, in <module>
raise Exception
Exception
CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/private.cmake:102 (message):
[rosbuild] rospack found package "ORB_SLAM2" at "", but the current
directory is "/home/daiwj5/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2".
You should double-check your ROS_PACKAGE_PATH to ensure that packages are
found in the correct precedence order.
Call Stack (most recent call first):
/opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location)
CMakeLists.txt:4 (rosbuild_init)
-- Configuring incomplete, errors occurred!
See also "/home/daiwj5/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/CMakeFiles/CMakeOutput.log".
make: *** No targets specified and no makefile found. Stop.
这个时候需要在~/.bashrc文件末尾添加一行路径,如下(如果放在主目录下的话):
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
保存后运行
source ~/.bashrc
若你还是不能编译,那么往下执行:
sudo rosdep fix-permissions
rosdep update
若你在rosdep update时出现time out的情况时,有个快捷的解决方案是直接用别人编译好的rosdep文件夹。
成功执行./build_ros.sh后,进入ORB_SLAM2/Examples/ROS/ORB_SLAM2内,若出现mono文件,则说明编译orb_slam2成功
7 使用自己的USB摄像头跑ORB_SLAM
7.1 安装并测试摄像头功能包usb_cam
1.插上USB摄像头,检查usb摄像头是否正常连接:
cd /
cd dev
ls
2.下载摄像头功能包
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd~/catkin_ws
catkin_make
3.编译好之后,添加编译好的文件到环境变量:
source devel/setup.bash
4.测试摄像头功能包usb_cam
roscore
roslaunch usb_cam usb_cam-test.launch
7.2 将数据接入orb_slam
cd catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src
gedit ros_mono.cc
将subscribe的话题subscribe("/camera/image_raw",1)中的/camera/image_raw改为/usb_cam/image_raw
然后重新编译ROS的example
cd build
cmake ..
make
7.3 启用orb_slam2中的节点
rosrun ORB_SLAM2 Mono /home/xx/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xx/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
此时就可以正常运行了,效果如下:
参考链接
利用外接usb摄像头跑通ORB SLAM2的记录_点滴记录-CSDN博客
Ubuntu20.04安装Pangolin(视觉SLAM十四讲)_小二儿的饲养员的博客-CSDN博客
error: ‘usleep‘ was not declared in this scope解决办法_出门两双鞋的博客-CSDN博客