问题已明确定位!两个核心错误
从日志看到明确的报错:
错误 1:render_type 参数类型不匹配
parameter 'render_type' has invalid type:
Wrong parameter type, parameter {render_type} is of type {string},
setting it to {integer} is not allowed.
错误 2:MIPI 相机节点崩溃
[ERROR] [mipi_cam]: There are no available host.
(这通常是因为相机资源被占用或配置冲突)
完整解决方案
步骤 1:修改 render_type 为字符串格式
# 编辑 run_stereo.sh
vim run_stereo.sh
# 找到 render_type 配置行(大约在第 20-50 行之间)
# 将数字格式改为字符串格式:
# 错误写法(当前):
render_type=0
# 或
render_type=1
# ✅ 正确写法:
render_type="distance"
# 或
render_type="raw"
步骤 2:解决 MIPI Host 不可用问题
这个错误通常是因为相机资源被之前的进程占用。执行以下命令清理:
# 1. 杀掉所有可能占用相机的进程
killall mipi_cam
killall stereonet_model_node
killall hobot_codec_republish
# 2. 检查是否有残留进程
ps aux | grep -E "mipi|stereo|codec"
# 3. 如果有,强制杀掉
sudo kill -9 <PID>
# 4. 重启板子(最彻底的方法)
sudo reboot
步骤 3:检查标定文件
日志显示标定文件路径:
camera_calibration_file_path: /opt/tros/humble/lib/mipi_cam/config/calib_params.yaml
确认文件存在:
ls -la /opt/tros/humble/lib/mipi_cam/config/calib_params.yaml
如果文件不存在,需要从官方套件获取或重新标定。
完整修复命令(一键执行)
# 1. 备份原脚本
cp run_stereo.sh run_stereo.sh.bak
# 2. 修改 render_type 为字符串格式
sed -i 's/render_type=0/render_type="distance"/g' run_stereo.sh
sed -i 's/render_type=1/render_type="distance"/g' run_stereo.sh
sed -i 's/render_type=2/render_type="distance"/g' run_stereo.sh
# 3. 确认修改成功
grep "render_type" run_stereo.sh
# 4. 清理残留进程
killall mipi_cam 2>/dev/null
killall stereonet_model_node 2>/dev/null
killall hobot_codec_republish 2>/dev/null
# 5. 等待 3 秒后重新运行
sleep 3
bash run_stereo.sh --stereonet_version v2.4
如果问题依旧
请补充以下信息到帖子:
# 1. 确认 render_type 修改后的内容
grep -A2 -B2 "render_type" run_stereo.sh
# 2. 标定文件状态
ls -la /opt/tros/humble/lib/mipi_cam/config/calib_params.yaml
# 3. StereoNet 版本
apt list --installed | grep hobot_stereonet
# 4. 系统版本
cat /etc/issue
相关参考
- 基于官方 132GS MIPI 双目相机运行双目 Demo 报错 - 同类问题完整解决方案
- 132GS MIPI 双目相机如何自行标定 - 标定文件配置指南
优先执行步骤 1 + 步骤 2,render_type 类型错误是 StereoNet 节点崩溃的直接原因,MIPI host 问题通常是进程残留导致的。