使用 TX2 和 realsense D435i 相机运行 ORBSLAM3

非 ROS 版本。
之后可能会更新 ROS 版本的 ORBSLAM3 配置指南。TODO

TX2 刷机JetPack-4.6.1

  1. 在另外一台ubuntu系统的电脑或者虚拟机上(笔者的是ubuntu18.04虚拟机),下载并安装 NVIDIA SDK Manager。
    下载地址:https://developer.nvidia.com/nvidia-sdk-manager
    安装:

    sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb 
    

    安装完成后,终端执行 sdkmanager即可启动。

  2. 按照官方教程 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/

  1. 安装依赖:
    sudo apt install -y g++
    sudo apt install -y cmake
    sudo apt install -y make
    
  2. 编译:
    cd opencv
    mkdir build
    cd build
    cmake ..
    make -j4
    
  3. 安装(可选):
    sudo make install
    
    也可以选择不安装,之后在 CMakeLists.txt 文件里指定 opencv 库的路径即可。

编译 Pangolin-0.5

尝试过安装 Pangolin-0.6,但是有的依赖太新了,没有安装成功。
github 仓库:https://github.com/stevenlovegrove/Pangolin/tree/v0.5

  1. 安装依赖:
    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
    
  2. 下载Pangolin-0.5,编译:
    cd Pangolin
    mkdir build
    cd build
    cmake ..
    make -j4
    
  3. 安装(可选):
    sudo make install
    
    也可以选择不安装,之后在 CMakeLists.txt 文件里指定 Pangolin 库的路径即可。

编译运行 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 里注释掉,缩短编译时间。

  1. 执行脚本 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 可执行程序的。

  2. 运行
    这里运行 双目-惯性 例子,其它类似:

    ./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这里直接使用了 ORBSLAM3 提供的标定文件,实际应用中需要自行对 相机 和 IMU 进行内外参标定。ORBSLAM3 提供了标定文档 Calibration_Tutorial.pdf ,使用 Kalibr ROS 标定包进行标定。TODO

### OrbSLAM3 对计算能力的要求 OrbSLAM3 是一种先进的视觉 SLAM 系统,其性能依赖于硬件的计算能力优化程度。以下是关于 OrbSLAM3 的算力需求以及推荐的硬件配置: #### 1. **GPU 需求** OrbSLAM3 并未原生支持 GPU 加速功能[^2],这意味着大部分运算仍需依靠 CPU 完成。然而,如果希望提升系统的实时性效率,可以通过自定义开发来引入 GPU 支持。例如,Jetson-SLAM 系统展示了如何利用嵌入式 GPU 来加速前端处理[^1]。对于 GPU 要求而言: - 推荐 NVIDIA GeForce RTX 或 Quadro 系列显卡,这些显卡具备较高的 CUDA 核心数良好的浮点运算能力。 - 如果目标平台为嵌入式设备,则建议使用 Jetson TX2 或更高版本的 SoC。 #### 2. **CPU 需求** 由于 OrbSLAM3 主要基于多线程设计,在多核 CPU 上能够显著提高性能。具体来说: - 至少需要四核八线程以上的处理器才能满足基本运行条件。 - Intel Core i7 或 AMD Ryzen 7 及以上级别是较为理想的选项。 - 若采用 ARM 架构芯片(如 NVIDIA Jetson),则应确保有足够的核心数目及其频率支持高效并发操作。 #### 3. **内存需求** 为了存储地图数据、帧缓冲区以及其他中间变量,系统通常消耗较多 RAM 。一般情况下: - 最低配可能只需要8GB DDR4 ,但对于复杂场景或者大规模环境重建任务,则至少配备16GB甚至更多容量更为合适。 #### 4. **其他注意事项** 尽管上述提到的是理论上的最低标准与理想状态之间的差异,实际应用还需考虑到操作系统开销等因素;另外值得注意的是,虽然某些简化版方案可能会降低部分组件规格门槛(比如引用中的无人机案例)[^4],但这往往是以牺牲精度换取成本效益平衡的结果. ```python # 示例代码片段:检查当前机器是否符合最低要求 import psutil def check_system_requirements(): cpu_count = psutil.cpu_count(logical=True) memory_info = psutil.virtual_memory() if cpu_count >= 8 and memory_info.total / (1024**3) >= 8: print("Your system meets the minimum requirements.") else: print("Your system does not meet the recommended specifications.") check_system_requirements() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值