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

ROS2自定义含sensor_msgs/Image的消息报错求助:UnsupportedTypeSupport

问题根源

这个错误的核心原因是你的自定义消息依赖sensor_msgs/Image,但tutorial_interfaces包未正确配置依赖项,导致ROS2代码生成工具没有为包含外部消息类型的自定义消息生成完整的C类型支持文件,进而Python无法导入对应的类型支持。

解决步骤

1. 修正package.xml

确保package.xml中添加对sensor_msgs的依赖,同时声明消息生成所需的工具依赖:

<!-- 添加sensor_msgs依赖 -->
<depend>sensor_msgs</depend>

<!-- 消息生成相关基础依赖(若未添加) -->
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>

2. 修正CMakeLists.txt

在CMakeLists.txt中完成以下配置:

  • 找到sensor_msgs包
  • 生成自定义消息时关联sensor_msgs依赖
  • 导出运行时依赖

关键修改部分如下:

# 查找sensor_msgs包
find_package(sensor_msgs REQUIRED)

# 生成自定义消息,指定依赖sensor_msgs
rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/Cropimage.msg"
  DEPENDENCIES sensor_msgs
)

# 导出运行时依赖,确保Python能找到类型支持文件
ament_export_dependencies(rosidl_default_runtime)

3. 重新编译并刷新环境

在ROS2工作空间根目录执行:

colcon build --packages-select tutorial_interfaces
source install/setup.bash

4. 验证修复

重新运行Python代码,尝试导入消息:

from tutorial_interfaces.msg import Cropimage
补充说明

自定义消息包含其他包的消息类型时,必须在package.xml和CMakeLists.txt中明确声明依赖,否则ROS2代码生成器无法正确处理跨包消息类型,导致类型支持文件缺失,最终触发Python导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:57