我一直在玩:
PeoplePerception/PeopleDetected()
PeoplePerception/PopulationUpdated()
PeoplePerception/PeopleList()
PeoplePerception/NonVisiblePeopleList()
PeoplePerception/VisiblePeopleList()
但是我似乎无法弄清楚如何识别Pepper前面是否有人。这些事件会在更新总体时触发,但从返回值中我就无法理解。
我要完成的工作是,只要某人在2号检测区域内,便使Pepper保持某种状态,并在1分钟内未检测到某人时使其进入“屏幕保护程序”。
关于Pepper开发,我还很陌生,所以对您的帮助将不胜感激,谢谢!
最佳答案
听起来您想将ALPeoplePerception API与ALEngagmentZones API结合使用。 here对此进行了详细描述。 ALMemory(Pepper的内存)中有一个密钥可以执行您想要的操作-存储参与区2(EngagementZones/PeopleInZone2)中所有人员的列表。
您已将问题标记为javascript,因此我将给出一个有关如何访问此问题的简短示例。
QiSession(function (session){
session.service("ALMemory").then(function(mem) {
mem.getData("EngagementZones/PeopleInZone2").then(function(data) {
// now you can access data and do something with it...
// it should be a list of IDs of the people in the engagement zone
// so you could check data.length > 0 to see if there's any people
}, console.log);
}, console.log);
}, console.log);
还有其他可能有用的事件,例如EngagementZones/PersonEnteredZone2。如果您尚未找到它,则有关于javascript API here的更多详细信息。
关于javascript - 如何连续检测是否有人在Pepper面前?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61099171/