Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

image_pipeline

ROS 标准相机技术栈:标定、校正、立体视觉与深度处理

许可证

BSD-3-Clause

概述

image_pipeline 是 ROS 的标准相机处理技术栈,由 ros-perception 维护。它的软件包将机器人相机从原始驱动输出处理为经过标定、校正的图像和 3D 数据:camera_calibration(交互式棋盘格标定)、image_proc(去拜耳和校正)、stereo_image_proc(视差和点云)、depth_image_proc(深度转点云及配准)以及 image_view。几乎每一台配备相机的 ROS 机器人都在运行这套流水线的某个部分。

该技术栈由可组合的 ROS 2 节点构成,节点之间通过 image_transport 话题和 camera_info 标定消息连接。camera_calibration 提供经典的交互式 GUI,通过棋盘格视图计算单目或双目内参,并写入相机驱动。image_proc 消费原始图像和 camera_info,输出单色/彩色及校正后的变体,处理拜耳去马赛克和畸变消除;crop/resize/decimate 节点则以低开销重塑图像流。stereo_image_proc 在校正后的图像对之间运行块匹配视差计算并生成立体点云,而 depth_image_proc 将 RGB-D 传感器的深度图像转换为点云,把深度配准到彩色帧,并在公制/量化编码之间转换。所有节点都支持运行时组合,可在 ROS 2 上构建零拷贝的进程内流水线;它确立的约定——camera_info 语义、image_raw/image_rect 话题命名——是整个 ROS 生态系统中相机驱动与感知代码之间事实上的契约。

为何重要

image_pipeline 定义了相机在 ROS 中的工作方式:它的标定 GUI 是大多数机器人工程师标定第一台相机的地方,它的话题和 camera_info 约定是让任何 ROS 相机驱动都能与任何 ROS 感知技术栈对话的契约。

解决的问题

原始相机输出是未标定、有畸变、带拜耳阵列的 2D 数据。image_pipeline 用标准的可组合节点将其转换为标定校正后的图像、视差图和点云——让感知代码永远不必重新实现相机底层处理。

要点

  • 面向单目和双目相机的交互式棋盘格标定 GUI
  • image_proc:由 camera_info 驱动的去拜耳、畸变消除和图像校正
  • stereo_image_proc:块匹配视差计算和立体点云
  • depth_image_proc:深度图转点云及深度到彩色帧的配准
  • 可组合的 ROS 2 节点,支持零拷贝进程内流水线

适用人群

  • 集成相机的 ROS 开发者
  • 构建立体/RGB-D 流水线的感知工程师
  • 标定人生第一台相机的机器人专业学生
  • 遵循 ROS 约定的相机驱动开发者

局限

  • 经典块匹配立体算法相比基于学习或 SGM 的匹配器已显陈旧
  • 标定 GUI 流程是手动的——没有自动化的免标定板标定
  • 性能调优(QoS、节点组合)留给集成者自行处理

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。