【问题标题】:Can I use NAOqi 2.5 (C++/Python SDK) features on a NAOqi 2.9 (QiSDK) robot (Pepper)?我可以在 NAOqi 2.9 (QiSDK) 机器人 (Pepper) 上使用 NAOqi 2.5 (C++/Python SDK) 功能吗?
【发布时间】:2020-08-11 09:13:58
【问题描述】:

我有运行 NAOqi 2.9 的 Pepper 机器人,它旨在将 QiSDK 用于其 Android 平板电脑。一切进展顺利,但照片捕捉速度却出奇的慢(最多 2 fps),因此我必须使用 NAOqi 2.5 可用的 C++(或 Python)SDK 来完成这项特定任务。

我一直试图让它工作几天,但没有成功。我已经设置并运行了 C++ 和 Python SDK,但我面临的问题是与机器人的连接。

我已经运行了官网here上的以下简单代码(使用机器人的IP)

from naoqi import ALProxy
tts = ALProxy("ALTextToSpeech", "<IP of your robot>", 9559)
tts.say("Hello, world!")

我得到以下输出流 after the second line

在 Ubuntu 上运行 C++ 或在 Windows 上运行 Python 时会出现连接问题。

我可以在 Android Studio 中通过 SSH、FTP、QiSDK 连接到机器人,但不能通过 C++ 或 Python 的 NAOqi 2.5 SDK 以任何方式连接。由于 QiSDK 很可能是在 C++ SDK 之上构建的,所以肯定有办法让它工作。

任何信息都会有不可估量的帮助。

【问题讨论】:

  • 尝试通过 SSH 连接到机器人。在终端中:ssh nao@&lt;robot-ip&gt; 然后运行 ​​python 然后运行 ​​import naoqibroker = naoqi.ALBroker("broker","",0,"",9559)tts = naoqi.ALProxy("ALTextToSpeech")tts.say('hello there')。我认为一些 Naoqi API 可能仍然可以部分访问/运行。但通常大多数人不会。
  • @DominicD 谢谢,等我设法让 SSH 再次工作时,我会尝试一下,它突然停止工作。

标签: robot nao-robot pepper


【解决方案1】:

据我所知,在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 的评论:

这适用于旧的 NAOqi 2.5.10 和 NAOqi 2.5.5。

以下是针对 NAOqi 2.9 / Pepper SDK Plugin [for Android Studio] 的说明:

这就是 Pepper NAOqi 2.9 所需的全部内容。

因此,根据 Softbank Robotics 的文档,使用 Python / C++ 编写 NAOqi 2.9 Pepper 是不可能的。

我希望这些信息能回答您的问题。

【讨论】:

  • 谢谢你的澄清,我会修改我的方法!
【解决方案2】:

编辑

还有另一种方法,你可以使用 Pepper 头脑中的 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 的头脑中运行上面的 sn-p,它会产生预期的输出(说 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 库:

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 库,但几乎没有成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多