(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

CBState

Description: 本教程给出了一个如何使用CBState的示例,该状态在激活时简单地执行回调。

Tutorial Level: BEGINNER

Next Tutorial: 简单行为状态

Contents

  1. 描述
  2. 示例

   1 from smach import CBState

描述

这个状态在执行状态时简单地执行一个回调。这对于在状态中执行任意代码非常有用,无需声明一个新的状态类。这个类支持使用smach.cb_interface,它的API在这里可以找到。

CBState用至少一个参数调用回调:容器的userdata。可以将附加的参数和关键字参数用于构建的CBState。当执行CBState时,这些args将被传递到回调函数中。

示例

下面的示例将一个CBState添加到一个SMACH StateMachine中,它接受来自userdata的一些参数和变量,并将它们的总和存储在userdata键'xyz'中:

   1 @smach.cb_interface(input_keys=['q'],
   2                     output_keys=['xyz'],
   3                     outcomes=['foo'])
   4 def my_cb(ud, x, y, z):
   5     ud.xyz = ud.q + x + y + z
   6     return 'foo'
   7 ...
   8 with sm:
   9     ...
  10     StateMachine.add('MY_CB', CBState(my_cb,
  11                                       cb_args=[10],
  12                                       cb_kwargs={'z':2,'y':3}),
  13                               {'foo':'OTHER_STATE'})
  14     ...

Wiki: cn/smach/Tutorials/CBState (last edited 2018-03-10 07:30:42 by Playfish)