检查机器人是否已连接并与充电站断开连接

时间:2016-06-03 17:50:12

标签: python nao-robot

我正和Aldebaran的Nao一起工作,我想写一个python脚本来检查电池是否正在充电。

有关于naoqi模块的文档。我发现了这个事件1。但这是一个事件。在我看来,我可以等待一个事件,但我不能像一个布尔一样读它。我是对的吗?

3 个答案:

答案 0 :(得分:1)

This linked page表示可以读取Current和Charge%值。我会测试那些,看看当充电时电流的符号是否会改变,与使用电池运行相比。或者,检查Charge%是否足够快地检测到充电正在进行中。

答案 1 :(得分:0)

您可以使用ALMemory API订阅活动" BatteryChargingFlagChanged" :http://doc.aldebaran.com/2-4/naoqi/core/almemory-api.html#ALMemoryProxy::subscribeToEvent__ssCR.ssCR.ssCR

此方法接受回调:只需定义一个设置可以使用的标记的方法。

答案 2 :(得分:0)

  

在我看来,我可以等待一个事件,但我不能像布尔一样读它。我是对的吗?

电池不可用。发布的每个事件都会发送一个信号,该信号会“翻转”ALMemory中的一个开关。如果存在数量,则只能读取数量的值或状态。否则,信息将丢失且无法检索。

例如,每次充电百分比改变时,事件触发并向该存储键发送信号:

Device/SubDeviceList/Battery/Charge/Sensor/Value

然后,您可以使用提供的API直接读取此值,方法与您在问题中描述的方法相同。对于充电,根本没有这样的钥匙。

你可以尝试:

mem = ALProxy(ALMemory, pip, pport)
mem.getData("BatteryPowerPluggedChanged")

访问Event:“BatteryPowerPluggedChanged”的布尔变量,你将获得true / false。但这对您没有帮助,因为如果您事先没有订阅该事件,它将不会反映实时更改。

希望这有帮助。