核心 SDK:NAOqi
NAOqi 是 NAO 机器人的“大脑”和操作系统,也是所有 SDK 的基础,它是一个基于模块化架构的中间件,负责管理机器人的所有硬件(传感器、执行器)和软件功能。

核心特点:
- 模块化:NAOqi 的功能被封装成一个个独立的“模块”(Modules)。
ALMotion:控制所有电机运动。ALAudioPlayer:播放音频文件。ALTextToSpeech:进行语音合成。ALMemory:全局数据总线,用于模块间通信。ALVision:处理摄像头数据。
- 事件驱动:模块可以发布和订阅事件,当
ALFaceDetection模块检测到一张人脸时,它会发布一个FaceDetected事件,其他订阅该事件的模块(如ALBehavior)就可以做出反应。 - 多语言支持:NAOqi 提供了多种 API 接口,允许你使用不同的编程语言与机器人交互。
主要 SDK 和编程接口
开发 NAO 机器人主要有以下几种方式,对应不同的 SDK 和 API:
Python SDK (最推荐)
对于初学者和大多数应用开发来说,Python SDK 是最常用、最友好的选择。
-
特点:
- 语法简洁:易于学习和上手。
- 库丰富:可以方便地结合 Python 强大的科学计算(如 NumPy, SciPy)、人工智能(如 TensorFlow, PyTorch)和数据处理库。
- 社区活跃:拥有大量教程、示例代码和活跃的开发者社区。
-
如何使用:
-
安装:在你的开发电脑上安装
pip,然后通过命令安装naoqi-sdk-python。pip install naoqi-sdk-python
-
连接:在你的 Python 代码中,创建一个
ALProxy对象来连接到机器人上的某个模块。from naoqi import ALProxy # IP 地址和端口根据你的机器人配置 ip = "your_robot_ip" port = 9559 try: # 创建一个 TTS (Text-To-Speech) 代理 tts = ALProxy("ALTextToSpeech", ip, port) # 让机器人说 "Hello, world!" tts.say("Hello, world!") # 创建一个 Motion 代理 motion = ALProxy("ALMotion", ip, port) # 获取机器人的电量 battery = motion.getBatteryCharge() print("Battery charge: {}%".format(battery)) except Exception as e: print("Could not create proxy to ALTextToSpeech or ALMotion") print("Error was: ", e)
-
C++ SDK
对于需要极致性能、底层硬件交互或复杂算法优化的场景,C++ SDK 是最佳选择。
- 特点:
- 高性能:运行效率高,适合对实时性要求高的应用。
- 底层访问:可以更精细地控制硬件资源。
- 复杂项目:适合构建大型、复杂的机器人应用程序。
- 如何使用:
- 需要从 Aldebaran 官网下载完整的 C++ SDK。
- 在 C++ 代码中包含相应的头文件,并链接 NAOqi 的库文件。
- 编译过程相对复杂,通常需要使用 CMake 等构建工具。
Choregraphe (图形化编程环境)
Choregraphe 是一个图形化的编程和仿真工具,非常适合初学者、快速原型设计和非专业程序员。
- 特点:
- 拖拽式编程:通过拖拽“盒子”(Box)来构建行为流,盒子可以是简单的指令(如“说一句话”)、逻辑判断(如“..就...”)或自定义的 Python/Box 代码。
- 内置仿真器:可以在电脑上模拟一个 NAO 机器人,无需连接实体机器人即可测试和调试代码。
- 行为树:可以创建复杂的行为逻辑,并将它们保存为独立的“行为文件”,方便复用和分享。
- 可视化调试:可以实时查看机器人的状态(关节角度、电量、内存等)。
- 如何使用:
- 下载并安装 Choregraphe 软件。
- 在工作区中拖拽盒子,连接它们,形成一个完整的行为流程。
- 点击“连接”按钮连接到实体机器人或启动仿真器。
- 点击“播放”按钮,机器人就会执行你设计的动作。
- 你也可以在盒子中嵌入 Python 代码,实现更复杂的功能。
其他语言接口
除了 Python 和 C++,NAOqi 还支持通过 RESTful API 与其他语言(如 JavaScript, Java, C#)进行交互。
- REST API:
- 这是一种基于 HTTP 协议的接口,非常灵活。
- 你可以通过发送 HTTP 请求(GET, POST)来调用 NAOqi 的方法或获取数据。
- 你可以用网页前端(HTML, JavaScript)来控制 NAO 机器人,或者用 Java/C# 的网络库来编写控制程序。
- 访问方式:
http://<robot-ip>:port/naoqi/ping等。
开发流程与工具
-
开发环境:
- 推荐:在你的个人电脑(Windows, macOS, Linux)上进行开发,使用 PyCharm, VS Code 等 IDE 编写代码。
- 连接:确保你的电脑和 NAO 机器人连接在同一个局域网内。
-
仿真器:
- 在 Choregraphe 和 Python SDK 中都内置了仿真器。
- 优点:无需担心机器人安全,可以随时随地测试代码,大大提高开发效率。
-
调试:
- 日志:机器人终端会输出详细的日志信息,是定位错误的关键。
- ALMemory 监视器:在 Choregraphe 中,有一个 ALMemory 监视器,可以实时查看所有共享在
ALMemory中的数据,是调试传感器数据和事件驱动的利器。
学习资源与官方文档
-
官方文档 (最重要):
- NAOqi 2.8 Developer Guide (这是最经典的版本,资料最全)
- NAOqi 2.9 Developer Guide (较新版本)
- 文档包含了所有模块的 API 参考、教程和示例。
-
社区与支持:
- SoftBank Robotics Developer Portal: 提供了 SDK 下载、教程、示例代码和论坛。
- GitHub: 你可以找到官方和一些社区贡献的示例代码。
总结与建议
| SDK/工具 | 适用人群 | 优点 | 缺点 |
|---|---|---|---|
| Python SDK | 初学者、研究人员、AI开发者 | 简单易学,库生态丰富,开发效率高 | 性能不如 C++ |
| C++ SDK | 高级开发者、底层开发者 | 性能极高,底层控制力强 | 学习曲线陡峭,开发复杂 |
| Choregraphe | 初学者、教育者、快速原型 | 图形化直观,内置仿真器,无需编程基础 | 灵活性不如代码,复杂逻辑难以实现 |
| REST API | Web开发者、跨平台集成 | 协议通用,易于集成到现有系统 | 通信开销大,不适合高频、低延迟控制 |
给新手的建议:
- 从 Choregraphe 开始:下载 Choregraphe,先玩转它的内置示例,了解机器人的基本功能和图形化编程的逻辑。
- 转向 Python SDK:当你需要更灵活的控制时,开始学习 Python SDK,从官方文档的 Python 示例开始,尝试用 Python 代替 Choregraphe 中的盒子。
- 利用仿真器:无论使用哪种工具,始终先在仿真器上测试你的代码,确认无误后再部署到实体机器人上。
这套 SDK 体系为 NAO 提供了从简单到复杂的全方位开发能力,使其成为一个强大的研究平台和教学工具。
标签: nao机器人SDK快速入门教程 nao机器人SDK开发新手指南 nao机器人SDK零基础开发技巧