CABSL介绍
CABSL 中,有以下的基本元素:options(选项), states(状态), transitions(转换), actions(动作)。一个行为由一组在选项图中排列的选项组成。有一个单一的启动选项,所有其他选项都被调用;这是选项图的root。每个选项都是有限状态机,它?述了一个特定的行为部分,比如机器人的技能或头部运动,或者它结合了这样的基本特征。每个选项都以它的 intital_state 开始。在一个状态中,可以执行的动作可以调用另一个选项,并执行任何 c++代码,例如修改行为控制?供的 representations。此外,在每个状态内都有一项关于转换到另一个状态(在选项内)的决定。像动作一样,转换能够执行 c++代码。
Option
Option中的代码和普通的C++稍有不同,具体参考PDF第六章,option里的语法是CABSL结构(这些语法都是通过宏来实现的),具体表现为:option(name,xx,xx):括号中第一个参数为名字,一般与图的名字相同; 第二或以后的参数为变量。
transition
①common_transition是随着图执行就在不停运行的逻辑判断,不管当前执行到该option的哪一个state,一旦满足条件就会结束当前行为,goto相应的state。
②普通transition只在当前的state中判断,满足条件xxxxx,goto yyyyy state
state
①state()是某种状态,相当于“大盒子”里的“小盒子”,只能通过goto 盒子名字进入。
②initial_state是进option中的初始化状态,自动执行 initial_state中的行为。
action
①action是当前state执行的行为,可以是某些函数或者跳到别的option中。
②action_done表示state中的action执行完毕,在transition中判断action_done可以再state动作执行完后跳到别的state中。
③action_aborted表示动作未执行完或者意外终止。
CABSL语法理解
①基于c++,底层封装良好,故可带着c++语言基础并以一种新的心态看待CABSL语言,学习理解其语法。
像之前学习Qt一样( ̄︶ ̄*))
②可将option看作类函数,较容易理解。
③使用大量goto语句,其实在一定程度上简化理解。