自省

自省(introspection)是机器人API、能力、监控及被监控功能操作的基础。机器人知道所有可以使用的API函数。卸载一个库就会自动移除所有相应的API函数。在模块里定义的函数可以通过“BIND_METHOD”来添加到API(定义在“almodule.h”里)。

如果绑定一个函数(仅为3行源代码),就可使用以下功能:

  • 使用C++和Python里的调用函数
  • 函数被执行时,使用“Know”函数
  • 本地执行函数,或从一台电脑或另一个机器人远程执行函数
  • 调用等待(wait)、停止(stop),运行中(isRunning on)函数

ALModule::functionName(std::string functionName,std::string moduleName,std::string methodDescription") 在模块里添加新函数
ALModule::addParam(std::string parameterName, std::string parameterDescription) 参数说明
ALModule::setReturn(std::string returnName, std::string returnDescription) 添加返回值

// C++ sample functionName("myFonction", "myModuleName", "function description"); addParam("paramName", "parameter description"); setReturn( "value", "description the value returned"); BIND_METHOD( myModuleName::myFonction );

#python sample # warning: this sample can only be executed in pythonBridge interpreter or Choregraphe class myModule(ALModule): def myMethodToAddToAPI(self): "" modulePython = myModule("modulePython") modulePython.BIND_PYTHON("modulePython","myMethodToAddToAPI")

API显示在一个网页浏览器上。只需输入机器人的网页地址和端口(9559),例如“http://127.0.01:9559”,机器人就会显示其模块列表、方法列表、方法参数、说明及范例。浏览器还会显示那些可以监控、停止或使其处于等待状态的并行方法。

NaoQi introspection





Copyright © 2010 Aldebaran-Robotics - 版权所有