ROS action笔记(一)---- action的生成

7 篇文章 1 订阅
2 篇文章 0 订阅

ROS action笔记(一)---- action的生成


Introduction

在这里插入图片描述
action 主要分为client与server, 二者同时并行。client向server发送执行目标,server向client实时返回feedback与完成目标后的result.
feedback与goal的区别在于,feedback是在执行过程中可以不断返回的,而result只有在最后阶段返回。

生成 .action

# file name : move_and_scan.action
# Move the robots to the given views. if no goals given, scan surrounds
# goal 
string[] target_robot_names
TaskAssignments[] tasks
---
# result
uint8 robot_name
---
# feedback 
string robot_name
uint32 task_order
uint32 robot_id

以此为例,写一个move_and_scan.action的文件,分别存储goal result 与feedback.
其中只能存储基本的变量类型,vector使用[ ]表示。

自定义的变量类型

比如在move_and_scan任务中定义一个叫做TaskAssignment的类用来表示机器人的每个任务,我们需要写一个msg文件来表示。

# file name : TaskAssignment.msg
geometry_msgs/Pose[] task_assignments_per_robot 

从而,每个goal中的TaskAssignment表示一个ROS中Pose的向量。

cmake编译

cmake_minimum_required(VERSION 3.10)
project(virtual_scan)

find_package(catkin REQUIRED COMPONENTS
  actionlib
  actionlib_msgs
  camera_calibration_parsers
  cv_bridge
  gazebo_msgs
  geometry_msgs
  image_transport
  message_generation
  rosconsole
  roscpp
  std_msgs
  tf2
  tf2_geometry_msgs
)

add_message_files(
  FILES
  TaskAssignments.msg
)

add_action_files(DIRECTORY action
  FILES
    MoveAndScan.action
)


generate_messages(DEPENDENCIES std_msgs geometry_msgs actionlib_msgs)

catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS message_runtime std_msgs geometry_msgs actionlib_msgs 
)


add_executable(virtual_scan_server
  src/virtual_scan_server_node.cpp
  src/virtual_scan_server.cpp
)

add_dependencies(virtual_scan_server ${${PROJECT_NAME}_EXPORTED_TARGETS})

target_link_libraries(virtual_scan_server
  PRIVATE
    ${catkin_LIBRARIES}
)

target_include_directories(virtual_scan_server
  PRIVATE
    include
    ${catkin_INCLUDE_DIRS}
)

target_compile_features(virtual_scan_server
  PUBLIC
    cxx_std_17
)

cmake 编写如上,之后直接catkin build即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值