Как я могу постоянно определять, находится ли кто-то перед Пеппер? - PullRequest
0 голосов
/ 08 апреля 2020

Я играл с:

PeoplePerception/PeopleDetected()

PeoplePerception/PopulationUpdated()

PeoplePerception/PeopleList()

PeoplePerception/NonVisiblePeopleList()

PeoplePerception/VisiblePeopleList()

И все же я не могу понять, как определить, есть ли кто-то перед Пеппер. Эти события запускаются, когда население обновляется, но я не могу понять смысл возвращаемых значений.

То, что я пытаюсь сделать sh, - это заставить Пеппер оставаться в определенном состоянии до тех пор, пока кто-то находится в зоне обнаружения номер 2 и превращает его go в «заставку», когда он не обнаруживает кого-то в течение 1 минуты.

Я довольно новичок, когда речь идет о разработке Pepper, поэтому любая помощь будет Буду признателен, спасибо!

1 Ответ

1 голос
/ 10 апреля 2020

Звучит так, будто вы хотите объединить ALPeoplePerception API с ALEngagmentZones API. Это описано более подробно здесь . В ALMemory есть ключ (память Пеппера), который делает то, что вы хотите - хранит список всех людей в зоне взаимодействия 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 можно найти здесь .

...