Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of changes
This PR first of all adds a new
mdr_utility_tasks
metapackage undermdr_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 themdr_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 082db55), namely detected people were not added to the list in thePersonList
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.