ROS2 同一个pkg里定义自定义action、msg报错

参考

主要就是在定义完可执行文件后加入

cpp 复制代码
rosidl_target_interfaces(fibonacci_action_server
  ${PROJECT_NAME} "rosidl_typesupport_cpp")
末尾加
 ament_export_dependencies(rosidl_default_runtime) 
 同时别忘记 packagexml定义 rosidl_default_runtime

完整Cmakelists,txt

cpp 复制代码
cmake_minimum_required(VERSION 3.8)
project(mypkg)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_action REQUIRED)
find_package(example_interfaces REQUIRED)


find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "action/Fibonacci.action"
)



if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

add_executable(fibonacci_action_server src/fibonacci_action_server.cpp)
ament_target_dependencies(fibonacci_action_server 
rclcpp rclcpp_action example_interfaces rosidl_default_runtime)
rosidl_target_interfaces(fibonacci_action_server
  ${PROJECT_NAME} "rosidl_typesupport_cpp")



add_executable(fibonacci_action_client src/fibonacci_action_client.cpp)
ament_target_dependencies(fibonacci_action_client 
rclcpp 
rclcpp_action 
example_interfaces 
rosidl_default_runtime)

rosidl_target_interfaces(fibonacci_action_client
  ${PROJECT_NAME} "rosidl_typesupport_cpp")

install(TARGETS
  fibonacci_action_server
  fibonacci_action_client
  DESTINATION lib/${PROJECT_NAME})
  
 ament_export_dependencies(rosidl_default_runtime) 
ament_package()
cpp 复制代码
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>mypkg</name>
  <version>0.0.0</version>
  <description>TODO: Package description</description>
  <maintainer email="lzq@todo.todo">lzq</maintainer>
  <license>TODO: License declaration</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <depend>rclcpp</depend>
  <depend>rclcpp_action</depend>
  <depend>example_interfaces</depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>
  
  <build_depend>rosidl_default_generators</build_depend>
  <exec_depend>rosidl_default_runtime</exec_depend>
  <member_of_group>rosidl_interface_packages</member_of_group>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>
相关推荐
辰尘_星启3 天前
【ROS2】IDL(Interface Definition Language)语法解析和使用
ros2·idl
悠哉悠哉愿意9 天前
【智能系统项目开发与学习记录】bringup功能包详解
学习·机器人·ros2
悠哉悠哉愿意14 天前
【ROS2学习笔记】URDF 机器人建模
笔记·学习·机器人·ros2
悠哉悠哉愿意15 天前
【ROS2学习笔记】 TF 坐标系
笔记·学习·ros2
悠哉悠哉愿意15 天前
【ROS2学习笔记】RViz 三维可视化
笔记·学习·机器人·ros2
悠哉悠哉愿意15 天前
【ROS2学习笔记】分布式通信
笔记·学习·ros2
悠哉悠哉愿意16 天前
【ROS2学习笔记】rqt 模块化可视化工具
笔记·学习·机器人·ros2
悠哉悠哉愿意17 天前
【ROS2学习笔记】Gazebo 仿真与 XACRO 模型
笔记·学习·机器人·ros2
悠哉悠哉愿意17 天前
【ROS2学习笔记】节点篇:ROS 2编程基础
笔记·学习·ros2
悠哉悠哉愿意17 天前
【ROS2学习笔记】话题通信篇:话题通信项目实践——系统状态监测与可视化工具
笔记·学习·ros2