b-it-bots / mas_domestic_robotics

Robot-independent ROS packages for domestic applications
GNU General Public License v3.0
28 stars 45 forks source link

Person registration #235

Closed alex-mitrevski closed 4 years ago

alex-mitrevski commented 4 years ago

Summary of changes

This PR first of all adds a new mdr_utility_tasks metapackage under mdr_scenarios for small utility tasks that a robot should perform (e.g. gathering information to populate its permanent knowledge base or collecting data for learning)

The actual purpose of the PR is the definition of a task in which a robot collects images of a person's face and stores those in its knowledge base. For this, a package mdr_util_register_person under the mdr_utility_tasks has been added. In this task, a robot asks a person to stand in front of its camera and then takes three pictures of them - one with the person facing straight towards the robot, one facing a bit to the left, and one facing a bit to the right. The face embeddings from all three views are then stored in the robot's permanent knowledge base.

The PR also resolves a bug in the find_people action (introduced with https://github.com/b-it-bots/mas_domestic_robotics/commit/082db55a4d4bc0f8870e4d2f33f0fb1f7aff8840), namely detected people were not added to the list in the PersonList message if a face could not be detected.

Design decisions

Currently, the name of the person is not collected in the task. One option would be to use speech input for this, but the problem we've encountered before is that international names aren't recognised reliably (hence we've decided to use a spreadsheet for entering the name in the lab manager scenario). For now, I would leave this feature out; for simplicity, names can be changed by editing the database entries manually (this should be done after the task is over; otherwise, the same person entry will be modified the next time the task is performed).

Tests to verify the functionality

I have performed some tests with our HSR, where the robot was learning my face. The tests included both the nominal case, where I was standing in front of the robot so that it could see my face, as well as cases in which the face was not visible, so the detection had to be repeated.

sonarcloud[bot] commented 4 years ago

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication