orbslam2运行于jetson nano平台

ORB_SLAM2 (jetson nano平台)

一 . 安装环境

linux ubuntu 18.04 (jetson nano)

二 . 克隆仓库

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

三. 在安装之前需要安装一些依赖库

1. 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
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库

2. OpenCV

​ 我在这用的是opencv3.3.1

​ 注意:这里的opencv版本问题非常重要,不同的版本号可能会不兼容,会出现各种错误,只能重新编译,可能会花费大量的时间寻找错误和解决问题

3. Eigen3

​ 使用以下命令进行安装

sudo apt-get install libeigen3-dev

4. DBoW2(用于索引图像并将其转换为单词表示形式)

​ 这个库在ORB_SLAM2中的Thirdparty(第三方库)中已经给了,直接编译即可

cd DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make 

5. g2o(用于优化基于图的非线性误差函数)

​ 已在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 

四 . 编译ORB_SLAM2

​ 之前已经克隆过仓库(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_eurocstereo_euroc

这部如果出错了可能是因为路径没添加,参见五(1)

五 . ROS Examples

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  

2 . 运行单目结点(mono)

​ 由于使用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文件路径。

3. 相机标定

使用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 中

4 .运行ORB_SLAM2

启动三个终端

1.启动ros

roscore

2.运行单目结点

cd到usb_cam中的launch文件中执行如下命令来启动摄像头

roslaunch usb_cam-test.launch

3.最终运行

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

你可能感兴趣的:(slam)