ubunut22.04 使用Intel RealSense D435进行视觉SLAM(附Intel RealSense Viewer下载)

一.使用Intel RealSense Viewer测试相机能否使用,并且校准。

我是在windows系统上使用Intel RealSense Viewer。如果要在ubuntu安装请去另外的博客。
链接: https://pan.baidu.com/s/1be5R-xYT3iHxK2jOB0BUEg?pwd=chy1 提取码: chy1 

windows系统上直接安装,相机通过USB连接,支持USB2.0,3.0。

主要用到的圈起来了:1,2分别是开启深度摄像头和色彩摄像头。开启后在2D界面检查画面是否正常。

相机自动标定的简要流程:

  1. 将相机朝着纹理比较丰富的环境,不一定是平面
  2. 打开 realsense_viewer
  3. 将 "Stereo Module" 中的 “Emitter Enabled” 设置为 “Laser”
  4. 在 “More” 下拉菜单中选择 "On-Chip Calibration"
  5. 右边弹出选项,选择 "Calibrate"
  6. 查看 "Health-Check" 的数值, 一般小于 0.25 是可以接受的。
  7. 如果新的标定参数比之前的好,就 “Apply New” 将新的参数烧入 Firmware 中。


二.ROS2 humble版本的安装(安装了可跳过)

在终端命令行输入小鱼一键安装:

wget http://fishros.com/install -O fishros && . fishros

三.安装RealSense ROS 2驱动

参考官方IntelRealSense/realsense-ros: ROS Wrapper for Intel(R) RealSense(TM) Cameras

sudo apt install ros-humble-librealsense2*
sudo apt install ros-humble-realsense2-*

四.启动 D435的ROS 2驱动

ros2 launch realsense2_camera rs_launch.py depth_module.depth_profile:=640x480x30 align_depth:=true pointcloud.enable:=true 

如果检测不到设备请参考Intel RealSense SDK+WSL2+ROS2兼容性问题-CSDN博客

使用源码编译。

其核心作用是将相机的传感器数据(如RGB图像、深度图像等)转换为ROS话题和服务,供其他ROS节点(如SLAM、导航、可视化工具)使用。

参数参考:

ros2 launch realsense2_camera rs_launch.py \
  depth_module.depth_profile:=848x480x30 \  # 修改深度分辨率/帧率
  rgb_camera.profile:=1280x720x30 \         # 修改RGB分辨率/帧率
  pointcloud.enable:=true \                 # 启用点云
  align_depth:=true                         # 深度与RGB对齐
彩色相机话题
  • /camera/camera/color/camera_info:此话题会发布彩色相机的内参信息,像相机的焦距、主点坐标、畸变系数等。这些信息对图像的校正和三维重建十分关键。
  • /camera/camera/color/image_raw:该话题发布未经处理的原始彩色图像数据,通常为 RGB 格式。
  • /camera/camera/color/image_raw/compressed:此话题发布经过压缩处理的彩色图像数据,这样能减少数据传输量,提升传输效率。
  • /camera/camera/color/image_raw/compressedDepth:该话题用于发布经过压缩的彩色图像和深度图像的组合数据。
  • /camera/camera/color/image_raw/theora:Theora 是一种开源的视频编码格式,此话题发布使用 Theora 编码的彩色视频流。
  • /camera/camera/color/metadata:该话题发布彩色相机的元数据,比如相机的型号、序列号、采集时间等。
深度相机话题
  • /camera/camera/depth/camera_info:发布深度相机的内参信息,和彩色相机的内参信息类似,不过参数是针对深度相机的。
  • /camera/camera/depth/color/points:此话题发布经过处理的点云数据,点云里的每个点都有对应的彩色信息。
  • /camera/camera/depth/image_rect_raw:发布未经处理的原始深度图像数据,深度图像里每个像素的值代表该像素对应的物体到相机的距离。
  • /camera/camera/depth/image_rect_raw/compressed:发布经过压缩处理的深度图像数据。
  • /camera/camera/depth/image_rect_raw/compressedDepth:发布经过压缩的深度图像数据,和彩色图像的压缩类似。
  • /camera/camera/depth/image_rect_raw/theora:发布使用 Theora 编码的深度视频流。
  • /camera/camera/depth/metadata:发布深度相机的元数据,例如相机的型号、序列号、采集时间等。
相机外参话题
  • /camera/camera/extrinsics/depth_to_color:发布深度相机和彩色相机之间的外参信息,也就是两个相机之间的相对位置和姿态关系。
  • /camera/camera/extrinsics/depth_to_depth:这个话题推测是发布深度相机不同模式或者不同帧之间的外参信息。

机器人交互相关话题

  • /clicked_point:当用户在可视化工具(如 RViz)里点击三维场景中的某个点时,这个话题会发布被点击点的坐标信息。
  • /goal_pose:用于发布机器人的目标位姿信息,机器人导航系统会依据这个目标位姿来规划路径。
  • /initialpose:用于发布机器人的初始位姿信息,在机器人定位和导航时,需要明确机器人的初始位置和姿态。

ROS 系统相关话题

  • /parameter_events:ROS 2 系统会通过这个话题发布参数的变化事件,当某个节点的参数被修改时,就会在这个话题上发布相应的事件消息。
  • /rosout:该话题会发布 ROS 2 系统的日志信息,包含各个节点的调试信息、警告信息和错误信息等。
  • /tf:发布机器人各个坐标系之间的变换关系,这些变换关系对于机器人的定位、导航和运动控制非常重要。
  • /tf_static:发布静态的坐标系变换关系,像机器人的固定部件之间的坐标系变换,这些变换关系在机器人运行过程中一般不会发生变化。

在 rviz2 中显示图像和点云:

1.frame选择camera_link

2.add添加订阅topic 显示点云

视觉SLAM(如RTAB-Map、ORB-SLAM3)订阅 /camera/color/image_raw 和 /camera/depth/image_rect_raw 作为输入。

五. 安装RTAB-Map ROS 2包

sudo apt install ros-humble-rtabmap-ros

启动:

ros2 launch rtabmap_launch rtabmap.launch.py args:="--delete_db_on_start" rgb_topic:=/camera/camera/color/image_raw depth_topic:=/camera/camera/depth/image_rect_raw camera_info_topic:=/camera/camera/color/camera_info frame_id:=camera_link approx_sync:=true qos:=2 Reg/Strategy:=1 Vis/CorType:=1 RGBD/AngularUpdate:=0.1 RGBD/LinearUpdate:=0.1 optimizer:=true depth_scale:=0.001 depth_decimation:=1 depth_erosion:=0

参数参考:

ros2 launch rtabmap_launch rtabmap.launch.py \
    args:="--delete_db_on_start" \
    rgb_topic:=/camera/camera/color/image_raw \
    depth_topic:=/camera/camera/depth/image_rect_raw \  # 使用原始深度图(需手动对齐)
    camera_info_topic:=/camera/camera/color/camera_info \
    frame_id:=camera_link \
    approx_sync:=true \
    qos:=2 \
    # 以下为关键修复参数(解决对齐和TF问题)
    Reg/Strategy:=1 \                # 强制使用RGB-D模式
    Vis/CorType:=1 \                 # 使用SURF特征点(兼容性更好)
    RGBD/AngularUpdate:=0.1 \        # 降低旋转更新阈值
    RGBD/LinearUpdate:=0.1 \         # 降低平移更新阈值
    optimizer:=true \                # 启用全局优化
    # 手动指定对齐参数(因深度未对齐到RGB)
    depth_scale:=0.001 \             # 深度单位缩放(米)
    depth_decimation:=1 \            # 深度图降采样因子
    depth_erosion:=0                 # 关闭深度边缘腐蚀

以上完成了RTAB-Map 进行slam建图

高级配置(可选)        

1.保存地图数据库

RTAB-Map自动保存地图到 ~/.ros/rtabmap.db,可手动导出为点云或网格:

# 导出为PLY点云
rtabmap-export -o map.ply ~/.ros/rtabmap.db

# 导出为OBJ网格(需启用网格生成)
rtabmap-export --mesh map.obj ~/.ros/rtabmap.db

2.启用3D地图优化

ros2 launch rtabmap_launch rtabmap.launch.py \
    ... \
    optimizer:=true \        # 启用全局优化
    vis:=true \              # 启用可视化优化
    mem/stereo:=false        # 禁用双目模式(使用RGB-D)

3.调整地图分辨率

ros2 launch rtabmap_launch rtabmap.launch.py \
    ... \
    grid_size:=0.05 \        # 地图体素滤波尺寸(米)
    cloud_decimation:=2      # 点云降采样因子(2=每2像素采1个点)

4.增加特征点数量:

ros2 launch ... Vis/CorType:=1 Vis/MaxFeatures=1000

5.启用回环检测增强:

ros2 launch ... RGBD/NeighborLinkRefining=true

六.问题

在开启相机驱动后,已对齐深度和RGB(已经输入了深度与GPB对齐的参数),但是没有输出对应的topic,导致进行slam时,只能手动对齐。

### 安装和配置 ORB-SLAM2 的准备工作 为了在 Ubuntu 22.04 上成功安装和配置 ORB-SLAM2,需要先完成一系列前置条件的设置。这包括更新软件包列表并更换国内镜像源以加速下载速度。 #### 更换国内镜像源 由于官方源可能较慢,在新安装的系统中建议替换为阿里云或其他快速稳定的国内镜像源[^1]: ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/https:\/\/siteproxy.ruqli.workers.dev:443\/https\/archive\.ubuntu\.com\/ubuntu\//https:\/\/siteproxy.ruqli.workers.dev:443\/http\/mirrors.aliyun.com\/ubuntu\-security/g' /etc/apt/sources.list ``` 随后执行更新操作来同步最新的软件包信息: ```bash sudo apt update && sudo apt upgrade -y ``` ### 安装必要的依赖项 对于 ORB-SLAM2 来说,有几个重要的依赖库是必不可少的。这些可以通过 APT 包管理器轻松获取。需要注意的是,部分依赖项名称可能会随着版本迭代而有所变化;因此这里提供适用于 Ubuntu 22.04 版本的具体命令[^4]: ```bash sudo apt-get install build-essential cmake git pkg-config \ libopencv-dev libeigen3-dev libsuitesparse-dev qtbase5-dev-tools \ libusb-1.0-0-dev python-is-python3 python3-pip python3-opencv \ ros-noetic-cv-bridge ros-noetic-image-transport-plugins ``` 上述指令不仅包含了编译工具链以及计算机视觉所需的 OpenCV 和 Eigen 库,还加入了 ROS Noetic 中用于图像处理的相关插件支持。 ### 下载与构建 ORB-SLAM2 接下来是从 GitHub 获取最新版 ORB-SLAM2 并按照说明文档中的指导进行本地化部署。考虑到 Qt 工具集的重要性,推荐采用预编译二进制文件的方式简化安装流程[^3]。 #### 安装 Qt 开发套件 (可选) 如果项目涉及图形界面开发,则需额外准备 Qt 环境。可以考虑通过如下方式直接运行安装程序自动完成整个过程(注意调整路径至实际存放位置): ```bash chmod +x ~/Downloads/qt-opensource-linux-x64-*.run sudo ~/Downloads/qt-opensource-linux-x64-*.run ``` #### 编译 ORB-SLAM2 源码 克隆仓库到工作目录后,进入 `Examples` 文件夹内选择感兴趣的应用场景作为入口点开始调试。以下是针对单目相机的例子: ```bash git clone https://github.com/raulmur/ORB_SLAM2.git cd ORB_SLAM2 mkdir build && cd build cmake .. make -j$(nproc) ``` 最后一步利用多核处理器加快编译效率,确保顺利完成所有目标文件链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值