【Nao-03】 Naoqi APIs 架构概览 & Hello World!

概述

本篇列出了几类常用的 API 功能模块,介绍了一个重要的 API 函数 ALProxy,并自己创建了一个 Python 指令盒,简单实现了让 Nao 说出 Hello World 的程序代码。

在这里插入图片描述


一、Naoqi APIs

1. API 概览(官方文档戳我

  Naoqi 的 API 按功能分类可以大致分为八个部分,分别是:

2. 重要API: ALProxy

  在 Naoqi 的 Python SDK 中提供了一条重要的 API: ALProxy,在调用 Naoqi 的各个功能模块时通常都要先调用此API,从而获取指定功能模块的代理服务,其返回的应该是指定服务类的一个实例。ALProxy 有两个不同的构造函数,详见下面的函数原型:

ALProxy (name, ip, port)
# name is the name of the module,
# ip is the IP of the broker in which the module is running,
# port is the port of the broker.
ALProxy (name)
# name is the name of the module.

ALProxy (name) 作为 ALProxy (name, ip, port) 的重载函数,通常在没有可用的代理实例时才被使用。

二、在 Choregraphe 中创建自己的第一个 Python Box

  接下来,我们就要开始着手 Python 程序的编写了,这一系列的学习笔记都将在 Choregraphe 环境中完成代码的编写。首先,我们需要在 Choregraphe 中新建一个盒子,只需在流程图面板右键 -> Create a new box 中选择 Python 即可,填写 Box name 和 Description 并点击确定,其他参数我们暂时不管。
在这里插入图片描述

  这样,我们就造了一个盒子(Box),双击我们刚才造的 Box 即可打开文本编辑器,可以看到其中已经有一些初始代码了:

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        pass

    def onInput_onStop(self):
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box

  其中 onLoad 函数和 onUnload 函数分别在初始化和清除的时候调用,而 onInput_onStart 函数与 onInput_onStop 函数则是在盒子启动和停止的时候被调用。

三、Hello World!

  好了,下面就让我们通过代码实现,让 Nao 说出那句经典的 Hello World 吧!

  为了让 Nao 开口说话,我们还需要一个分类于 NAOqi Audio 的 API: ALTextToSpeech

  ALTextToSpeech 是一个类,或者说是 Naoqi 的一个功能模块,其中包含 setParameter、setVoice、getVoice 等成员函数,而具有能让 Nao 开口说话这种神奇作用的,就是其中的 say 函数。

  函数原型:

void ALTextToSpeechProxy::say(const std::string& stringToSay)

  say 函数本身非常的简单,只有一个参数即要说的内容,由于 say 函数是 ALTextToSpeech 类中的成员函数,为了调用它我们首先要借助 ALProxy 来获得 ALTextToSpeech 模块的实例(代理):

tts = ALProxy ("ALTextToSpeech", "localhost", 7096)

  之后就可以大大方方的调用 say 函数来让 Nao 机器人说出我们想它说出的内容了:

tts.say ("Hello World!")

  为了让程序在 Box 被运行时执行,并在运行完所有内容后自动结束,我们将代码写在 OnStart 函数中、self.onStopped() 代码行上方,并取消 self.onStopped() 前的 # 号注释,完整代码如下:

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

    def onInput_onStart(self):
        tts = ALProxy("ALTextToSpeech", "localhost", 7096)
        tts.say("Hello World!")
        self.onStopped() #activate the output of the box
        pass

    def onInput_onStop(self):
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box

  运行效果:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值