linux ubuntu 18.04 (jetson nano)
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
安装前先安装一些依赖
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
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make (尽量不要用make -j,容易卡死,除非CPU性能好)
sudo make install
reference to 下载pangolin库
我在这用的是opencv3.3.1
注意:这里的opencv版本问题非常重要,不同的版本号可能会不兼容,会出现各种错误,只能重新编译,可能会花费大量的时间寻找错误和解决问题
使用以下命令进行安装
sudo apt-get install libeigen3-dev
这个库在ORB_SLAM2中的Thirdparty(第三方库)中已经给了,直接编译即可
cd DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
已在Thirdparty文件夹中给出
安装依赖项
sudo apt-get install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev
qt5-qmake libqglviewer-dev
然后编译安装
cd g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
之前已经克隆过仓库(git clone)
之后执行如下指令:(确保依赖库都已安装)
cd ORB_SLAM2
chmod +x build.sh
./build.sh
会在lib文件夹中生成libORB_SLAM2.so,在Example文件夹中生成可执行文件 mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc 和 stereo_euroc
这部如果出错了可能是因为路径没添加,参见五(1)
将包含Examples / ROS / ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。 打开.bashrc文件并在末尾添加以下行。 用克隆的文件夹ORB_SLAM2替换PATH:
vi ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
由于使用USB摄像头作为图像输入,要先将摄像头接上,再启动usb_cam结点,需要将图像信息作为topic发送出去,ROS官网提供了usb_cam的package代码,从github上下usb_cam的代码,下载链接
安装usb_cam源码
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,之后再打开一终端,运行:
roslaunch usb_cam usb_cam-test.launch
对于来自topic / camera / image_raw运行节点ORB_SLAM2 / Mono的单目输入。需要提供词汇表文件和设置文件。
rosrun ORB_SLAM2 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
这里的PATH_TO_VOCABULARY指的是vocabulary下的.txt文件,PATH_TO_SETTINGS_FILE指的是mono(单目)下的Tum1.yaml文件路径。
使用matlab标定工具也可以,这里我是运行标定程序camera_calibration,标定程序下载地址
rosrun camera_calibration cameracalibrator.py --size 7x5 --square 0.018 image:=/usb_cam/image_raw camera:=/usb_cam
注意:这里有几个参数需要根据自己设定 size 7x5的7x5标定棋盘的内角点数,不是色块数; square 0.018 是色块的大小,单位是米; image:=/usb_cam/image_raw camera:=/usb_cam,可以使用rostopic list查看:
rostopic list
之后会出现一个灰色的摄像头窗口,将事先准备好的棋盘置于摄像头之前移动,要出现摄像头的各个位置
**要求 : **
相机的左侧,右侧,顶部和底部的棋盘格
X栏 - 在视野中左/右
Y栏 - 视野中的顶部/底部
尺寸栏 - 朝向/离开并从相机倾斜
棋盘填满整个视野
棋盘向左,向右,向上和向下倾斜(歪斜)
在每个步骤中,保持棋盘静止,直到图像在校准窗口中突出显示。
移动棋盘时,校准侧栏上的三个条的长度增加,CALIBRATION按钮亮起时,就有足够数据校准,可以点击CALIBRATE查看结果。校准可能需要大概一分钟,等一会,最后点击save,可能有点卡,然后点击upload,数据会自动导入,之后重启摄像头即可完成标定。
之后使用命令找到相机标定的相关参数值,使用如下命令查看标定后的参数
cd .ros
cd camera_calibration
vi head_camera.yaml
将其填进/home/liluodanyu/workspace/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml 中
启动三个终端
roscore
cd到usb_cam中的launch文件中执行如下命令来启动摄像头
roslaunch usb_cam-test.launch
rosrun ORB_SLAM2 Mono /home/xx/workspace/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/xx/workspace/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
路径写自己的路径即可。
over