如何让Pepper机器人随机移动然后去充电站

时间:2017-05-03 11:11:00

标签: robot pepper

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

问题:

1)如何让胡椒顺利地在房间里“走动”,然后当有人和胡椒说话时停下来?

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

3)如果Pepper没有从它站立的地方看到它,如何确保Pepper找到充电库存?

有没有人有任何这方面的例子可能是他们在房间里胡椒“活着”并且还使用了胡椒充电座。

由于

3 个答案:

答案 0 :(得分:5)

当你要求佩珀去充电时,必须看到充电站(即大约不到3米)。

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

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

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

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

答案 1 :(得分:4)

Alexandre's solution是个好人。

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

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

答案 2 :(得分: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,配置)并设置机器人的速度。