NAO机器人——编程基础

    使用NAOqi模块时,不需要像普通Python程序那样用import语句导入所用模块。模块通过Broker通告它所提供的方法。通过Broker,任何模块都可以找到所有己经通告的模块及方法。

NAO机器人——编程基础_第1张图片

# 让NAO说话(say.py)
from  naoqi  import  ALProxy
tts = ALProxy("ALTextToSpeech", "192.168.1.170", 9559)        
#将"192.168.1.170"替换成自己机器人IP
tts.say("Hello, world!")

说明: ALProxy类用于创建模块的代理对象。

ALTextToSpeech是NAOqi中将文本转换为语音的模块。

ALTextToSpeech模块的代理对象tts创建后,tts就代表了ALTextToSpeech模块,可以直接使用其所有方法。

say方法,实现“说话”。程序中并没有指出ALTextToSpeech模块所在位置,对模块及say方法的查找由Broker完成。

# 让NAO说话与行走
from  naoqi  import  ALProxy
import  time
motion = ALProxy("ALMotion", "192.168.1.170", 9559)       
#将"192.168.1.170"替换成自己机器人IP
tts  = ALProxy("ALTextToSpeech", "192.168.1.170", 9559)
motion.setStiffnesses("Body", 1.0)
time.sleep(1.0)
motion.moveInit()
motion.post.moveTo(0.5, 0, 0)
tts.say("I'm  walking")

setStiffnesses():设置关节的刚度(电机的转矩限制),刚度为0时关节做不了任何运动,非阻塞调用。

moveInit():运动进程的初始化,检查机器人的当前状态,并选择一个正确的姿势,阻塞调用。 moveTo():移动到指定坐标位置,阻塞调用。

setStiffnesses()方法为非阻塞调用方法,由于关节的刚度设置需要一定的时间(几毫秒),如果不经过time.sleep(1.0)延迟,调用moveInit()时,各关节的刚度不一定都已经设置为1.0,moveI。nit方法将不会正确执行

moveInit()为阻塞调用方法,完成机器人行走前的准备动作。例如,如果机器人初始状态为休息状态,调用moveInit方法后,机器人进入准备行走状态(站立、屈膝)。moveInit方法的最长执行时间会超过1秒,方法执行完成后,才会执行moveTo()方法。

moveTo()为阻塞调用方法,使用post对象调用moveTo()方法,将创建新的并行线程,在新线程中调用moveTo()方法,原线程继续调用后面的say方法。

程序执行结果:机器人一边向前走,一边说I'm  walking,在0.5米处停止。

NAO机器人状态:

打开和关闭自主生活方法如下:

(1)双击机器人胸部按钮。

(2)Choreograph软件中点击工具栏右部“打开(关闭)自主生活”按钮(心形按钮)。

(3)在Nao的网页中设置。 开启自主生活后,如果NAO是蹲着的,会站起来;如果NAO是坐着的,仍然坐着。

你可能感兴趣的:(NAO,python,NAO,人工智能)