前言
所有的Actionlib教程已经在中文ROS页面服务器上翻译,有兴趣的可以查看总目录: http://wiki.ros.org/cn/actionlib_tutorials/Tutorials
描述
这个教程涵盖了使用simple_action_server库来创建一个Fibonacci行为服务器。这个行为服务器教程会生成一个Fibonacci序列、目标的顺序序列、自身计算的反馈序列和最后序列的结果。
创建行为消息
开始编写行为之前,非常重要的事是定义目标,结果和反馈消息。行为消息会自动从.action'文件生成,对于更多行为文件信息查看actionlib文档。这个文件定义目标、结果和行为的反馈话题的类型和文本格式。使用你最喜欢的文本编辑器创建actionlib_tutorials/action/Fibonacci.action文件,并且用以下内容在该文件中添加:
#goal definition
int32 order
---
#result definition
int32[] sequence
---
#feedback
int32[] sequence
为了在make进程中自动生成消息文件,需要在CMakeLists.txt中添加一些小的内容。
- 添加actionlib_msgs包作为参数到find_package这个宏中,就像这样(如果你使用catkin_create_package生成的CMakeLists.txt,这一行可能已经添加):
find_package(catkin REQUIRED COMPONENTS actionlib_msgs)
- 注意CMake需要find_package actionlib_msgs (message_generation不需要明确的列出,因为以及被actionlib_msgs隐式的参考了).
- 使用add_action_files 宏来声明你想要生成的行为:
add_action_files( DIRECTORY action FILES Fibonacci.action )
- 调用generate_messages宏,不要忘记依赖actionlib_msgs和其他消息包,例如std_msgs:
generate_messages( DEPENDENCIES actionlib_msgs std_msgs # 或其他包含消息的包 )
- catkin_package也指定了CATKIN_DEPEND到actionlib_msgs。message_runtime自动传递依赖。
现在遵循以下,会自动生成你的action文件的msg文件,并且可以查看结果。
$ cd ../.. # 返回到你的catkin工作空间的最顶层
$ catkin_make
$ ls devel/sha