NAO 是由 Aldebaran Robotics (现为 SoftBank Robotics) 开发的一款人形机器人,由于其硬件成本高昂,直接在实体机器人上进行学习和开发风险高、成本也高。NAO 仿真环境 是学习和开发 NAO 应用程序的绝佳起点。

这篇指南将分为以下几个部分:
- 为什么使用 NAO 仿真?
- 核心工具:Choregraphe 和 NAOqi
- 仿真环境的安装与设置
- 编程方法详解(从易到难)
- 图形化编程(Choregraphe)
- Python 编程(最常用)
- C++ 编程(高性能应用)
- 一个简单的 Python 编程示例
- 总结与学习路径
为什么使用 NAO 仿真?
在开始之前,了解仿真的好处至关重要:
- 零成本和零风险:你不需要购买昂贵的实体机器人,不用担心编程错误导致机器人损坏。
- 快速迭代:可以快速地测试和修改你的代码,立即看到结果,大大缩短开发周期。
- 资源丰富:仿真环境提供了完整的机器人模型,包括所有电机、传感器(摄像头、麦克风、陀螺仪等)的虚拟实现。
- 可复制性:可以轻松地保存和分享你的仿真场景,方便团队协作和教学。
核心工具:Choregraphe 和 NAOqi
要为 NAO 编程,你必须了解两个核心概念:
-
Choregraphe:
(图片来源网络,侵删)- 是什么:一个图形化编程环境,也叫“流程图编辑器”,你可以通过拖拽“盒子”(Box)来创建行为,每个盒子代表一个动作、一个传感器读数或一段代码。
- 用途:非常适合快速创建简单的动画、行为序列,以及理解 NAO 的工作流程,它也内置了仿真器,是初学者的首选。
-
NAOqi:
- 是什么:NAO 机器人的“大脑”或操作系统,它是一个基于模块的框架,每个模块都负责一项特定功能(如运动控制、语音合成、视觉处理等)。
- 用途:Choregraphe 本质上是在创建和连接 NAOqi 模块,当你需要更复杂、更底层的控制时,就需要直接通过 Python 或 C++ 与 NAOqi 交互。
关系:Choregraphe 是 NAOqi 的可视化前端,你在 Choregraphe 中创建的流程图,最终会被翻译成 NAOqi 可以执行的指令,无论是实体机器人还是仿真机器人,它们运行的“大脑”都是 NAOqi。
仿真环境的安装与设置
最主流的 NAO 仿真环境是 NAOqi Sim,它通常与 Choregraphe 捆绑在一起。
步骤概览:
- 下载:从 SoftBank Robotics 官网下载 Choregraphe,它会自动包含 NAOqi Sim。
- 安装:按照安装向导完成安装,在 Windows 上,它会自动配置好环境变量。
- 启动仿真器:
- 打开 Choregraphe。
- 在顶部菜单栏,点击
Connection->Connect to a robot。 - 在弹出的窗口中,选择
Simulation->Use a local simulation。 - 点击
Connect。 - 一个虚拟的 NAO 机器人窗口会弹出,你就可以在它身上测试你的程序了!
编程方法详解
图形化编程
这是最直观的方式,适合初学者和快速原型制作。
- 工作流程:
- 拖拽盒子:从左侧的“库”中拖拽你需要的盒子到主画布(
Say盒子用于说话,Wait盒子用于等待,Motion盒子用于动作)。 - 连接盒子:用箭头连接盒子,定义执行的先后顺序和逻辑,连接
Say盒子的out端口到Wait盒子的in端口,表示说完话后等待。 - 配置参数:双击盒子,可以修改其参数,在
Say盒子里输入你想说的话。 - 测试:点击顶部的“播放”按钮,仿真 NAO 就会执行你设计的流程图。
- 保存与导出:你可以将流程图保存为
.xml或.py文件,导出为 Python 文件后,你就可以在 Python 环境中进一步修改和扩展它。
- 拖拽盒子:从左侧的“库”中拖拽你需要的盒子到主画布(
Python 编程(最常用)
当你需要处理传感器数据、实现复杂逻辑或进行算法开发时,Python 是不二之选。
- 工作流程:
- 建立连接:你的 Python 脚本需要通过网络连接到 NAOqi(无论是仿真器还是实体机器人)。
- 获取代理:通过连接,获取 NAO 的各个功能模块的“代理”(Proxy),
ALMotion(运动代理)、ALTextToSpeech(语音代理)、ALVideoDevice(摄像头代理)等。 - 调用方法:通过这些代理,调用它们提供的方法来控制机器人。
motionProxy.setStiffnessNames("Body", 1.0)是让机器人身体变硬(可以运动)。 - 处理事件:可以设置“事件回调”函数,让机器人在特定事件发生时(如检测到人脸、听到关键词)自动执行你的代码。
C++ 编程
对于需要高性能计算的应用,如图像识别、复杂的物理模拟等,可以使用 C++。
- 特点:
- 性能更高:运行速度比 Python 快。
- 更复杂:需要编译,开发环境配置更复杂。
- 主要用于研究:在学术界和工业界的尖端项目中使用较多。
一个简单的 Python 编程示例
下面是一个完整的 Python 示例,它会连接到仿真 NAO,让它说“你好,世界!”,然后挥手。
前提:确保你的 Choregraphe 仿真器已经启动并运行。
代码 (nao_hello.py):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 导入必要的库
from naoqi import ALProxy
import time
# --- 配置参数 ---
# NAOqi 的 IP 地址(如果在本机运行仿真器,通常是 "127.0.0.1")
IP = "127.0.0.1"
# NAOqi 的端口(默认为 9559)
PORT = 9559
def main():
"""
主函数:连接 NAO 并执行简单动作
"""
try:
# 1. 创建代理连接到 NAOqi 的各个模块
print("正在连接到 NAOqi 服务器...")
# 创建语音合成代理
tts = ALProxy("ALTextToSpeech", IP, PORT)
print("语音代理连接成功。")
# 创建运动代理
motion = ALProxy("ALMotion", IP, PORT)
print("运动代理连接成功。")
# 2. 让机器人说话
print("让 NAO 说话...")
tts.say("你好,世界!我是 NAO 仿真机器人。")
time.sleep(3) # 等待3秒,确保话说完
# 3. 让机器人挥手
print("让 NAO 挥手...")
# 让机器人手臂的关节变“硬”,否则无法运动
motion.setStiffnessNames("LArm", 1.0) # 左臂变硬
motion.setStiffnessNames("RArm", 1.0) # 右臂变硬
# 定义挥手动作(这里简化,实际挥手需要更复杂的轨迹)
# 我们让右臂从0度移动到90度
names = ["RShoulderPitch"] # 控制右肩上下转动的关节名
angles = [1.57] # 1.57 弧度约等于 90 度
fractionMaxSpeed = 0.5 # 以50%的最大速度运动
motion.angleInterpolation(names, angles, fractionMaxSpeed, True)
time.sleep(2)
# 让手臂回到原位
angles = [0.0] # 0 度
motion.angleInterpolation(names, angles, fractionMaxSpeed, True)
time.sleep(2)
# 动作完成后,让手臂恢复“软”状态,以节省电量
motion.setStiffnessNames("LArm", 0.0)
motion.setStiffnessNames("RArm", 0.0)
print("程序执行完毕!")
except Exception as e:
print("发生错误:")
print(e)
if __name__ == "__main__":
main()
如何运行:
- 将上述代码保存为
nao_hello.py。 - 打开你的终端或命令提示符。
- 确保你的 NAOqi 仿真器正在运行。
- 切换到文件所在的目录,然后运行命令:
python nao_hello.py
你会看到:
- 终端打印出连接和执行步骤的日志。
- 仿真 NAO 会先说出中文,然后它的右臂会向上抬起再放下。
总结与学习路径
给初学者的建议学习路径:
- 从 Choregraphe 开始:花一两天时间熟悉 Choregraphe 的界面,尝试拖拽一些现成的盒子,连接它们,看看 NAO 如何反应,这是建立直觉最快的方式。
- 学习 Python 基础:如果你不熟悉 Python,请先学习 Python 的基本语法,特别是变量、函数、列表和类。
- 理解 NAOqi 代理:重点学习
ALMotion(运动)、ALTextToSpeech(语音)、ALAudioPlayer(播放音频)、ALMemory(全局变量/事件中心)这几个最常用的代理。 - 模仿和修改示例:找到官方的 Python 示例代码(在 Choregraphe 的
Resources菜单下有示例),尝试运行并修改它们,看看会发生什么。 - 小项目驱动:尝试完成一些小项目,
- 让 NAO 循环播放一段舞蹈。
- 让 NAO 听到特定声音后转向声源方向。
- 让 NAO 用摄像头识别颜色,并用语音说出颜色名称。
官方资源:
- SoftBank Robotics 官方文档:这是最权威、最全面的资料库,包含了所有 API 文档和教程。
- NAO 开发者社区:有大量的开发者分享他们的经验和项目。
希望这份详细的指南能帮助你顺利开启 NAO 仿真机器人的编程之旅!祝你玩得开心!
标签: nao机器人编程入门教程 nao仿真机器人快速编程指南 nao机器人编程零基础学习