Skip to content

踩坑Robotics Stack Exchange2022-09-22

ROS2 同包自定义 msg 头文件无法 include ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:Creating a custom msg in ros2(Robotics Stack Exchange #23171)

状态:已解决

问题 ​

包内两个节点通信时创建 msg/Custom.msg,已生成 build/devenv/rosidl_generator_cpp/devenv/msg/custom.hpp,但源码中无法 include 该 hpp 文件。

环境 ​

ROS 2 (Humble / Jazzy) · ROS 2

解决办法 ​

  1. 保留 rosidl_generate_interfaces(${PROJECT_NAME} "msg/Custom.msg"),但还需让节点目标链接到生成的接口目标。
  2. ROS 2 Galactic 及以下:对节点如 my_node 添加 rosidl_target_interfaces(my_node ${PROJECT_NAME} "rosidl_typesupport_cpp")。
  3. ROS 2 Humble 及以上:添加 rosidl_get_typesupport_target(cpp_typesupport_target ${PROJECT_NAME} "rosidl_typesupport_cpp"),再用 target_link_libraries(my_node "${cpp_typesupport_target}")。

原问题作者:Mercury;采纳答案作者:Geoff。原内容依 CC BY-SA 4.0 授权,本页摘要同样依 CC BY-SA 4.0 授权。

来源

本页事实对应的公开页面,以原文为准。

  1. Robotics Stack Exchange #23171:Creating a custom msg in ros2访问 2026-10-22