Nvidia Jetson TX2+Intel Realsense D435i跑ORB_SLAM3
前言:网上的教程实在是太多,从诸多教程中找到一个适合自己的实属不易。将此记录下来,希望能够帮助到有需要的人。因为时间紧迫,没时间写特别详细的内容,只能引用一些他人的步骤。请见谅!不过经过亲测,过程是完整的。本机环境:Nvidia Jetson TX2+ROS Melodic+Intel Realsense D435i注意:ORB_SLAM3是可以不用ROS的,但本篇文章是基于ROS使用的基本步骤如
前言:网上的教程实在是太多,从诸多教程中找到一个适合自己的实属不易。将此记录下来,希望能够帮助到有需要的人。因为时间紧迫,没时间写特别详细的内容,只能引用一些他人的步骤。请见谅!不过经过亲测,过程是完整的。
本机环境: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/
更多推荐
所有评论(0)