RDK GS130WI和SLAM算法

RDK GS130WI一直处于缺货状态,请问计划什么时候补货呢,官方这边是否有适配RDK GS130WI的双目VIO slam方案提供。

我来帮你搜索一下社区中关于 GS130WI 的补货信息和 SLAM 方案相关讨论。

针对您关于 RDK GS130WI 补货计划适配的双目 VIO SLAM 方案 的问题,目前的社区公开信息和现有资源情况如下:

1. 关于 GS130WI 补货计划

目前社区暂无官方发布的 GS130WI 具体补货时间表

  • 现状:GS130WI(带 IMU 版本)确实长期处于缺货状态,目前市面上(如淘宝等渠道)主要流通的是 GS130W(不带 IMU 版本)。
  • 建议:由于硬件供应链波动较大,建议您直接联系地瓜机器人官方销售或关注官方公告获取最准确的库存信息。

2. 关于适配 GS130WI 的双目 VIO SLAM 方案

目前官方开源的 VIO 方案主要围绕 RealSense D435iSC230AI + BMI088 组合,暂无直接针对 GS130WI 的“开箱即用”VIO SLAM 示例

现有可参考资源与替代路径:

A. 官方 VIO 算法库 (hobot_vio)

  • 资源:NodeHub 已开源视觉惯性里程计算法库。
  • 地址hobot_vio GitHub
  • 现状:官方示例主要基于 RealSense D435i。
  • 适配思路:GS130WI 包含双目摄像头和 IMU,理论上可以通过修改 hobot_vio 的驱动接入层,将 GS130WI 的图像数据(MIPI CSI)和 IMU 数据(I2C/UART)接入算法。但这需要您具备驱动开发算法移植能力。
    • 图像:需确保 GS130WI 在 RDK X5 上能正常出流(参考 SC132GS 相关讨论)。
    • IMU:需确认 GS130WI 内部 IMU 型号及驱动是否已在 RDK 系统中集成。

B. 纯视觉 SLAM (无需 IMU)
如果您暂时无法获取 GS130WI,或者 IMU 驱动难以调试,可以考虑使用 纯视觉 SLAM 方案(如 ORB-SLAM3),仅利用 GS130W/GS130WI 的双目图像数据。

  • 参考案例:社区已有基于 RDK X3 的 ORB-SLAM3 部署案例
  • 优势:避开了 IMU 驱动和外参标定的复杂性,直接利用双目测距。

C. 替代硬件方案

  • SC230AI + BMI088:这是官方在 RDK X5 上重点支持的双目 + IMU 组合,有相对完善的文档和示例支持。如果您的项目对模组形式没有强制要求,建议优先考虑此组合以缩短开发周期。
  • RealSense D435i:通过 USB 接入,官方支持最完善,适合算法验证,但体积和成本可能高于 MIPI 模组。

建议操作步骤

  1. 确认硬件:如果急需开发,先评估是否可用 GS130W (无 IMU) + 纯视觉 SLAM 方案替代。
  2. 驱动验证:若必须使用 GS130WI,先入手样品,验证在 RDK X5 上的 MIPI 出图IMU 数据读取 是否正常。
    • 检查 /dev/video* 是否有图像设备。
    • 检查 i2cdetect 是否能扫到 IMU 地址。
  3. 算法移植:参考 hobot_vio 源码,编写自定义的 Sensor Adapter,接入 GS130WI 数据流。
  4. 关注社区:建议在帖子下回复或新开技术贴,询问是否有其他开发者已经完成了 GS130WI 的驱动适配,避免重复造轮子。

总结:目前没有官方直接提供的 GS130WI 专用 VIO SLAM 包,需要开发者基于开源算法库进行二次开发适配

130WI主要受限于供应商的交付,暂时没有排期

130WI VIO slam目前没有适配计划

针对 GS130WI 双目相机标定 问题,由于 GS130WI 与 GS130W 在相机传感器部分相同(均为 SC132GS),标定方法可参考 GS130W/SC132GS 的流程。

:pushpin: 核心结论

GS130WI 标定分为两部分:

  1. 相机内参 + 外参标定(双目立体标定)
  2. IMU 标定(如使用 VIO 需要)

目前官方没有提供 GS130WI 专用的标定工具,需要开发者自行完成标定并生成配置文件。


:wrench: 标定步骤

步骤 1:获取原始图像

首先需要确保相机能正常出流,并获取左右目原始图像用于标定:

# 启动 MIPI 相机节点(双路输出)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py

# 或使用示例脚本获取图像
cd /app/pydev_demo/03_mipi_camera_sample
python3 mipi_camera.py

保存左右目图像到本地目录,用于后续标定。

步骤 2:使用标定工具

方案 A:使用 ROS2 标定工具(推荐)

# 安装标定工具
sudo apt install ros-humble-camera-calibration

# 启动标定节点(需要修改为订阅 GS130W 的图像话题)
ros2 run camera_calibration cameracalibrator.py \
  --size 8x6 \
  --square 0.025 \
  image:=/mipi_cam/left/image_raw \
  camera:=/mipi_cam/left

# 对右目相机重复上述步骤

方案 B:使用 OpenCV 离线标定

import cv2
import numpy as np
import glob

# 准备标定板图像
images = glob.glob('calibration_images/left/*.jpg')

# 标定参数
checkerboard = (8, 6)  # 内角点数量
square_size = 0.025    # 方格边长(米)

# 执行标定
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
objp = np.zeros((checkerboard[0]*checkerboard[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:checkerboard[0], 0:checkerboard[1]].T.reshape(-1, 2) * square_size

# ... 执行标定流程,获取内参矩阵和畸变系数

步骤 3:生成标定配置文件

标定完成后,需要生成 hobot_stereonet 所需的 YAML 配置文件,格式参考:

# gc4663_calibration.yaml 或自定义文件名
left_camera:
  camera_matrix:
    rows: 3
    cols: 3
    data: [fx, 0, cx, 0, fy, cy, 0, 0, 1]
  distortion_coeffs:
    rows: 1
    cols: 5
    data: [k1, k2, p1, p2, k3]

right_camera:
  camera_matrix:
    rows: 3
    cols: 3
    data: [fx, 0, cx, 0, fy, cy, 0, 0, 1]
  distortion_coeffs:
    rows: 1
    cols: 5
    data: [k1, k2, p1, p2, k3]

stereo:
  rotation_matrix:
    rows: 3
    cols: 3
    data: [R11, R12, R13, R21, R22, R23, R31, R32, R33]
  projection_matrix_left:
    rows: 3
    cols: 4
    data: [P11, P12, P13, P14, P21, P22, P23, P24, P31, P32, P33, P34]
  projection_matrix_right:
    rows: 3
    cols: 4
    data: [P11, P12, P13, P14, P21, P22, P23, P24, P31, P32, P33, P34]

步骤 4:加载标定参数

在运行双目深度算法时加载自定义标定文件:

# 修改 launch 文件或添加参数
ros2 launch hobot_stereonet stereonet.launch.py \
  calibration_file:=/path/to/your/gs130wi_calibration.yaml

:clipboard: 关键注意事项

项目 说明
标定板 建议使用 8×6 或 9×6 棋盘格,方格边长 2-3cm
图像数量 至少 20 张不同角度、距离的标定板图像
距离范围 标定距离应覆盖实际使用范围(建议 0.5m - 3m)
IMU 标定 如需使用 VIO,还需标定 IMU 与相机的外参(较复杂)
配置文件位置 通常放在 /app/data/calibration/ 或自定义路径

:link: 相关社区资源


:warning: 重要提醒

由于 GS130WI 官方暂无 VIO SLAM 适配计划,如果您标定的目的是用于 VIO:

  1. 需要自行集成 IMU 数据(确认 IMU 型号和驱动)
  2. 需要标定 相机-IMU 外参(建议使用 Kalibr 等工具)
  3. 需要修改 hobot_vio 源码适配 GS130WI 数据流

如仅需双目深度/纯视觉 SLAM,完成相机标定即可使用。

建议将您的标定过程和结果反馈到社区,帮助其他开发者避坑!

GS130WI + IMU 外参如何标定

GS130WI 相机-IMU 外参标定方法

由于官方暂无 GS130WI 的 VIO 适配计划,相机-IMU 外参标定需要自行完成。以下是标准流程:


:pushpin: 核心概念

相机-IMU 外参包括:

  • 旋转矩阵 $R_{cam}^{imu}$:IMU 坐标系到相机坐标系的旋转
  • 平移向量 $t_{cam}^{imu}$:IMU 到相机的平移距离
  • 时间偏移 $t_d$:相机与 IMU 的时间同步误差

:wrench: 推荐工具:Kalibr

Kalibr 是业界标准的相机-IMU 标定工具,支持多种相机和 IMU 型号。

步骤 1:环境准备

# 在 Ubuntu 上安装 Kalibr(需要在 PC 端运行)
sudo apt install ros-humble-cmake-modules \
                 ros-humble-tf2-ros \
                 ros-humble-image-transport-plugins \
                 ros-humble-cv-bridge

cd ~/catkin_ws/src
git clone https://github.com/ethz-asl/kalibr.git
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash

步骤 2:数据采集

需要同时录制相机图像IMU 数据

# 在 RDK X5 上启动相机和 IMU 数据录制
# 需要确保 GS130WI 的 IMU 驱动已集成,能输出 IMU 数据

# 录制 bag 包(示例)
ros2 bag record -o gs130wi_calibration \
  /mipi_cam/left/image_raw \
  /mipi_cam/right/image_raw \
  /imu/data_raw

采集要求

  • 手持设备做多方向运动(平移 + 旋转)
  • 确保标定板在相机视野内
  • 录制时长:2-3 分钟
  • 运动速度:中等,避免剧烈抖动

步骤 3:准备标定文件

创建 Kalibr 配置文件 camchain-gs130wi.yaml

cam0:
  camera:
    camera_model: pinhole
    resolution: [1280, 1080]  # GS130WI 分辨率
    rostopic: /mipi_cam/left/image_raw
  rostopic: /mipi_cam/left/image_raw
  time_offset: 0.0

cam1:
  camera:
    camera_model: pinhole
    resolution: [1280, 1080]
    rostopic: /mipi_cam/right/image_raw
  rostopic: /mipi_cam/right/image_raw
  time_offset: 0.0

imu0:
  rostopic: /imu/data_raw
  time_offset: 0.0

创建 IMU 配置文件 imu-gs130wi.yaml(需确认 GS130WI 内部 IMU 型号):

# 示例:假设使用 MPU6050(需根据实际型号调整)
imu0:
  accelerometer:
    noise_density: 0.002
    random_walk: 0.0002
  gyroscope:
    noise_density: 0.0002
    random_walk: 0.00002
  update_rate: 200.0

步骤 4:执行标定

# 运行 Kalibr 标定
kalibr_calibrate_cam_imu \
  --target target.yaml \
  --bag gs130wi_calibration.bag \
  --cam camchain-gs130wi.yaml \
  --imu imu-gs130wi.yaml \
  --topics /mipi_cam/left/image_raw /imu/data_raw

步骤 5:获取标定结果

标定完成后,Kalibr 会输出:

  • camchain-imucam-gs130wi.yaml:包含相机内参、相机-IMU 外参
  • report.pdf:可视化标定质量报告

关键参数

T_cam_imu:  # 相机到 IMU 的变换矩阵
  - [r11, r12, r13, tx]
  - [r21, r22, r23, ty]
  - [r31, r32, r33, tz]
  - [0, 0, 0, 1]
time_offset: 0.0012  # 时间同步误差(秒)

:clipboard: 替代方案:VINS-Fusion 标定

如果 Kalibr 配置复杂,可使用 VINS-Fusion 的在线标定功能:

# VINS-Fusion 支持运行时在线估计外参
# 修改 config 文件启用外参优化
optimize_extrinsic: 1
optimize_time_offset: 1

:warning: 关键注意事项

问题 解决方案
IMU 驱动未集成 需先确认 GS130WI 内部 IMU 型号,编写/移植 I2C 驱动
时间同步 相机和 IMU 必须硬件同步或软件时间戳对齐
标定板选择 建议使用 AprilTag 或棋盘格,尺寸覆盖 0.5m-3m 范围
外参精度验证 标定后运行 VIO,观察轨迹漂移情况
坐标系定义 确认相机和 IMU 的坐标系方向(ROS 标准:X 前,Y 左,Z 上)

:link: 相关资源


:light_bulb: 建议

  1. 先验证 IMU 驱动:确保能读取到 IMU 数据(/dev/i2c-* 或 ROS topic)
  2. 从简单开始:先用纯视觉 SLAM 验证相机标定,再添加 IMU
  3. 参考 RealSense 配置:官方 hobot_vio 的 RealSense 配置文件可作为格式参考
  4. 沉淀到社区:GS130WI 的标定案例较少,建议将成功经验发帖分享

如果需要更具体的驱动或配置帮助,建议提供:

  • GS130WI 内部 IMU 型号
  • 当前系统版本(cat /etc/version
  • IMU 数据读取情况(是否有 ROS topic 输出)