You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS Noetic中/set_camera_info服务缺失致相机校准失败求助

解决ROS Noetic单目相机校准中/set_camera_info服务缺失的问题
  • 确认相机驱动节点的服务支持
    首先检查负责Mavic2 Pro图像发布的ROS节点是否原生提供/camera/set_camera_info服务。执行rosnode list找到图像发布节点,再用rosservice list | grep set_camera_info排查服务是否存在。多数第三方相机驱动默认不会启动该服务,需手动配置补充。

  • 通过camera_info_manager托管服务
    若驱动节点不提供该服务,可借助camera_info_manager包创建并管理服务。修改或新增launch文件,添加以下配置:

    <node name="camera_info_manager" pkg="camera_info_manager" type="camera_info_manager" output="screen">
      <param name="camera_name" value="camera"/>
      <param name="url" value="file:///home/your_user/calib_temp.yaml"/> <!-- 临时路径,校准后自动写入数据 -->
      <remap from="camera/image" to="/mavic2/image_raw"/> <!-- 映射到实际图像话题 -->
    </node>
    

    启动节点后,再次用rosservice list确认/camera/set_camera_info是否出现。

  • 校准工具的话题与服务匹配
    运行cameracalibrator.py时,必须确保参数与实际话题、服务命名完全一致。例如图像话题为/camera/image_raw、服务为/camera/set_camera_info时,启动命令应为:

    rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
    

    其中camera:=/camera参数指定校准工具关联的服务命名空间,需与实际服务路径一致。

  • 排查命名空间与重映射问题
    若launch文件使用了命名空间(如<group ns="drone">),服务路径会变为/drone/camera/set_camera_info,此时校准命令需同步添加命名空间:

    rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/drone/camera/image_raw camera:=/drone/camera
    

    用rostopic list和rosservice list确认所有话题、服务的完整路径,避免命名不匹配。

  • 验证camera_info话题输出
    校准工具保存数据前依赖camera_info话题的正常发布。执行rostopic echo /camera/camera_info检查是否有数据输出,若为空,需确保camera_info_manager节点正确关联图像话题,或驱动节点已配置发布camera_info。

内容的提问来源于stack exchange,提问作者AnnaJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:35:20