我可以在 NAOqi 2.9 (QiSDK) 机器人 (Pepper) 上使用 NAOqi 2.5 (C++/Python SDK) 功能吗?
Can I use NAOqi 2.5 (C++/Python SDK) features on a NAOqi 2.9 (QiSDK) robot (Pepper)?
我有 Pepper 机器人 运行ning NAOqi 2.9,它打算在 Android 平板电脑上使用 QiSDK。一切进展顺利,但照片捕获速度出奇地慢(最多 2 fps),因此我必须使用适用于 NAOqi 2.5 的 C++(或 Python)SDK 来完成此特定任务。
几天来我一直在努力让它工作,但没有成功。我已经设置了 C++ 和 Python SDK up 和 运行ning,但我面临的问题是与机器人的连接。
我运行在官方网站上找到了下面的简单代码(使用机器人的IP)here
from naoqi import ALProxy
tts = ALProxy("ALTextToSpeech", "<IP of your robot>", 9559)
tts.say("Hello, world!")
我得到以下输出流
after the second line
运行在 Ubuntu 上使用 C++ 或在 Windows 上使用 Python 出现连接问题。
我可以通过 SSH、FTP、Android Studio 中的 QiSDK 连接到机器人,但不能通过适用于 C++ 的 NAOqi 2.5 SDK 或 Python 以任何方式连接到机器人。由于 QiSDK 很可能是在 C++ SDK 之上构建的,因此肯定有一种方法可以使它工作。
任何信息都会有不可估量的帮助。
据我所知,在NAOqi 2.5中,平板电脑(JavaScript)和机器人的“大脑”(Choregraphe即Python / C++)是两个独立的设备,必须相互沟通和合作。在 NAOqi 2.9 中,“大脑”被移到了平板电脑上,Pepper 的唯一编程方式是使用 Android Studio。
在Pepper NAOqi 2.9 (https://www.softbankrobotics.com/emea/en/support/pepper-naoqi-2-9/downloads-softwares)的下载页面上,有关于Python SDK的评论:
This is for old NAOqi 2.5.10 and NAOqi 2.5.5.
下面是针对 NAOqi 2.9 / Pepper SDK 插件 [针对 Android Studio] 的声明:
This is all you need for Pepper NAOqi 2.9.
因此,根据 Softbank Robotics 的文档,使用 Python / C++ 编写 NAOqi 2.9 Pepper 是不可能的。
我希望这些信息能回答您的问题。
编辑
还有一种方法,你可以使用Pepper head 中的qi Python 库来使用服务,例如ALTextToSpeech 或ALMotion,有一个简单的例子here。也可以只使用 SSH 来启动 Python 服务器,这将允许通过端点访问这些功能。
import qi
app = qi.Application()
app.start()
session = app.session
tts = session.service("ALTextToSpeech")
tts.say("Hello Word")
如果您 运行 Pepper 脑袋中的上述代码片段,它会产生预期的输出(说 Hello world)。几乎所有服务都记录在案 here。您还可以通过在会话对象
上调用 .services() 来列出它们
编辑结束
我终于找到了破解它的方法。如果您通过 SSH 连接到机器人,您可以使用 qicli
二进制文件。它的文档是 here
qicli info
列出所有可用的服务,例如 ALVideoDevice 或 ALMotion
qicli info ALMotion
显示该服务的可用方法
qicli info ALMotion.setAngles
显示有关该方法参数的信息
qicli call ALMotion.setAngles HeadYaw 0.7 0.3
使用给定参数调用模块中的函数
所以可以为这个二进制文件编写一个包装器并通过 SSH 以编程方式调用它,对于这类任务似乎需要做很多工作,但我还没有找到其他任何东西。
我有 Python 的 Paramiko 库可以使用:
<pre><code>import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='ip-of-robot', username='nao', password='your-pass')
stdin, stdout, stderr = client.exec_command('pwd')
print(stdout.read())
client.exec_command('qicli call ALMotion.setAngles HeadYaw -0.7 0.2')
client.close()
我也试过 .NET 的 SSH.NET 库,但收效甚微。
我有 Pepper 机器人 运行ning NAOqi 2.9,它打算在 Android 平板电脑上使用 QiSDK。一切进展顺利,但照片捕获速度出奇地慢(最多 2 fps),因此我必须使用适用于 NAOqi 2.5 的 C++(或 Python)SDK 来完成此特定任务。
几天来我一直在努力让它工作,但没有成功。我已经设置了 C++ 和 Python SDK up 和 运行ning,但我面临的问题是与机器人的连接。
我运行在官方网站上找到了下面的简单代码(使用机器人的IP)here
from naoqi import ALProxy
tts = ALProxy("ALTextToSpeech", "<IP of your robot>", 9559)
tts.say("Hello, world!")
我得到以下输出流 after the second line
运行在 Ubuntu 上使用 C++ 或在 Windows 上使用 Python 出现连接问题。
我可以通过 SSH、FTP、Android Studio 中的 QiSDK 连接到机器人,但不能通过适用于 C++ 的 NAOqi 2.5 SDK 或 Python 以任何方式连接到机器人。由于 QiSDK 很可能是在 C++ SDK 之上构建的,因此肯定有一种方法可以使它工作。
任何信息都会有不可估量的帮助。
据我所知,在NAOqi 2.5中,平板电脑(JavaScript)和机器人的“大脑”(Choregraphe即Python / C++)是两个独立的设备,必须相互沟通和合作。在 NAOqi 2.9 中,“大脑”被移到了平板电脑上,Pepper 的唯一编程方式是使用 Android Studio。
在Pepper NAOqi 2.9 (https://www.softbankrobotics.com/emea/en/support/pepper-naoqi-2-9/downloads-softwares)的下载页面上,有关于Python SDK的评论:
This is for old NAOqi 2.5.10 and NAOqi 2.5.5.
下面是针对 NAOqi 2.9 / Pepper SDK 插件 [针对 Android Studio] 的声明:
This is all you need for Pepper NAOqi 2.9.
因此,根据 Softbank Robotics 的文档,使用 Python / C++ 编写 NAOqi 2.9 Pepper 是不可能的。
我希望这些信息能回答您的问题。
编辑
还有一种方法,你可以使用Pepper head 中的qi Python 库来使用服务,例如ALTextToSpeech 或ALMotion,有一个简单的例子here。也可以只使用 SSH 来启动 Python 服务器,这将允许通过端点访问这些功能。
import qi
app = qi.Application()
app.start()
session = app.session
tts = session.service("ALTextToSpeech")
tts.say("Hello Word")
如果您 运行 Pepper 脑袋中的上述代码片段,它会产生预期的输出(说 Hello world)。几乎所有服务都记录在案 here。您还可以通过在会话对象
上调用 .services() 来列出它们编辑结束
我终于找到了破解它的方法。如果您通过 SSH 连接到机器人,您可以使用 qicli
二进制文件。它的文档是 here
qicli info
列出所有可用的服务,例如 ALVideoDevice 或 ALMotion
qicli info ALMotion
显示该服务的可用方法
qicli info ALMotion.setAngles
显示有关该方法参数的信息
qicli call ALMotion.setAngles HeadYaw 0.7 0.3
使用给定参数调用模块中的函数
所以可以为这个二进制文件编写一个包装器并通过 SSH 以编程方式调用它,对于这类任务似乎需要做很多工作,但我还没有找到其他任何东西。
我有 Python 的 Paramiko 库可以使用:
<pre><code>import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='ip-of-robot', username='nao', password='your-pass')
stdin, stdout, stderr = client.exec_command('pwd')
print(stdout.read())
client.exec_command('qicli call ALMotion.setAngles HeadYaw -0.7 0.2')
client.close()
我也试过 .NET 的 SSH.NET 库,但收效甚微。