以下是我在阅读执行器说明的一些内容,我想这对于阅读执行器的源代码还是有所帮助的。如果有什么写的不对的,请大家提出来帮忙修改一下。(主要来源于源代码说明)
规划树和状态树
规划树和状态树是执行器运行和处理所涉及的主要数据结构。
规划树是一棵包含了规划节点的树(结构节点源于结构规划),它是由规划器传递而来的。每一个规划节点都有与之相对应的表达树,用来描述它的目标列表、符合条件等。在执行器启动期间,我们建一棵与之相对应的结构相同的树,这棵树包含了执行器的状态节点——每个规划和表达节点都有与之相对应的执行器状态节点。状态树中的每一个节点都有一个指向规划树中对应节点的指针,并加上了该类型节点需要完成的执行器状态数据。这个安排允许规划树如同被涉及的执行器一样完全是只读的:所有数据仅当在状态树执行期间可以被修改。只读规划树使得规划缓存和重用的过程变得更为简单。
总的来说,在这些树中使用到的有四类节点:规划节点、与它们相对应的规划状态节点、计算表达式节点和与它们相对应的计算表达式状态节点。(实际上,这里也有列表节点,它们一般被看作为四种树之间“粘贴剂”。)
姓名:吴冰 主题:执行器