Nao机器人——对Bhuman代码的理解2

Bhuman自带的demo中实现的功能是很基础的,很多功能需要自己找接口添加,其实bhuman发布出来的源码都是阉割版的,除了步态,simRobot,标定工具等调试工具很好用以外,许多图像识别并不好用,但是它给了一个很好的框架供我们开发(如果能有办法把例如halcon等软件的第三方库烧进去使用图像识别问题就能变得很轻松)
这里以修改哨声识别为例,简单讲下如何添加、修改Representation里的接口。

在Options中的代码使用the+Representation中的类名.成员及可实现调用,(不用声明对象)需要注意的是,Options里可以自己定义变量,例如int a=10;但是不能对Representation中的类成员赋值,例如theWhistle.confidenceOfLastWhistleDetection=50; 则会 错。
此外,因为使用了Representation中的类,需要在BehaviorControl.h中添加头文件,并且REQUIRES(Whistle)

他为Whistle类PROVIDES,每一个PROVIDES对应一个update函数,而且必须要有,为PROVIDES的类提供信息更新。

update函数中传入提供更新的类的引用,在函数的实现中可以给类中的变量赋值,例如赋值 currentWhistle.confidenceOfLastWhistleDetection = 33
(之前说过option中是不能给变量赋值的,赋值变量或者更改状态一般都是在update函数中完成的)
第一篇博客说过个人认为Modules里的模块是机器人开机后就不停执行的,update函数相当于模块获取外界信息,为Representation中的类信息提供更新。

顺带提一下在代码中经常会看这样的东西

这些都是调试用的,在simRobot可以通过get,dr等指令查看这些调试信息,调试的时候非常有用,哨声的判断阈值等也可以通过set指令在simRobot中更改。
个人经验如有错误欢迎指出,欢迎讨论。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月15日
下一篇 2018年11月15日

相关推荐