Bhuman应用篇——带球及踢球

  • 带球走位
  • 大力射门

带球走位

  • \Config\WaklKicks 目录下有一些cfg文件,记录了动作的信息。foward中为机器人小碎步向前踢球; turnOut为机器人向旁边踢球,以便于能够绕开挡在前面的敌方机器人。
  • \Src\Modules\BehaviorControl\BehaviorControl\Options\Output\MotionRequest目录下有一个文件InWalkKick.h ,提供了机器人使用那些cfg文件的动作的接口。调用示例如下:
#表示机器人走到球的后方160mm,左方55mm处,朝着angleToOpponentKeeperLeft方向,使用右脚以forward的方式踢球。
InWalkKick(WalkKickVariant(WalkKicks::forward, Legs::right), Pose2f(theLibCodeRelease.angleToOpponentKeeperLeft, theBallModel.estimate.position.x() - 160.f, theBallModel.estimate.position.y() + 55.f))
  • 我们打开InWalkKick.h文件,发现里面使用了theMotionRequest和WalkKickVariant
    打开 \Src\Representations\MotionControl\MotionRequest.h,在使用InWalkKick时,Motion设置为walk。
    上面有一个include WalkRequest.h和KickRequest.h。同样打开此目录下的WalkRequest.h文件。我们可以看到WalkKickVariant和include部分

    根据include的提示,可以找到WalkKicks.h文件。里面可以找到:
  • 在此处可以添加一些其他的动作,并在第一步的目录下添加对应的cfg文件。

大力射门

在上面的MotionRequest.h文件中有一个名为kickMotion
同样在**\Src\Modules\BehaviorControl\BehaviorControl\Options**目录下并未找到关于Kick Motion的API。因此我们需要自己编写。

  • 在**\Src\Modules\BehaviorControl\BehaviorControl\Options\Output\MotionRequest**目录下创建一个文件,例如KickBigFoot.h
  • 在**\Src\Modules\BehaviorControl\BehaviorControl**下的Option.h文件中添加
#include "Options/Output/MotionRequest/KickBigFoot.h"
  • 打开上面的MotionRequest.h中提到的KickRequest.h,有一个名为KickRequest的STREAMABLE对象。里面有一些成员,其中有个ENUM对象,其中包含kickForward。

    这个kickForward对应着 \Config\KickEngine 下面的kickForward.kmc文件。
  • 根据以上说明,我们可以模仿 \Src\Modules\BehaviorControl\BehaviorControl\Options\Output\MotionRequest 中的SpecialAction.h编写KickBigFoot.h文件,让机器人踢得更远。代码如下:
#ifndef KICKBIGFOOT_H
#define KICKBIGFOOT_H
/*** The option executes a kick generated by the KickEngine.*/
option(KickBigFoot, ((KickRequest)KickMotionID)id, (bool)(false) mirror)
{/** Set the motion request / kickType. */initial_state(setRequest){transition{if(theMotionInfo.motion == MotionRequest::kick && theMotionInfo.kickRequest.kickMotionType == id && theMotionInfo.kickRequest.mirror == mirror)goto requestIsExecuted;}action{theMotionRequest.motion = MotionRequest::kick;theMotionRequest.kickRequest.kickMotionType = id;theMotionRequest.kickRequest.mirror = mirror;}}/** Executes the kick */state(requestIsExecuted){transition{if(theMotionInfo.motion == MotionRequest::kick || theMotionInfo.kickRequest.kickMotionType == id || theMotionInfo.kickRequest.mirror == mirror)goto setRequest;}action{theMotionRequest.motion = MotionRequest::kick;theMotionRequest.kickRequest.kickMotionType = id;theMotionRequest.kickRequest.mirror = mirror;}}
}#endif /* KICKBIGFOOT_H */
  • 调用时,格式如下:
KickBigFoot(KickRequest::kickForward)

其中kmc文件是记录踢球时动作的关键帧文件,在更早的Bhuman版本(比如2016)中,提供了一个制作kmc文件的模块。在此版本中可能需要手动调哪个文件了。

Bhuman应用篇——带球及踢球相关推荐

  1. 机器人和真人踢足球有什么区别?带球用“嘴”,争抢靠“吸”!

    正当2018年俄罗斯世界杯激战正酣时,加拿大蒙特利尔也举办了一场足球世界杯,不过参赛球员并非人类,而是机器人. 日前,在Robocup2018(机器人世界杯)比赛中,浙江大学ZJUNlict队获得机器 ...

  2. 文本生成 | 一篇带风格的标题生成的经典工作

    每天给你送来NLP技术干货! 来自:AI算法小喵 写在前面 在一文详解生成式文本摘要经典论文Pointer-Generator中我们介绍了生成式摘要的经典模型,今天我们来分享一篇带风格的标题生成的经典 ...

  3. Bhuman应用篇——守门员防守之SpecialAction

    Bhuman应用篇--守门员防守之SpecialAction 添加SpecialAction mof文件语法 案例 添加SpecialAction 在 \Src\Representations\Mot ...

  4. 计算机英语读书笔记,大学英文读书笔记范文英语读书笔记十篇带翻译.doc

    大学英文读书笔记范文英语读书笔记十篇带翻译 My Room This is my room. Near the window there is a desk. I often do my homewo ...

  5. od 追踪_裁判员行为规范【基本功】——追踪裁判违例宣判练习 / 带球走违例

    当打出一个违例手势后,固定它,并在你的脑海里默念一两秒.要求有力,干脆,清晰和果断的手势. 手势程序:⑴停表手势,(2)取消得分手势 / 口语并用 / 如需要),⑶对应的违例手势 / 口语并用,⑷比赛 ...

  6. MyBatis-Plus - 一篇带你解决自定义 SQL 注入器失效必杀技

    问题分析 Invalid bound statement (not found) 如果你看到这一篇,说明你也是遇到这个问题的人(废话),我们在上一篇(MyBatis-Plus - 一篇带你玩转自定义 ...

  7. 这篇带你熟悉 SpringBoot+RabbitMQ 方式收发消息

    本文来源:juejin.im/post/6859152029823008781 本篇会和SpringBoot做整合,采用自动配置的方式进行开发,我们只需要声明RabbitMQ地址就可以了,关于各种创建 ...

  8. 一篇带你完全掌握线程的博客

    前言:最近一直在疯狂学习,之前也不太了解线程,现在基本都掌握了.如果你之前也不知道线程,也不知道进程和线程的区别等等,这一篇博客带你完全掌握,不掌握不要钱,哈哈哈! 一.线程概念 介绍概念之前,先画个 ...

  9. 再续!一篇带你了解那些适合日常使用的开源工具和应用(设计篇)

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 Part 2:设计篇 平面设计/图像设计 网页设计/网页开发 CAD 设计 影视设计/视频编辑 一.平面设计/图像设计 1.Krit ...

最新文章

  1. 设计模式复习-解释器模式
  2. 【JVM调优工具篇】使用MAT工具分析dump文件(查看GC Roots)
  3. IDEA配置Struts框架
  4. 自制Windows 7 注册表键值修改服务(Service)
  5. LeetCode 2101. 引爆最多的炸弹(图的遍历)
  6. 前端开发之模块化初探
  7. Ubuntu的LAMP与相关软件安装设置
  8. 软件工程与计算II-24-考试总结
  9. 自建 CA 中心并签发 CA 证书
  10. 刷入Magisk/SuperSU实现ROOT
  11. laravel 实现队列功能
  12. debug信息的认识
  13. c语言中如果产量的隐藏类型是,如果随着产量的增加,生产函数首先表现出边际产量增加,然后表现出边际产量递减,那么相应的边际成本曲线将 答案:是U形的...
  14. 程序员技术面常用知识点
  15. 皮尔逊相关系数R的代码实现
  16. mysql删除重复记录语句
  17. 把计算机器显示桌面,电脑显示器桌面过大怎么办
  18. vr模拟电力场景安全应急培训,电力安全教育培训新方法
  19. Fast-DDS库的安装教程
  20. docker mysql Incorrect string value: ‘\xE4\xB8\xAD\xE5\x9B\xBD‘ for column ‘nation‘ at row 1

热门文章

  1. 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细
  2. 我是如何学习安卓开发的
  3. 在电脑端微信或低版本ios,使用微信自带浏览器打开网页不显示
  4. 神经网络算法处理器设计,神经网络是机器算法吗
  5. 春分、冬至、黄道、赤道
  6. TPMS—胎压监测系统
  7. tcl/tk 的原生界面
  8. 垃圾分类回收APP开发解决方案
  9. 海定计算机计算标准差,标准差怎么算公式(标准差的计算例题)
  10. 《算法竞赛》被评为清华大学出版社2022年度“十佳图书”