这里主要总结下最近看的关于 CABSL 的代码和资料。

行为规范语言 CABSL (有限状态机)控制机器人在比赛中的行为。B-Human 系统中执行动作选择的部分称为行为控制。

? 下面这个图放大其实还清楚,在官方文档的 6.1 节。

执行顺序

机器人比赛执行的策略文件都在Modules/BehaviorControl/BehaviorControl/Options下,Roles 中包含了Bhuman 源码中自带的一个Striker Demo。

Soccer.h 是 Bhuman 代码执行的根目录,Nao开机后就会执行 Soccer.h 中的代码。

在注释中触发实际足球行为的主要状态,这里调用的是Modules/BehaviorControl/BehaviorControl/Options/GameControl/HandlePenaltyState.h,对应的状态为:按一次胸口 Nao 站起来(upright),两次进入惩罚模式(penalized),三个非惩罚(notPenalized),开始执行 Striker 的代码。

HandlePenaltyState.h的最后,我们可以看到:

  /** Play soccer! */state(playing){action{PlayingState();}}

跟进到 PlayingState.h 中:

好吧,终于进来了,如上面所说,最终调用到Striker()这个前锋Demo:

CABSL

在 CABSL 中,使用了以下的基本元素:options(选项), states(状态), transitions(转换), actions(动作)。一个行为由一组在选项图中排列的选项组成。有一个单一的启动选项,所有其他选项都被调用;这是选项图的root。每个选项都是有限状态机,它?述了一个特定的行为部分,比如机器人的技能或头部运动,或者它结合了这样的基本特征。每个选项都以它的 intital_state 开始。在一个状态中,可以执行的动作可以调用另一个选项,并执行任何 c++代码,例如修改行为控制?供的 representations。此外,在每个状态内都有一项关于转换到另一个状态(在选项内)的决定。像动作一样,转换能够执行 c++代码。【译 6.1】

option

common_transition

option 可以理解为机器娃的一套动作。

在每一个 option 中 common_transition 是**全局的(此option)**不停运行的逻辑判断,优先级别最高,不论当前执行到哪一个 state,只要满足了 common_transition 中的条件,就会跳出,goto 到指定的另一个 option。

如下图中,当摄像头不 ok 他就一直 sitDown。

state

state 是一种状态,只能通过 goto 进入。state 中有普通的 transition(不是必须有) 和 action。

action 是执行的一些动作,可以是某些函数或者跳到别的地方。transition 是在这个 state 中一直在判断,当满足条件就 goto 跳转。

initial_state

initial_state 是进 option 中的初始化状态,进入 option 后自动执行 initial_state 中的行为。

action_done

action_done 表示 state 中的 action 执行完毕在 transition 中判断 action_done 可以在 state 动作执行完后跳到别的 state 中。

action_aborted

action_aborted 表示动作未执行完或者意外终止。


Nao机器人-CABSL相关推荐

  1. python控制nao机器人_python控制nao机器人身体动作实例详解

    本文实例为大家分享了python控制nao机器人身体动作的具体代码,供大家参考,具体内容如下 今天读的代码,顺便写了出来,与文档的对比,差不多. import sys import motion im ...

  2. nao机器人行走速度_数计学院学子在2020世界机器人大赛总决赛中荣获佳绩!

    12月3日至6日,2020世界机器人大赛总决赛在佛山潭州国际会展中心举行.由武汉纺织大学数学与计算机学院何儒汉教授指导,杨皓然.成振瑞.李幸阜.伏嘉豪.李创等5名本科生同学组成的参赛团队荣获 2020 ...

  3. Nao机器人运行B-human代码之开始篇 1

    申明:既然在网上有介绍安装B-human软件的,我就不写了,在此转载.原文地址:http://www.cnblogs.com/followyourheart/archive/2012/03/12/B- ...

  4. Nao机器人运行B-human代码之基础篇

    1 安装ubuntu 最简单的方法,下载桌面版的Ubuntu10.10,解压或者是用虚拟光驱(推荐使用DAEMON)加载.运行wubi.exe,选择在window中安装,下一步,选择安装位置,一般选一 ...

  5. NAO机器人连接的电脑配置及用choregraphe控制nao行走

    1.安装python 1.1.网址https://www.python.org/downloads/,选择python2,下载安装并添加环境变量(此电脑右键-属性-高级系统设置-环境变量-编辑-新建- ...

  6. nao机器人学习笔记1

    nao机器人来到实验室有几个月了,之前对这个平台进行了熟悉并准备在此平台上实现一个足球机器人的功能.在学习时做了相关的 记录主要是熟悉nao的一些零散的东西,决定整理整理写出来. 关于python的一 ...

  7. Nao机器人如何实现视频监控

    最近发现群里有朋友在问如何实现Nao机器人视频监控,就写下这篇博客,希望能帮助到大家. 直入正题,法国Nao机器人如何实现视频监控,这里提供三种方式,第一种是基于socket传输的,第二种是使用ope ...

  8. nao机器人行走速度_基于PID控制的NAO机器人循线行走技术研究

    基于 PID 控制的 NAO 机器人循线行走技术研究 秦 娇,王向华 [摘 要] 智能机器人的循线行走技术在工业安全领域具有重要意义.选用 NAO 机器人作为研究平台,创新点在于将其在平面上的运动学动 ...

  9. python编程控制机器人_python程序控制NAO机器人行走

    最近重新学习nao的官方文档,写点简单的程序回顾一下.主要是用python调用api,写下来保存着. '''Walk:small example to make nao walk''' import ...

最新文章

  1. 用dedecms自定义表单创建简易自助预约系统
  2. 【Java】6.9 枚举类
  3. SQL Server HA - 数据库镜像2 (Mirroring)(1418错误解决)
  4. android imap开发,企业邮箱在Android(安卓)系统手机上POP3/IMAP协议如何设置
  5. 项目中使用粘性布局不起作用_项目中的 Git 使用规范
  6. 经济寒冬?毕业生找不到好工作?来看看这个。
  7. 教你玩转CSS 导航栏
  8. 牛顿迭代法c 语言程序,牛顿迭代法 c语言实现
  9. MyEclipse导入项目后 js文件报错
  10. jquery源码抽丝剥茧--把jquery最小化
  11. android用java写文本框_Android 使用TextView实现验证码输入框
  12. 部门级服务器一般支持几个cpu,部门级服务器简介
  13. 来了!苹果二代AirPods 3月发布 全黑配色加入
  14. talend工具中往oracle插数据报ORA-01461: can bind a LONG value only for insert into a LONG colum...
  15. 13.docker exec
  16. 字节码指令之加载与存储指令
  17. mysql 表单记录主键重新从1开始排序
  18. 身神话继续遭受DDOS进攻,也遭受了雷同的陵犯
  19. 使用TestCafe进行UI测试
  20. 商品订单从购物车页面提交

热门文章

  1. python+selenium爬取蜻蜓FM有声小说链接
  2. 网民热议:顺丰菜鸟之争凸显大数据巨大商业价值
  3. 转自IT傻博士 ip directed-broadcast
  4. SQL语句学习(自学记录)
  5. 常用API部分测试题
  6. 1658. 合法标识符
  7. 什么是BioMed Central?
  8. React 生命周期总结(新旧对比)
  9. MS建模后转成LAMMPS的data文件
  10. 【Benewake(北醒) 】中距 TF02-Pro 40m介绍以及资料整理