概述
本篇列出了几类常用的 API 功能模块,介绍了一个重要的 API 函数 ALProxy,并自己创建了一个 Python 指令盒,简单实现了让 Nao 说出 Hello World 的程序代码。
一、Naoqi APIs
1. API 概览(官方文档戳我)
Naoqi 的 API 按功能分类可以大致分为八个部分,分别是:
- 核心类API:NAOqi Core
- 情感类API:NAOqi Emotion
- 交互类API:NAOqi Interaction engines
- 运动类API:NAOqi Motion
- 音频类API:NAOqi Audio
- 视觉类API:NAOqi Vision
- 人像感知API::NAOqi People Perception
- 传感器与LED灯:NAOqi Sensors & LEDs
2. 重要API: ALProxy
在 Naoqi 的 Python SDK 中提供了一条重要的 API: ALProxy,在调用 Naoqi 的各个功能模块时通常都要先调用此API,从而获取指定功能模块的代理服务,其返回的应该是指定服务类的一个实例。ALProxy 有两个不同的构造函数,详见下面的函数原型:
1 | ALProxy (name, ip, port) |
1 | ALProxy (name) |
ALProxy (name) 作为 ALProxy (name, ip, port) 的重载函数,通常在没有可用的代理实例时才被使用。
二、在 Choregraphe 中创建自己的第一个 Python Box
接下来,我们就要开始着手 Python 程序的编写了,这一系列的学习笔记都将在 Choregraphe 环境中完成代码的编写。首先,我们需要在 Choregraphe 中新建一个盒子,只需在流程图面板右键 -> Create a new box 中选择 Python 即可,填写 Box name 和 Description 并点击确定,其他参数我们暂时不管。
这样,我们就造了一个盒子(Box),双击我们刚才造的 Box 即可打开文本编辑器,可以看到其中已经有一些初始代码了:
1 | class MyClass(GeneratedClass): |
其中 onLoad 函数和 onUnload 函数分别在初始化和清除的时候调用,而 onInput_onStart 函数与 onInput_onStop 函数则是在盒子启动和停止的时候被调用。
三、Hello World!
好了,下面就让我们通过代码实现,让 Nao 说出那句经典的 Hello World 吧!
为了让 Nao 开口说话,我们还需要一个分类于 NAOqi Audio 的 API: ALTextToSpeech。
ALTextToSpeech 是一个类,或者说是 Naoqi 的一个功能模块,其中包含 setParameter、setVoice、getVoice 等成员函数,而具有能让 Nao 开口说话这种神奇作用的,就是其中的 say 函数。
函数原型:
1 | void ALTextToSpeechProxy::say(const std::string& stringToSay) |
say 函数本身非常的简单,只有一个参数即要说的内容,由于 say 函数是 ALTextToSpeech 类中的成员函数,为了调用它我们首先要借助 ALProxy 来获得 ALTextToSpeech 模块的实例(代理):
1 | tts = ALProxy ("ALTextToSpeech", "localhost", 7096) |
之后就可以大大方方的调用 say 函数来让 Nao 机器人说出我们想它说出的内容了:
1 | tts.say ("Hello World!") |
为了让程序在 Box 被运行时执行,并在运行完所有内容后自动结束,我们将代码写在 OnStart 函数中、self.onStopped() 代码行上方,并取消 self.onStopped() 前的 # 号注释,完整代码如下:
1 | class MyClass(GeneratedClass): |
运行效果: