1. 使 NAO 刚化
除非你将 NAO 的 stiffness 的值设为非 0 数,否则它是不会移动的
而要做到这点其实很简单,只要通过调用
ALMotionProxy::setStiffnesses()进行设置即可:from naoqi import ALProxymotion = ALProxy("ALMotion", "nao.local", 9559)motion.setStiffnesses("Body", 1.0)
2. 使 NAO 移动
为了让 NAO 移动,我们应该使用 ALMotionProxy::moveInit()函数(以使 NAO 处于合适的姿势),然后再调用ALMotionProxy::moveTo():
from naoqi import ALProxymotion = ALProxy("ALMotion", "nao.local", 9559)motion.moveInit()motion.moveTo(0.5, 0, 0)
3. 使 NAO 同时说话并行走
我们创建的每一个代理(proxy)都有一个叫做”post”的属性,且可以通过使用它在后台调用很多方法。
这可以帮助我们使机器人同时做很多事:
from naoqi import ALProxymotion = ALProxy("ALMotion", "nao.local", 9559)tts = ALProxy("ALTextToSpeech", "nao.local", 9559)motion.moveInit()motion.post.moveTo(0.5, 0, 0)tts.say("I'm walking")
当然,如果需要等待一个任务结束,我们可以使用 ALProxy 中的等待方法,使用寄出的方法(the post usage)所返回的任务 ID:
from naoqi import ALProxymotion = ALProxy("ALMotion", "nao.local", 9559)motion.moveInit()id = motion.post.moveTo(0.5, 0, 0)motion.wait(id, 0)
完整的程序
from naoqi import ALProxyimport argparsemotion = ALProxy("ALMotion", "192.168.1.114", 9559) #NAO的动作对象tts = ALProxy("ALTextToSpeech", "192.168.1.114", 9559) #NAO的语言对象posture = ALProxy("ALRobotPosture", "192.168.1.114", 9559) #NAO的姿势对象#首先唤醒NAOmotion.wakeUp()#让NAO站好posture.goToPosture("StandInit", 0.5)#将其刚化motion.setStiffnesses("Body", 1.0)#初始化motion.moveInit()#让NAO向前走1米,同时返回任务ID给idid = motion.post.moveTo(1, 0, 0)tts.say("I'm walking")#直到id传过来了,再执行wait()函数motion.wait(id, 0)tts.say("I will not walk anymore")#让NAO休眠motion.rest()
