1.创建行为消息
开始编写行为之前,要先创建行为消息,即定义目标goal、结果result和反馈feedback。格式如下:
#goal definition
int32 order
---
#result definition
int32[] sequence
---
#feedback
int32[] sequence
为了使make进程中生成消息文件,需要在CMakeList.txt中添加以下几项:
find_package(catkin REQUIRED COMPONENTS actionlib_msgs)
//添加actionlib_msgs包作为参数到find_package宏中
//message_generation会自动传递
add_action_files(
DIRECTORY action
FILES Fibonacci.action
)
//在add_action_files()宏中添加要生成行为消息的action文件
generate_messages(
DEPENDENCIES actionlib_msgs std_msgs
)
//generate_messages添加actionlib_msgs
catkin_package(
CATKIN_DEPENDS actionlib_msgs
)
//catkin_package中添加actionlib_msgs
//message_runtime会自动传递
然后工作空间根目录执行catkin_make会自动生成消息文件
nameActionGoal.msg
nameActionResult.msg
nameActionFeedback.msg
nameAction.msg
nameFeedback.msg
nameResult.msg
nameGoal.msg
消息头文件
nameActionFeedback.h
nameAction.h
nameActionGoal.h
nameActionResult.h
nameFeedback.h
nameResult.h
nameGoal.h
为了从这个文件手动生成消息文件,从actionlib_msgs包使用genaction.py脚本。
2.编写简单的服务器
action的机制有点像service只不过多了一个feedback
/*fibonacci_server.cpp*/
#include <ros/ros.h>
#include <actionli