当前位置:首页 > 系统教程 > 正文

Ubuntu 20.04下使用Intel RealSense D435i相机在ROS中实时运行ORB-SLAM3(从零开始的详细教程)

Ubuntu 20.04下使用Intel RealSense D435i相机在ROS中实时运行ORB-SLAM3(从零开始的详细教程)

本文将详细介绍如何在Ubuntu 20.04系统中,利用ROS Noetic框架,驱动Intel RealSense D435i相机,并实时运行ORB-SLAM3视觉SLAM系统。即使你是刚接触Linux和ROS的小白,按照本教程一步步操作,也能成功实现。

Ubuntu 20.04下使用Intel RealSense D435i相机在ROS中实时运行ORB-SLAM3(从零开始的详细教程) ORB-SLAM3  D435i ROS 20.04 第1张

1. 安装Ubuntu 20.04与ROS Noetic

首先确保你的系统是Ubuntu 20.04(建议最小安装)。打开终端,依次执行以下命令安装ROS Noetic

    sudo sh -c "echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list"sudo apt install curlcurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -sudo apt updatesudo apt install ros-noetic-desktop-full  

安装完成后,初始化rosdep:

    sudo rosdep initrosdep update  

设置环境变量:

    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrcsource ~/.bashrc  

2. 安装Intel RealSense SDK 2.0 和 ROS Wrapper

D435i是Intel的深度相机,需要安装SDK驱动和ROS功能包。首先添加RealSense服务器:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDEsudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -usudo apt-get updatesudo apt-get install librealsense2-dkms librealsense2-utils librealsense2-dev  

测试SDK是否安装成功,连接相机后运行:realsense-viewer。接下来安装ROS wrapper:

    sudo apt-get install ros-noetic-realsense2-camera  

如果需要点云等功能,可安装ros-noetic-realsense2-description等。

3. 安装ORB-SLAM3

ORB-SLAM3是一个支持视觉、视觉+惯导的SLAM系统。首先安装依赖:

    sudo apt-get install build-essential cmake gitsudo apt-get install libopencv-devsudo apt-get install libeigen3-devsudo apt-get install libglew-devsudo apt-get install libboost-all-devsudo apt-get install libssl-dev  

还需要Pangolin(用于可视化):

    git clone https://github.com/stevenlovegrove/Pangolin.gitcd Pangolinmkdir build && cd buildcmake ..make -j4sudo make install  

然后克隆ORB-SLAM3源码:

    git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3cd ORB_SLAM3chmod +x build.sh./build.sh  

编译过程中会自动下载Vocabulary文件,可能需要较长时间,请耐心等待。

4. 创建ROS工作空间并集成ORB-SLAM3

为了在ROS中运行ORB-SLAM3,我们需要将其作为一个ROS包。首先创建工作空间:

    mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccatkin_init_workspacecd ~/catkin_wscatkin_make  

将ORB-SLAM3克隆到src目录下,并修改CMakeLists.txt以支持ROS。官方提供了ROS示例,位于ORB_SLAM3/Examples/ROS。我们需要将其链接到工作空间:

    cd ~/catkin_ws/srcgit clone https://github.com/UZ-SLAMLab/ORB_SLAM3.gitcd ORB_SLAM3  

然后编辑~/catkin_ws/src/ORB_SLAM3/CMakeLists.txt,确保set(CMAKE_CXX_STANDARD 14)。接着编译整个工作空间:

    cd ~/catkin_wscatkin_make --pkg ORB_SLAM3  

如果遇到OpenCV版本问题,可在ORB_SLAM3/CMakeLists.txt中指定OpenCV路径。

5. 配置D435i相机参数并启动

在运行ORB-SLAM3之前,需要启动D435i的ROS节点,发布图像和IMU数据。首先连接相机,然后运行:

    roslaunch realsense2_camera rs_camera.launch unite_imu_method:="linear_interpolation" enable_gyro:=true enable_accel:=true  

该命令会启用IMU数据,并发布到/camera/imu/camera/color/image_raw等话题。你可以用rostopic list查看。

6. 实时运行ORB-SLAM3

现在我们可以运行ORB-SLAM3的ROS节点。进入ORB-SLAM3目录,根据相机类型选择合适的配置文件。对于D435i(双目+IMU),可以使用EuRoC.yaml作为基础,但需要调整话题名称。我们复制并修改配置文件:

    roscd ORB_SLAM3cp Examples/ROS/ORB_SLAM3/Asus.yaml .# 修改话题名称为/camera/color/image_raw和/camera/imu  

然后运行节点:

    rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml /camera/left/image_raw:=/camera/color/image_raw /camera/right/image_raw:=/camera/infra1/image_rect_raw /imu:=/camera/imu  

注意话题重映射根据实际情况调整。如果你使用的是单目+IMU,可用Mono_Inertial节点。成功运行后,你会看到ORB-SLAM3的可视化窗口,实时构建地图。

常见问题与解决

- 编译错误:确保所有依赖完整,特别是PangolinOpenCV版本兼容。- 相机无法识别:检查USB接口,运行lsusb查看是否有Intel设备。- IMU数据未发布:确认启动文件添加了enable_gyro:=true enable_accel:=true。- 性能问题:ORB-SLAM3对计算资源要求较高,建议在配备独立显卡的电脑上运行。

至此,你已经学会了在Ubuntu 20.04下使用D435i相机通过ROS实时运行ORB-SLAM3。SLAM的世界充满乐趣,祝你探索顺利!