我一直在玩:

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/

10-09 14:43