3

简介: 我现在创建了一个运行良好的应用程序。问题是我的 Pepper 机器人站在一个地方做这个应用程序。我设法让它与 AlNavigation.explore() 间隔移动,但这似乎不是最流畅的方式,因为它主要是围绕自己做圆圈,然后只是移动一点。此外,当 Pepper 的电池电量低于 15% 时,我希望它去找充电站。我在自治生活中成功地做到了,但是当我的应用程序打开时,它就不起作用了。我在我的应用程序中添加了 ALRecharge.goToStation() 来解决这个问题,但有时它可以工作,有时它不能。

问题:

1) 如何让 Pepper 在房间里顺畅地“走动”,然后在有人对 Pepper 说话时停下来?

2) 如何在我的应用程序中添加 Recharger 应用程序以便它们一起工作,或者我应该为我的应用程序自己做吗?

3) 如何确保 Pepper 找到充电库存,即使 Pepper 没有从它所在的位置看到它?

有没有人有这方面的例子,也许他们让 Pepper 在房间里“活”了,还使用了 Pepper 充电座。

谢谢

4

3 回答 3

5

当您让 Pepper 去充电时,充电站必须在视野范围内(即大约小于 3 米)。

如果没有,他就找不到了。

我建议使用在 ALNavigation 探索期间在后台创建的地图,将 Pepper 发送到他的充电站附近,然后您可以启动 ALRecharge.goToStation() 方法。

所以最简单的方法是在他的充电器上打开你的 Pepper(或者只是重新启动 naoqi)所以在探索之后你只需要让他去世界位置(0,0,0)然后你可以让他去充电.

如果您不想使用导航移动,也可以使用 WorldRobotPosition 手动将其发送回位置 0,0,0。

于 2017-05-04T09:20:37.083 回答
4

亚历山大的解决方案是一个很好的解决方案。

如果您通过ALNavigation 中的explore方法创建地图,您还可以将随机地图内目标提供给navigateToInMap方法,以便非常顺畅地导航。

然后,您可以决定在检测到某人时停止导航,使用 ALFaceDetection 或 ALPeoplePerception。

于 2017-05-04T10:10:09.290 回答
3

如果您使用 ALNavigation,您可以制作地图并使用它与 Pepper 一起移动:

ALNavigation.explore() 
#The best is to start exploration near the charging station, so the coordinates (0,0) will be the charging station 
path = ALNavigation.saveExploration()
ALNavigation.loadExploration(path)
ALNavigation.startLocalization()

好的,现在您已本地化。您可以通过以下方式获取机器人的当前位置

ALNavigation.getRobotPositionInMap() 它返回一个包含机器人位置和置信度的数组。如果您要保存多个坐标,请在机器人的某个位置创建一个文件,并放置像 {charger : [0,0]} 这样的坐标。

如果你想平滑移动,你可以使用 ALNavigation.navigateToInMap(coord) 但它不会很平滑。更好的是使用多个 ALMotion.moveToward(x,y,theta,configuration) 并设置机器人的速度。

于 2017-05-10T18:25:38.457 回答