软件 | 版本 |
---|---|
Ubuntu | 16.04LTS |
ros | kinetic |
opencv | 3.4.9 |
pangolin | 2.8.12 |
eigen | 3.2 |
ORB_SLAM | 2.8 |
一般g++、gcc、cmake、git这些依赖项应该都是安装过的吧,如果不确定就运行sudo apt-get install +名字进行安装。
从http://eigen.tuxfamily.org/index.php?title=Main_Page下载源码包,然后解压源码包,并进入目录
mkdir build
cd ./build
cmake ..
make
sudo make install
还有就是采用命令安装
sudo apt-get install libeigen3-dev
eigen的文件一般在/usr/include/eigen3/目录下,可以使用下面的 命令查看
sudo updatedb
locate eigen3
从opencv官网下载opencv,(我是从window上下载了之后再拖到Ubuntu下面的,这样快一些)然后解压到ROS工作空间下的src文件夹下
首先安装依赖包
sudo apt-get install build-essential -y
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
然后解压到ROS工作空间下的src文件夹下,就可以在该目录下看到opencv文件夹
然后进入opencv文件夹,新建一个build文件夹,进入build文件夹,右键,在终端中打开,运行命令
cd ~/catkin_ws/src
cd ./opencv
mkdir build
cd ./build
cmake -D CMAKE_BUILD_TYPE=Release -D
make
sudo make install
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
安装之前要先安装依赖项:
sudo apt-get install libglew-dev libpython2.7-dev libboost-dev libboost-thread-dev libboost-filesystem-dev -y
然后就可以安装pangolin了,使用下面命令进行安装
cd ~/catkin_ws/
git clone https://github.com/stevenlovegrove/Pangolin
cd Pangolin
mkdir build
cd ./build
cmake -DCPP11_NO_BOOSR=1 ..
make
sudo make install
sudo apt-get install libboost-all-dev libblas-dev liblapack-dev
cd ~/catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git
使用命令进入~/.bashrc文件,添加下面的语句,然后保存退出,使用source使配置生效
sudo gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
sodo source ~/.bashrc
然后就可以进行编译了,使用下面的命令进行编译,我的电脑性能不高,所以我将build.sh和build_ros.sh文件中的make -j全部换为了make,再执行的编译
cd ~/catkin_ws/src/ORB_SLAM2/
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
./build_ros.sh
只要是没有报错,基本都是配置完成了的,所以现在就可以进行测试了。
当然,这些安装配置完成后,要进入~/catkin_ws/目录进行编译,才能生效
cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载数据集(我下载的是第一个数据集)
下载之后,将文件解压,然后放到相应的位置,最好在ORB_SLAM2文件夹下新建一个专门存储数据集的文件夹,然后将数据集解压到该文件夹下,之后会用到这个路径。
使用下面的命令运行TUM1的数据集测试ORB_SLAM2环境是否搭建完成
cd ~/catkin_ws/src/ORB_SLAM2/
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz
data/rgbd_dataset_freiburg1_xyz是我下载的数据集所在的位置,当然这是在ORB_SLAM2文件夹下。
运行效果:
然后就可以测试用自己的摄像头来实时显示图像构建地图
首先将目录下的ros_mono.cc文件中的camera改为自己设置的camera名称,一般为usb_cam
运行roscore命令开启ROS系统
进入文件系统,ORB_SLAM2文件夹下,右键,在终端中打开,然后运行下面的命令
roscore
cd ~/catkin_ws/src/ORB_SLAM2/
rosrun ORB_SLAM2 Mono ~/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt ~/catkin_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml
点击虚拟机,下面的可移动设备,连接电脑的的摄像头
如果没有下载usb_cam的可以根据我参考博客的第一个里面的usb_cam安装进行下载编译.
总的命令如下:
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
cd usb_cam
mkdir build
cd build
cmake ..
make
在ORB_SLAM2文件夹下新建一个usb_cam_node.launch文件,内容如下:
也可以使用默认的usb_cam-test.launch文件
video0是一般的,可以根据自己的情况进行更改,使用/dev/video*可以查看摄像头的名称是0还是1,自行更改
新建一个终端,运行命令开启摄像头
rosrun usb_cam usb_cam_node
如果没有开启摄像机,就会显示
看到有图像显示的时候,抱着自己的笔记本/手机,缓慢的移动,
注意一定要缓慢移动,如果你运动太快的话,右边的map viewer是不会显示图像运动轨迹的,而且即使你有了运动轨迹,运动过快的话,就不会再提取特征点,简而言之就是右边的图像不会发生变化了
运行效果:
问题解决参考:https://github.com/raulmur/ORB_SLAM2/issues/535
在ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt文件中加入-lboost_system
问题解决,编译成功:
错误:
这个是因为在src文件下,有不是功能包的文件,我之前是将pangolin文件夹放在了这个目录下,所以编译不能用catkin_make,要用catkin_make_isolated,我觉得这样不方便,我就将pangolin文件夹移了位置,放在了~/catkin_ws/目录下,使用catkin_make就不报错了。
ORB_SLAM2编译时报错:
这是因为编译时内存不够,可以先将ORB_SLAM2文件夹下的build.sh和build_ros.sh文件中的make -j都改为make,然后试着编译一下,如果还是不行,就启用交换空间或交换文件(我启用交换文件后,就运行的比较顺畅了,也没报错了)参考:Linux开启swap空间.
运行自己的相机的时候出现问题:
我这个是运行的uvc_camera相机,之后我解决不了这个问题,我就换成了usb_cam相机,就没有报这个错了
usb_cam和Mono一起运行出错:
是因为有一个终端之前运行了打开usb_cam的命令,但是停止命令了之后,没有关闭这个终端,usb_cam没有完全关闭,所以要关闭其他打开过相机的终端
参考博客:https://blog.csdn.net/radiantjeral/article/details/82193370
https://blog.csdn.net/learning_tortosie/article/details/79881165
https://blog.csdn.net/u014709760/article/details/85253525
如有错误请指正!