如何发起Aldebaran ServiceManager?

时间:2017-11-08 13:53:35

标签: nao-robot pepper choregraphe

我想在我的应用中停止并通过ALTactileGesture启动ServiceManager服务。我正在使用Choregraphe和python框。我尝试了不同的选项来启动ServiceManager,但没有一个可行。有没有办法做到这一点?

编辑:

我已经尝试self.sm = session.service('ServiceManager')但是没有用。 我们的想法是在应用启动后立即停止ALTactileGesture
(1)ServiceManager.stopService('ALTactileGesture')(见this

并在应用程序结束前启动/重新启动ALTactileGesture
(2)ServiceManager.startService('ALTactileGesture')

我的问题是如何到达ServiceManager,以便我可以使用(1)和(2)?

2 个答案:

答案 0 :(得分:1)

在机器人外壳(旧式代理连接)中试试这个:

$ python
import naoqi
s = naoqi.ALProxy("ALServiceManager", "localhost", 9559 )
s.stopService('ALTactileGesture')
>>> False
s.startService('ALTactileGesture')
>>> False # (a bit weird, but ...)

所以我认为它没有完全正常工作,但至少你可以按要求连接到ServiceManager ......

答案 1 :(得分:1)

你必须明白,“服务”这个词在NAOqi中实际上意味着两个不同的东西。见an explanation here

  

NAOqi服务(也称为“模块”),公开API并且是   注册到ServiceDirectory。你可以用qicli打电话给他们,   订阅他们的信号等。

     

systemd services ,它们是一个打包的独立可执行文件   应用程序包,在其带有标记的清单中声明。   这些由ALServiceManager管理,ALServiceManager可以启动和停止它们   (他们将有自己的过程)。为了清楚起见,这些是   在本文档中称为“可执行文件”。

     

两者之间的混淆因共同的事实而增加   模式是编写一个可执行文件,其唯一目的是运行NAOqi   服务,有时用同一名称识别两者(例如两者   被称为“ALFuchsiaBallTracker”)。

您的问题是NAOqi服务ALTactileGesture由在ID ALTactileGesture-serv下注册的可执行文件运行。所以你需要做

ALServiceManager.stop("ALTactileGesture-serv")

(我刚刚测试过,它工作正常)

(编辑)顺便说一下,我不确定实际停止和启动ALTactileGesture是做你想做的事情的最佳方式(对我来说似乎有些笨拙),但 if < / em>你想这样做,这就是:)