非 ROS 版本。
之后可能会更新 ROS 版本的 ORBSLAM3 配置指南。TODO
TX2 刷机JetPack-4.6.1
-
在另外一台ubuntu系统的电脑或者虚拟机上(笔者的是ubuntu18.04虚拟机),下载并安装 NVIDIA SDK Manager。
下载地址:https://developer.nvidia.com/nvidia-sdk-manager
安装:sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb
安装完成后,终端执行
sdkmanager
即可启动。 -
按照官方教程 Install Jetson Software with SDK Manager:
https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html
,刷机 JetPack。各个版本的Jetpack的信息,包括对应的 ubuntu 版本,可以在这个网站查看:
JetPack Archive:https://developer.nvidia.com/embedded/jetpack-archive
。刷机时需要将 TX2 和给 TX2 刷机的电脑连接在同一局域网下。
刷机完成后,环境中自带 eigen-3.3.4 以及 opencv-4.1.1,eigen 满足 ORBSLAM3 的版本要求,但是 opencv 不满足版本要求,所以需要额外的 opencv 。
安装 realsense SDK 2.0
TX2 安装教程:https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md
通过 DEB 包方式安装:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
终端执行 realsense-viewer
,能够打开一个可视化窗口,说明安装成功。
如果安装成功,在 CMakeLists.txt 中加入类似以下代码,就能使用 realsense 提供的库。
cmake_minimum_required(VERSION 3.1.0)
# Find librealsense2 installed package
find_package(realsense2 REQUIRED)
# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# Add the application sources to the target
add_executable(${
PROJECT_NAME} hello_librealsense2.cpp)
# Link librealsense2 to the target
target_link_libraries(${
PROJECT_NAME} ${
realsense2_LIBRARY})
编译 opencv-4.5.0
最新的 ORBSLAM3(2022.04.29) CMakeLists.txt 文件里要求 OpenCV > 4.4。
选择合适版本下载:https://opencv.org/releases/
- 安装依赖:
sudo apt install -y g++ sudo apt install -y cmake sudo apt install -y make
- 编译:
cd opencv mkdir build cd build cmake .. make -j4
- 安装(可选):
也可以选择不安装,之后在 CMakeLists.txt 文件里指定 opencv 库的路径即可。sudo make install
编译 Pangolin-0.5
尝试过安装 Pangolin-0.6,但是有的依赖太新了,没有安装成功。
github 仓库:https://github.com/stevenlovegrove/Pangolin/tree/v0.5
- 安装依赖:
sudo apt-get install libglew-dev sudo apt-get install cmake sudo apt-get install libpython2.7-dev sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev
- 下载Pangolin-0.5,编译:
cd Pangolin mkdir build cd build cmake .. make -j4
- 安装(可选):
也可以选择不安装,之后在 CMakeLists.txt 文件里指定 Pangolin 库的路径即可。sudo make install
编译运行 ORBSLAM3
github仓库:https://github.com/UZ-SLAMLab/ORB_SLAM3
ORBSLAM3 提供了 build.sh 脚本文件,该脚本首先编译第三方库 DBoW2, Sophus 和 g2o,然后解压 Vocabulary/ORBvoc.txt.tar.gz 文件,最后编译 ORBSLSM3。
以上编译过程都使用了 make -j
加速编译,这容易导致编译过程中系统卡顿,甚至会降低编译速度,所以宜把 build.sh 文件里的 make -j
改为 make -j4
,使用 4 个线程编译。
编译 ORBSLAM3 的时候,首先会生成一个 ORBSLAM3 库,然后再基于该库编译 Examples 和 Examples_old 文件夹的子文件夹里相应的源文件,生成相应的可执行程序。
如果不需要生成所有的可执行程序,可以在 CMakeLists.txt 里注释掉,缩短编译时间。
-
执行脚本 build.sh,开始编译
如果之前安装了 opencv 和 Pangolin,就不需要修改 CmakeLists.txt 文件;如果只编译没安装,为了让 CMake 能够找到我们编译好的 opencv 和 Pangolin ,需要在在CmakeLists.txt 中指定库的路径:... set(OpenCV_DIR opencv路径/opencv/build) find_package(OpenCV 4.4) ... set(Pangolin_DIR Pangolin路径/Pangolin/build) find_package(Pangolin REQUIRED) ...
即在相应的 find_package(…) 前指定路径到 build 文件夹。
执行 build.sh 文件:
cd ORB_SLAM3 chmod +x build.sh ./build.sh
等待完成编译即可。
如果 realsense SDK 没有安装成功,是不会生成 realsense 可执行程序的。 -
运行
这里运行 双目-惯性 例子,其它类似:./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml
笔者在运行该程序的时候,程序初始化阶段会出现段错误:
Segmentation fault (core dumped)
,最后发现是 src/Settings.cc 文件中 运算符重载函数 ostream &operator<<(std::ostream& output, const Settings& settings) 中下以下代码导致:for(size_t i = 0; i < settings.originalCalib2_->size(); i++){ output << " " << settings.originalCalib2_->getParameter(i); }
然而并没有发现代码存在什么问题。TODO
注释以上代码,重新编译,就能成功运行。附上一张运行成功的截图:
这里直接使用了 ORBSLAM3 提供的标定文件,实际应用中需要自行对 相机 和 IMU 进行内外参标定。ORBSLAM3 提供了标定文档 Calibration_Tutorial.pdf ,使用 Kalibr ROS 标定包进行标定。TODO