Jetson Nano+ROS(melodic)搭建ORB_SLAM2

1 . 机器环境:

硬件设备:jetson nano b01-2GB

操作系统:ROS-melodic+Ubuntu 18.04

2 . 安装Pangolin库

(1). 安装依赖

sudo apt-get install libpython2.7-dev

(2). 下载0.5版本的Pangolin

链接:https://share.weiyun.com/xZgO8kzA 密码:ym94pw

下载后,解压

(3) . 源码编译

进入Pangolin文件夹,使用如下命令进行编译:

mkdir build
cd build
cmake ..
make
sudo make install

执行cmake .. 可能会出现的问题:

"Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)"或者"CMake Error at CMakeModules/FindGLEW.cmake:51 (MESSAGE): Could not find GLEW"

解决方法:

sudo apt-get install doxygen
sudo apt-get install libglew-dev glew-utils
sudo apt install libglfw3-dev

3 . 安装opencv和eigen3及相关依赖

sudo apt-get install libqglviewer-headers libcxsparse3 libcholmod3 libopencv-dev libeigen3-dev libqt4-dev qt4-qmake libsuitesparse-dev

4 . 安装ORB_SLAM2

(1) . 在工作空间下使用如下命令下载源码(如果下载失败,可以尝试把https改成git)

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

(2). 进入ORB_SLAM2文件夹,找到build.sh文件,双击打开,然后逐步运行里边的命令(我建议是逐步运行,因为2GB的可能处理不过来,很多次都是会卡死),如果觉得自己硬件设备ok的话,也是可以直接运行脚本文件的,运行前先用chmod +x build.sh,逐步手动运行命令如下:

cd Thirdparty/DBow2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

cd Vocabulary/
tar -xf ORBvoc.txt.tar.gz

cd .. #这里是回到ORB_SLAM2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

这里的make我是没有带参数,脚本里边是带了参数的j的,也是因为2GB的原因

可能会出现的问题:

在执行make命令,出现“ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000)”

解决方法:切换到/ORB_SLAM2/include目录下,修改System.h文件,加入头文件#include

(3). 对其中的ROS功能包进行编译

在ORB_SLAM2目录下打开终端,设置路径,指令如下,其中ORB_SLAM_PATH是ORB_SLAM2功能包的所在路径

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
#这里的~/catkin_ws换成自己的功能包路径

重新开启一个终端,修改环境变量./.bashrc文件,在其后面增加一句

source /自己的功能包路径/src/ORB_SLAM2//Examples/ROS/ORB_SLAM2/build/devel/setup.bash --extend

保存退出,然后重新source ./.bashrc刷新下环境变量

接下来就是编译ROS功能包了,这里我们切换到ORB_SLAM2下,有个build_ros.sh文件,还是看各人的硬件水平吧,我建议是逐步运行,需要一键运行脚本的,需要和之前的一样,需要赋予它权限,输入命令,

chmod +x build_ros.h

如果是按照脚本文件逐步运行呢,则是,

cd Examples/ROS/ORB_SLAM2
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make

这里的make我也是没有带参数的,顺带提一下,带了参数j会加快编译,但是也很有可能会出现卡死的现象

可能会出现为问题:

在执行make命令时,出现“CMakeFiles/Stereo.dir/build.make:227:recipe for target '../Stereo' failed”等类似的错误

解决方法:修改该路径下的CMakeLists.txt文件,在set(LIBS)里边加上-lboost_system,部分代码所示:

Jetson Nano+ROS(melodic)搭建ORB_SLAM2_第1张图片

 

5 . 使用usb摄像头实现单目ORB_SLAM

首先需要明确一点的就是,ORB_SLAM2订阅的图像话题是/camera/image_raw,而usb_cam节点发布的图像话题为/usb_cam/image_raw,话题名称不一致需要进行修改一下,有两修改方法:

(1). 直接修改/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/下的ros_mono.cc文件,把里面订阅图像的话题名字改成/usb_cam/image_raw,代码所示如下

Jetson Nano+ROS(melodic)搭建ORB_SLAM2_第2张图片

 修改完后,再重新编译一次,在Examples/ROS/ORB_SLAM2/build目录下直接执行make命令就可以了

(2). 不修改源码,写一个launch文件,通过话题映射,把/usb_cam/image_raw映射成/camera/image_raw,映射话题代码如下

(3). 开启usb摄像头运行节点或者通过launch驱动摄像头后,输入以下命令,开启ORB_SLAM2节点,

rosrun ORB_SLAM2 Mono /home/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml
#同样的,这里的工作空间的路径需要按照自己实际情况进行修改,但是后边的Vocabulary/ORBvoc.txt和Asus.yaml保持不变

(4). 效果展示,成功开启后会出现

Jetson Nano+ROS(melodic)搭建ORB_SLAM2_第3张图片

 结语:第一次写技术博客,有哪里不对的地方,还请各位多多指教,slaute!有问题可以留言,我会回复下去的,踩过的坑有很多0..0,希望可以帮助到你们。

你可能感兴趣的:(人工智能)