NAO Robot Learning_4 naoqi 详析

naoqi:是运行在机器人系统上的一个应用程序,它起到管理程序运行相关的作用;

naoqi:同时在python SDK中,有一个基本的模块,就叫做naoqi,在python程序中常需要导入该模块import naoqi。

NAOqi Framework:是一个帮助于实现程序编写、调用、执行等等一些非明显可见过程的编程的框架,可以理解成一个仓库管理组织的工具。它能够帮助于寻找依赖于该框架下的相应的模块和方法,自动加载依赖的模块,主要工作过程如下:

其中,“naoqi”程序就是起到一个Broker的作用,启动时会自动加载.ini文件中配置好的模块,然后会帮助于查找、调用依赖的模块和方法,当你在机器人系统外(本地)执行程序时,Broker还会帮助于实现方法的调用。

 Broker:可以理解成一个仓库经理,掌管着存放在这个仓库中的所有Modules和Methods,你要使用这些东西就要和Broker打交道,然后他也会帮你更省心的来使用这些东西;

Modules:自带的一些API模块或自定义的模块,在编程使用时常需要用一个代理Proxy,motion=ALProxy("ALMotion"),通过代理来调用方法,可以把代理理解成对应module的一个别名;

模块还分为local model 和remote model:

local module:两个相互调用的模块依赖于同一个Broker,此时互相调用不需要网络的连接,速度最快

remote module:两个模块不属于同一个Broker,此时互相调用就需要通过Broker作为中介,调用速度慢

 

在remote module中,要想实现相互调用,则需要先进行连接,连接方式有两种:

1.Broker to Broker:此种方式下,调用可以是相互的

2.Proxy to Broker:此种方式的调用只能是单向的,此时在定义broker时可以不指定要连接的broker的pip和pport

如下所示:

// c++
const std::string brokerName = "mybroker";
const std::string pip = "127.16.1.21" ; // local naoqi ip
int pport = 9559;

// create your broker
boost::shared_ptr<AL::ALBroker> broker = AL::ALBroker::createBroker(brokerName,"0.0.0.0", 5400, pip, pport);

// broker to broker
AL::ALProxy proxy = AL::ALProxy(<modulename>);

// proxy to broker
AL::ALProxy proxy = AL::ALProxy(broker, <modulename>); 

对于最新版系统NAOqi 2.8,其定义了一个新的编程框架qi framework,里面包含有相应的API以供调用,目的是提供一种更加简单的语法来调用模块和方法。相关内容以及使用方法参阅:http://doc.aldebaran.com/2-8/dev/libqi/index.html

 

注:此文档根据nao官方文档整理而成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值