前言:网上的教程实在是太多,从诸多教程中找到一个适合自己的实属不易。将此记录下来,希望能够帮助到有需要的人。因为时间紧迫,没时间写特别详细的内容,只能引用一些他人的步骤。请见谅!不过经过亲测,过程是完整的。

本机环境:Nvidia Jetson TX2+ROS Melodic+Intel Realsense D435i

注意:ORB_SLAM3是可以不用ROS的,但本篇文章是基于ROS使用的

基本步骤如下:
  1.TX2刷机
  2.下载ROS Melodic
  3.下载Realsense D435i的SDK及ros_realsense
  4.配置ORB_SLAM3环境及编译ORB_SLAM3
  5.相机标定
  6.修改源文件,并运行

1.TX2刷机

详细步骤请参考:https://blog.csdn.net/gls_nuaa/article/details/122050243

2.下载Melodic

详细步骤请参考:https://blog.csdn.net/gls_nuaa/article/details/122101482

3.下载Realsense D435i的SDK及ros_realsense

注意:因为TX2是ARM核,而realsense官网上对应的是x86,所以不能按照官网上来,realsense专门针对于nvidia的开发设置了jetsonhacks,弄完之后更方便啦~
安装SDK步骤如下:

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
git clone https://github.com/jetsonhacks/installRealSenseSDK.git
sudo chmod u+x ./installLibrealsense.sh
./installLibrealsense.sh

能运行realsense-viewer就说明成功了

安装realsense_ros步骤如下:

创建工作空间catkin_ws
git clone https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
cd ~/catkin_ws && catkin_make

报错:在执行catkin_make的时候会报一个这样的错:

-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 4 packages in topological order:
-- ~~  - ddynamic_reconfigure
-- ~~  - realsense2_camera_msgs (plain cmake)
-- ~~  - realsense2_description (plain cmake)
-- ~~  - realsense2_camera (plain cmake)
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100 (message):
  This workspace contains non-catkin packages in it, and catkin cannot build
  a non-homogeneous workspace without isolation.  Try the
  'catkin_make_isolated' command instead.
Call Stack (most recent call first):
  CMakeLists.txt:69 (catkin_workspace)

解决办法(在realsense-ros目录下执行)

git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`

注意:上面realsense_ros一定要从git下clone下来,如果是源码直接导入的执行git checkout亲测无效~
参考:https://blog.csdn.net/wm3vdy88/article/details/109184411

4.配置ORB_SLAM3环境及编译ORB_SLAM3

配置ORB_SLAM3的环境要安装一些东西,包括(opencv3.2, Pangolin, Eigen3, boost)

安装opencv3.2
步骤太多就不写,详细步骤参考,亲测有效:https://blog.csdn.net/prophet_xh/article/details/124113271

编译时opencv3.2时报错:

[ 20%] Generating precomp.hpp.gch/opencv_viz_Release.gch
In file included from /usr/include/c++/7/ext/string_conversions.h:41:0,
                 from /usr/include/c++/7/bits/basic_string.h:6361,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/stdexcept:39,
                 from /usr/include/c++/7/array:39,
                 from /usr/include/c++/7/tuple:39,
                 from /usr/include/c++/7/bits/stl_map.h:63,
                 from /usr/include/c++/7/map:61,
                 from /home/hri/MyInstallSoftware/opencv-3.2.0/build/modules/viz/precomp.hpp:49:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
               ^~~~~~~~~~
compilation terminated.
modules/viz/CMakeFiles/pch_Generate_opencv_viz.dir/build.make:62: recipe for target 'modules/viz/precomp.hpp.gch/opencv_viz_Release.gch' failed
make[2]: *** [modules/viz/precomp.hpp.gch/opencv_viz_Release.gch] Error 1
CMakeFiles/Makefile2:3122: recipe for target 'modules/viz/CMakeFiles/pch_Generate_opencv_viz.dir/all' failed
make[1]: *** [modules/viz/CMakeFiles/pch_Generate_opencv_viz.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

解决办法
在这里插入图片描述

-DENABLE_PRECOMPILED_HEADERS=OFF

参考:https://blog.csdn.net/u010003609/article/details/100086151

编译opencv时可能会报很多依赖项的错误,在上面的博文中也有描述(好长一段那个)。这个其实取决于你刷机的时候是否刷入了cuda,如果没刷cuda就不会报这个错的。问题的解决可以参考:http://blog.csdn.net/u014613745/article/details/78310916

Pangolin安装教程
详细步骤如下:

// 安装依赖
sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
// 源码编译
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j
sudo make install

参考:https://blog.csdn.net/u012986684/article/details/52860849
注意:最后一定要sudo make install否则在编译ORB-SLAM3时会报下面这个错误:
在这里插入图片描述

Eigen3安装教程
详细步骤如下:

sudo apt-get install libeigen3-dev

参考:https://www.cnblogs.com/newneul/p/8256803.html

boost安装
之前试过可以通过下面的命令安装,但是现在发现不行了,就留一个源码安装的教程吧,都可以试一下:

  命令安装
sudo apt-get install libboost-all-dev
  源码安装

先下载源码包(我这里安装的是1.80版本):https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/
在这里插入图片描述
下载好后按照下面的步骤安装:

wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2
tar --bzip2 -xf boost_1_80_0.tar.bz2
rm -rf boost_1_80_0.tar.bz2
cd boost_1_80_0
sudo ./bootstrap.sh
sudo ./b2
sudo ./b2 install 

参考:https://blog.csdn.net/challenglistic/article/details/129097988

编译ORB_SLAM3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh
./build.sh
#安装ros版
chmod +x build_ros.sh
./build_ros.sh

要改几个东西:
1)首先是因为opencv用的是3.2,所以在ORB-SLAM的CMakeLists.txt中要改成最小3.2:find package(OpenCV 3.2)
2)build.sh里把make -j4变成make -j,多线程会卡死
3)build.sh里面会编译DBoW2, g20, Sophus,把这三个后面都加上一个sudo make install,会避免一些错误
4) build_ros.sh里面把Examples换成Examples_old,因为作者原目录结构变了

执行build.sh常见报错
报错1:fatal error: sophus/se3.hpp: No such file or directory
解决办法:对Sophus进行sudo make install
报错2:c++: internal compiler error: killed (program cc1plus)
解决办法:虚拟内存不够,可以把虚拟内存大小增加一下
报错3:Gtk-Message: Failed to load module “canberra-gtk-module”
解决办法

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

报错4:编译sophus时报错:

test/core/CMakeFiles/test_sim2.dir/build.make:62: recipe for target 'test/core/CMakeFiles/test_sim2.dir/test_sim2.cpp.o' failed
make[2]: *** [test/core/CMakeFiles/test_sim2.dir/test_sim2.cpp.o] Error 1
CMakeFiles/Makefile2:158: recipe for target 'test/core/CMakeFiles/test_sim2.dir/all' failed
make[1]: *** [test/core/CMakeFiles/test_sim2.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

解决办法:安装fmt-8.1.1库再编译sophus
源码下载网址:https://fmt.dev/8.1.1/
然后按照下面操作:

cd fmt-8.1.1
mkdir build
cd build
cmake ..
make
sudo make install

执行build_ros.sh常见报错
报错1:error: conversion from ‘Sophus::SE3f {aka Sophus::SE3}’ to non-scalar type ‘cv::Mat’ requested
解决办法

解决 cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec()); 报错
cv::Mat Tcw;
Sophus::SE3f Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();
cv::eigen2cv(Tcw_Matrix, Tcw);

解决 vPoints.push_back(pMP->GetWorldPos()); 报错
cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

解决 cv::Mat Xw = pMP->GetWorldPos();报错
cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

参考:https://github.com/UZ-SLAMLab/ORB_SLAM3/issues/442

报错2:error: ‘eigen2cv’ is not a member of ‘cv’
解决办法:注释掉ORB-SLAM3的CMakeLists.txt中关于AR的部分
在这里插入图片描述
参考:https://blog.csdn.net/weixin_44128351/article/details/122721829

报错3:error while loading shared libraries: libpango_core.so: cannot open shared object file: No such file or directory
解决办法

  1、首先打开/etc/ld.so.conf文件

  2、加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。

  3、保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。

参考:https://blog.csdn.net/hankerbit/article/details/83834349?spm=1001.2014.3001.5501

5.相机标定

这里提供一种简单的标定方法,具体见该文章第三步:https://blog.csdn.net/gls_nuaa/article/details/122104557

6.修改源文件并运行

修改源文件详细步骤参考,修改的内容完全一致:https://blog.csdn.net/gls_nuaa/article/details/122104557

执行命令如下(2,3顺序无所谓):

roscore
rosrun ORB_SLAM3 Mono /home/jetson1/test_ORB_SLAM3/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/jetson1/test_ORB_SLAM3/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/Asus.yaml
roslaunch realsense2_camera rs_camera.launch

报错:执行roslaunch realsense2_camera rs_camera.launch报错如下:
04/01 17:35:04,736 WARNING [547373429120] (messenger-libusb.cpp:42) control_transfer returned error, index: 768, error: Resource temporarily unavailable, number: 11
解决办法:不用管

过程中遇到两个报错,记录一下:
报错:CMake Error at /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake:113 (message)
解决办法https://blog.csdn.net/woodgril/article/details/109155073
要根据实际情况做文件上的修改

报错:UBUNTU18.04环境下ROS编译ORB_SLAM2时遇到问题:[ROSBUILD] ROSPACK FOUND PACKAGE “ORB_SLAM2” AT “”…
解决https://www.freesion.com/article/7597639275/

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐