230AI MIPI双目相机与RDK X5如何正确安装调试,接下来该如何操作?

从你提供的截图来看,问题非常明确:脚本文件存在 Windows 换行符(CRLF)问题,导致 bash 无法正确解析。

:magnifying_glass_tilted_left: 问题诊断

错误信息分析:

  • '$\r': 未找到命令 → 典型的 Windows 换行符 \r\n 问题
  • ros2: 未找到命令 → 环境变量未加载
  • 语法错误 → 换行符导致脚本解析失败

:white_check_mark: 解决方案

步骤 1:转换脚本格式(关键)

# 安装 dos2unix 工具
sudo apt install dos2unix

# 转换脚本格式(去除 Windows 换行符)
dos2unix /home/sunrise/文档/run_cam.sh

# 如果没有 dos2unix,也可以用 sed
sed -i 's/\r$//' /home/sunrise/文档/run_cam.sh

步骤 2:检查并修改脚本内容

# 查看脚本内容
cat /home/sunrise/文档/run_cam.sh

# 确保第一行是正确的 shebang
head -1 /home/sunrise/文档/run_cam.sh
# 应该是:#!/bin/bash 或 #!/usr/bin/env bash

步骤 3:正确执行脚本

根据错误信息,脚本中引用了 /opt/tros/humble/setup.bash,需要确保环境变量已加载:

# 方式 A:先加载环境,再运行脚本
source /opt/tros/humble/setup.bash
bash /home/sunrise/文档/run_cam.sh --image_width 1920 --image_height 1080 --rotation 0.0 --cal_rotation 0.0 --log_level INFO

# 方式 B:修改脚本,在开头自动加载环境
# 编辑 run_cam.sh,在第一行后添加:
# source /opt/tros/humble/setup.bash

步骤 4:检查脚本权限

# 确保脚本有执行权限
chmod +x /home/sunrise/文档/run_cam.sh

# 然后可以直接运行
/home/sunrise/文档/run_cam.sh --image_width 1920 --image_height 1080

:clipboard: 针对 230AI MIPI 相机的额外建议

根据社区案例 [34656],使用官方 230AI MIPI 双目相机时:

  1. 推荐使用官方启动方式
source /opt/tros/humble/setup.bash
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py
  1. 检查标定参数
ls /opt/tros/humble/lib/mipi_cam/config/
cat /opt/tros/humble/lib/mipi_cam/config/calib_params.yaml
  1. 系统版本确认
cat /etc/horizon_version
# 建议 3.1.1 或更高版本

快速验证

执行完上述步骤 1-4 后,重新运行你的脚本。如果还有问题,请补充:

# 1. 系统版本
cat /etc/horizon_version

# 2. 脚本内容(前 20 行)
head -20 /home/sunrise/文档/run_cam.sh

# 3. 相机是否被识别
ros2 topic list | grep camera

建议:如果这是从 Windows 复制过来的脚本,建议以后使用 git clonescp 传输文件,避免换行符问题。脚本格式问题在 Linux 开发中很常见,dos2unix 是必备工具。

恭喜脚本格式问题已解决!:tada: 但现在图像显示灰色,说明相机节点没有正常输出图像数据

:magnifying_glass_tilted_left: 问题诊断

灰色图像 = 无数据流,可能原因:

  1. 相机节点未正确启动
  2. 图像话题没有发布数据
  3. 启动参数不匹配
  4. 硬件连接问题

:white_check_mark: 系统排查步骤

步骤 1:确认相机话题是否有数据

# 加载环境
source /opt/tros/humble/setup.bash

# 查看所有相机相关话题
ros2 topic list | grep camera

# 检查图像话题是否有数据(关键!)
ros2 topic hz /image_raw
# 或者双目相机话题
ros2 topic hz /stereo0/left/image_raw
ros2 topic hz /stereo0/right/image_raw

预期结果:应该显示发布频率(如 30.0 Hz),如果显示 0.0 Hz 说明无数据。

步骤 2:使用官方推荐方式启动 MIPI 相机

根据你的 230AI MIPI 双目相机,不要使用自定义脚本,改用官方启动命令:

# 方式 A:双目相机标准启动
source /opt/tros/humble/setup.bash
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py
# 方式 B:如果方式 A 不行,尝试添加 lpwm 参数(社区案例反馈有效)
source /opt/tros/humble/setup.bash
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True

步骤 3:验证图像数据

启动相机节点后,在新终端检查:

# 查看图像话题
ros2 topic list | grep image

# 查看话题信息
ros2 topic info /stereo0/left/image_raw -v

# 查看图像数据(按 Ctrl+C 退出)
ros2 topic echo /stereo0/left/image_raw | head -20

步骤 4:在 rviz2 中正确订阅话题

# 启动 rviz2
rviz2

# 在 rviz2 中:
# 1. 点击 "Add" → 选择 "Image"
# 2. Topic 选择:/stereo0/left/image_raw 或 /stereo0/right/image_raw
# 3. 如果还是灰色,检查 Fixed Frame 是否设置为 camera_link 或 base_link

步骤 5:检查硬件连接和系统状态

# 检查系统版本
cat /etc/horizon_version
# 建议 3.1.1 或更高

# 检查相机设备是否被识别
ls -l /dev/video*

# 查看 dmesg 日志中是否有相机相关错误
dmesg | grep -i camera
dmesg | grep -i mipi

:bullseye: 快速尝试方案

按顺序执行以下命令:

# 1. 终止所有 ros2 节点
killall -9 ros2

# 2. 重新加载环境
source /opt/tros/humble/setup.bash

# 3. 启动 MIPI 双目相机(带 lpwm 参数)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True

# 4. 在新终端检查话题频率
ros2 topic hz /stereo0/left/image_raw

:clipboard: 请补充以下信息

如果上述步骤后仍是灰色图像,请提供:

# 1. 系统版本
cat /etc/horizon_version

# 2. 相机话题列表
ros2 topic list | grep -E "camera|image"

# 3. 话题频率(启动相机节点后)
ros2 topic hz /stereo0/left/image_raw

# 4. dmesg 中的相机相关日志
dmesg | tail -50

关键提示:根据社区案例 [28778],MIPI 相机启动时添加 mipi_lpwm_enable:=True 参数可以解决部分图像抓取失败问题。建议优先尝试这个参数。

把你的排查结果补充到帖子中,这样能更快定位问题!

:magnifying_glass_tilted_left: 同样的问题再次出现!

你的 run_stereo.sh 脚本也存在 Windows 换行符问题,和之前的 run_cam.sh 是同一个原因。

:white_check_mark: 批量解决方案

步骤 1:一次性修复所有脚本

# 安装 dos2unix(如果还没安装)
sudo apt install dos2unix

# 批量转换文档目录下所有脚本
dos2unix /home/sunrise/文档/*.sh

# 或者手动指定文件
dos2unix /home/sunrise/文档/run_cam.sh
dos2unix /home/sunrise/文档/run_stereo.sh

步骤 2:验证转换结果

# 检查文件是否还有 Windows 换行符
file /home/sunrise/文档/run_stereo.sh
# 正确输出应该包含:ASCII text executable(不应该有 CRLF)

# 或者用 cat -A 查看(行尾应该是 $ 而不是 ^M$)
cat -A /home/sunrise/文档/run_stereo.sh | head -10

步骤 3:强烈建议 - 使用官方启动命令

不要依赖这些自定义脚本,直接使用官方推荐的启动方式更可靠:

# 加载环境
source /opt/tros/humble/setup.bash

# 启动 MIPI 双目相机(官方标准方式)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True

# 启动 StereoNet 深度算法
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.4_int8.launch.py

:bullseye: 为什么建议用官方启动命令?

自定义脚本 官方启动命令
:cross_mark: 容易有换行符问题 :white_check_mark: 系统自带,格式正确
:cross_mark: 环境变量可能未加载 :white_check_mark: 自动处理依赖
:cross_mark: 参数可能过时 :white_check_mark: 与系统版本匹配
:cross_mark: 错误难排查 :white_check_mark: 标准错误输出

:clipboard: 快速验证流程

# 1. 修复所有脚本
dos2unix /home/sunrise/文档/*.sh

# 2. 终止所有 ros2 节点
killall -9 ros2

# 3. 使用官方命令启动相机
source /opt/tros/humble/setup.bash
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True

# 4. 在新终端检查图像数据
ros2 topic hz /stereo0/left/image_raw
# 应该显示 30.0 Hz 左右的频率

# 5. 启动 StereoNet
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.4_int8.launch.py

长期建议

  1. 避免从 Windows 直接复制脚本到板卡
  2. 使用 git clonescp 传输文件
  3. 在板卡上直接用 vimnano 编辑脚本
  4. 优先使用官方提供的 launch 文件,而非自定义脚本

请先执行步骤 1 修复所有脚本,然后尝试官方启动命令。如果还有问题,请补充:

# 系统版本
cat /etc/horizon_version

# 相机话题频率
ros2 topic hz /stereo0/left/image_raw

# StereoNet 启动日志(前 30 行)
# 启动后复制输出

把排查结果补充到帖子中,这样社区能更快帮你解决问题!

:magnifying_glass_tilted_left: 问题定位:StereoNet 收不到相机图像数据

从错误日志看,核心问题是:StereoNet 节点没有收到相机图像,导致 hobot_codec_republish 报错。

:white_check_mark: 排查步骤

步骤 1:检查相机节点是否正常启动

# 加载环境
source /opt/tros/humble/setup.bash

# 查看正在运行的节点
ros2 node list

# 应该能看到 mipi_cam 或类似名称的节点

步骤 2:验证相机话题是否有数据

# 查看所有图像相关话题
ros2 topic list | grep -E "image|camera"

# 检查左目图像话题频率(关键!)
ros2 topic hz /stereo0/left/image_raw

# 检查右目图像话题频率
ros2 topic hz /stereo0/right/image_raw

预期结果:应该显示 30.0 Hz 左右。如果显示 0.0 HzNo messages received,说明相机没有正常发布数据。

步骤 3:检查 StereoNet 订阅的话题

根据错误日志,StereoNet 期望的话题是 /StereoNetNode/stereonet_visual,但相机发布的是 /stereo0/left/image_raw话题不匹配

# 查看 StereoNet 节点信息
ros2 node info /StereoNetNode

# 查看它订阅了哪些话题
ros2 topic list | grep stereonet

步骤 4:使用正确的启动顺序

必须先启动相机,再启动 StereoNet

# 终端 1:启动 MIPI 双目相机
source /opt/tros/humble/setup.bash
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True

# 等待 3 秒,确认相机启动成功

# 终端 2:验证相机有数据
ros2 topic hz /stereo0/left/image_raw
# 确认显示 30.0 Hz 后再继续

# 终端 3:启动 StereoNet
source /opt/tros/humble/setup.bash
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.4_int8.launch.py

步骤 5:检查系统版本(关键)

根据社区案例 [33972],这个问题在旧版本系统中常见:

# 检查系统版本
cat /etc/horizon_version

建议:如果是 3.1.1 之前的版本,建议升级系统镜像。

:bullseye: 快速验证方案

按顺序执行以下命令:

# 1. 终止所有 ros2 节点
killall -9 ros2
sleep 2

# 2. 重新加载环境
source /opt/tros/humble/setup.bash

# 3. 启动相机(单独启动,先不启动 StereoNet)
ros2 launch mipi_cam mipi_cam_dual_channel.launch.py mipi_lpwm_enable:=True &

# 4. 等待 5 秒,检查话题
sleep 5
ros2 topic hz /stereo0/left/image_raw

# 5. 如果有数据(显示 30.0 Hz),再启动 StereoNet
ros2 launch hobot_stereonet stereonet_model_web_visual_v2.4_int8.launch.py

:clipboard: 请补充以下信息

如果上述步骤后仍有问题,请提供:

# 1. 系统版本
cat /etc/horizon_version

# 2. 正在运行的节点列表
ros2 node list

# 3. 所有图像话题
ros2 topic list | grep image

# 4. 左目图像话题频率
ros2 topic hz /stereo0/left/image_raw

# 5. StereoNet 节点信息
ros2 node info /StereoNetNode

关键提示

  • 确保先启动相机,确认有数据后再启动 StereoNet
  • 检查系统版本,旧版本可能存在兼容性问题
  • 如果话题不匹配,可能需要修改 StereoNet 的配置文件

把排查结果补充到帖子中,这样能更快定位问题!

你好,请先确认系统版本与Tros版本是否满足需求 双目深度算法 | RDK DOC