我需要让一个虚拟NAO机器人通过Python说话和移动。我通过在Choregraph中进行移动并将其导出到python来做到这一点。但我不知道如何在Python中执行这些。我是一个编程的初学者,所以我将感谢任何帮助!
(这个动作的代码很长,所以我只复制了开头和结尾。我将中间部分替换为....)
编辑=我遵循Hello World脚本。我的机器人会“说话”并执行句子。但不执行代码的其余部分。没有错误。我的机器人的端口号是9559。这就是我所拥有的:
from naoqi import ALProxy
tts = ALProxy ("ALTextToSpeech","127.0.0.1",9559)
tts = ALProxy ("ALMotion","127.0.0.1",9559)
import qi
import argparse
import stk.services
import os
import sys
import time
from naoqi import ALProxy
import time
import argparse
from naoqi import ALProxy
tts = ALProxy ("ALTextToSpeech","127.0.0.1",9559)
tts.say ("Hello my name is Nao \\pau=1000\\ and I am a robot")
#moving his arms welcoming
def main(robotIP, PORT = 9559):
motion.Proxy.wakeUp()
names = list()
times = list()
keys = list()
names.append("HeadPitch")
times.append([0, 0.48, 1, 1.48])
keys.append([-0.0429941, -0.2102, 0.0820305, -0.16418])
names.append("HeadYaw")
times.append([0, 0.48, 1, 1.48])
keys.append([0.0858622, 0.0398422, 0.0398422, 0.0536479])
names.append("LAnklePitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([-0.023052, 0.030638, -0.0583338, -0.062936])
names.append("LAnkleRoll")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.00771189, -0.05825, -0.0628521, -0.05825])
names.append("LElbowRoll")
times.append([0, 0.4, 0.92, 1.4])
keys.append([-1.24403, -1.52015, -1.15715, -1.30027])
names.append("LElbowYaw")
times.append([0, 0.4, 0.92, 1.4])
keys.append([-0.849878, -1.15054, -1.71812, -1.77181])
names.append("LHand")
times.append([0, 0.4, 0.92, 1.4])
keys.append([0.2132, 0.2132, 0.68, 0.7728])
names.append("LHipPitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.242414, 0.44797, -0.115008, -0.0122299])
names.append("LHipRoll")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.01845, 0.112024, -0.00916195, 0.0123138])
names.append("LHipYawPitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([-0.352778, -0.338973, -0.366584, -0.371186])
names.append("LKneePitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.128814, -0.0859461, 0.400331, 0.312894])
names.append("LShoulderPitch")
times.append([0, 0.4, 0.92, 1.4])
keys.append([1.46186, 1.333, 1.32687, 1.40817])
names.append("LShoulderRoll")
times.append([0, 0.4, 0.92, 1.4])
keys.append([0.0827939, -0.0414601, -0.00924586, -0.030722])
names.append("LWristYaw")
times.append([0, 0.4, 0.92, 1.4])
keys.append([0.539926, 0.21932, -0.70875, -0.808459])
names.append("RAnklePitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.00157595, -0.06592, -0.266875, -0.251533])
names.append("RAnkleRoll")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.127364, 0.0706061, 0.016916, 0.0337899])
names.append("RElbowRoll")
times.append([0, 0.52, 1, 1.52])
keys.append([1.26559, 1.51717, 1.15715, 1.30027])
names.append("RElbowYaw")
times.append([0, 0.52, 1, 1.52])
keys.append([1.39436, 1.17807, 1.87297, 1.94201])
names.append("RHand")
times.append([0, 0.52, 1, 1.52])
keys.append([0.0456001, 0.0456001, 0.68, 0.7692])
names.append("RHipPitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.306757, 0.466294, -0.24088, -0.099752])
names.append("RHipRoll")
times.append([0, 0.4, 0.96, 1.36])
keys.append([-0.171766, -0.130348, -0.0720561, -0.078192])
names.append("RHipYawPitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([-0.352778, -0.338973, -0.366584, -0.371186])
names.append("RKneePitch")
times.append([0, 0.4, 0.96, 1.36])
keys.append([0.0245859, -0.0122299, 0.698011, 0.559952])
names.append("RShoulderPitch")
times.append([0, 0.52, 1, 1.52])
keys.append([1.83778, 1.29934, 1.5141, 1.52944])
names.append("RShoulderRoll")
times.append([0, 0.52, 1, 1.52])
keys.append([-0.136568, -0.019984, 0.0413762, 0.0398422])
names.append("RWristYaw")
times.append([0, 0.52, 1, 1.52])
keys.append([-0.339056, 0.0889301, 0.935697, 1.1029])
try:
motion = ALProxy("ALMotion", "127.0.0.1", 9559)
motion = ALProxy("ALMotion")
motion.angleInterpolation(names, keys, times, True)
except BaseException, err:
print err有人知道我应该添加什么才能通过Python执行吗?
发布于 2020-05-19 23:39:03
欢迎来到堆栈溢出!
要在NAO (真实的或虚拟的)上运行python脚本,请参阅this basic hello world explanation -不过请确保将9559替换为虚拟机器人的实际端口,并小心该端口在您关闭并重新打开Choregraphe后可能会更改!
一旦"hello world“开始工作,就可以像使用ALTextToSpeech一样使用ALMotion。
如果你得到一个错误,你可以试着在这里发布它(只用你的代码很难判断你做错了什么,代码本身看起来很好,除了端口号)。
发布于 2020-05-21 15:29:46
根据您更新的代码,看起来您只是对Python使用了错误的main公式,所以main函数中的所有代码都没有运行,因为它从未被调用过。
在Python中,您可以像这样定义一个main函数。
from naoqi import ALProxy
# rest of setup code...
if __name__ == "__main__":
tts = ALProxy ("ALTextToSpeech","127.0.0.1",9559)
tts.say("hello")
# the rest of your codehttps://stackoverflow.com/questions/61891354
复制相似问题