问题描述
我正在尝试使用 ALDialog 模块与 choregraphe 模拟 NAO6 机器人进行虚拟对话。我有以下脚本:
import qi
import argparse
import sys
def main(session):
"""
This example uses ALDialog methods.
It's a short dialog session with two topics.
"""
# Getting the service ALDialog
ALDialog = session.service("ALDialog")
ALDialog.setLanguage("English")
# writing topics' qichat code as text strings (end-of-line characters are important!)
topic_content_1 = ('topic: ~example_topic_content()\n'
'language: enu\n'
'concept:(food) [fruits chicken beef eggs]\n'
'u: (I [want "would like"] {some} _~food) Sure! You must really like $1 .\n'
'u: (how are you today) Hello human,I am fine thank you and you?\n'
'u: (Good morning Nao did you sleep well) No damn! You forgot to switch me off!\n'
'u: ([e:FrontTactilTouched e:MiddleTactilTouched e:RearTactilTouched]) You touched my head!\n')
topic_content_2 = ('topic: ~dummy_topic()\n'
'language: enu\n'
'u:(test) [a b "c d" "e f g"]\n')
# Loading the topics directly as text strings
topic_name_1 = ALDialog.loadTopicContent(topic_content_1)
topic_name_2 = ALDialog.loadTopicContent(topic_content_2)
# Activating the loaded topics
ALDialog.activatetopic(topic_name_1)
ALDialog.activatetopic(topic_name_2)
# Starting the dialog engine - we need to type an arbitrary string as the identifier
# We subscribe only ONCE,regardless of the number of topics we have activated
ALDialog.subscribe('my_dialog_example')
try:
raw_input("\nSpeak to the robot using rules from both the activated topics. Press Enter when finished:")
finally:
# stopping the dialog engine
ALDialog.unsubscribe('my_dialog_example')
# Deactivating all topics
ALDialog.deactivatetopic(topic_name_1)
ALDialog.deactivatetopic(topic_name_2)
# Now that the dialog engine is stopped and there are no more activated topics,# we can unload all topics and free the associated memory
ALDialog.unloadTopic(topic_name_1)
ALDialog.unloadTopic(topic_name_2)
if __name__ == "__main__":
session = qi.Session()
try:
session.connect("tcp://desktop-6d4cqe5.local:9559")
except RuntimeError:
print ("\nCan't connect to Naoqi at IP desktop-6d4cqe5.local(port 9559).\nPlease check your script's arguments."
" Run with -h option for help.\n")
sys.exit(1)
main(session,"desktop-6d4cqe5.local")
我模拟的机器人有 desktop-6d4cqe5.local 作为 IP 地址,它的 NAOqi 端口在 63361 上运行。我想在 python 脚本中运行 choregraphe 之外的对话框,并且只能使用 choregraphe 中的对话框测试它。当我运行上面的python文件时,我得到了:
Traceback (most recent call last):
File "C:\Users\...\Documents\...\choregraphe_codes\Welcome\speak.py",line 6,in <module>
import qi
File "C:\Python27\Lib\site-packages\pynaoqi\lib\qi\__init__.py",line 93
async,PeriodicTask)
^
SyntaxError: invalid Syntax
我无法弄清楚问题,因为网上资源不多,而且机器人的文档有点难以理解。
请帮忙,谢谢。
解决方法
您正在使用高于 3.5 的 Python 版本运行脚本,现在将 async
视为关键字。
NAOqi 仅支持 Python 2。
尝试使用 python2
显式运行您的脚本。