The PR defines a new scenario package mdr_receive_and_transport_drink under mdr_robocup_tasks. The package implements a scenario in which a robot looks for a person, receives a drink from them, and brings the drink to a kitchen counter. The implementation follows the scenario description in the METRICS rulebook.
In addition to the new package, the PR includes the following changes and enhancements:
The find_people action client was modified so that person recognition can optionally be performed (depending on an argument passed to the client) and previously detected people can be erased from the knowledge base (as in the perceive_plane action). The find_people behaviour under mdr_perception_behaviours was also modified so that it can receive an argument perform_recognition, which is then passed on to the action client.
A new receive_object behaviour was added under mdr_hri_behaviours, which extracts the posture of a person (with the same heuristic as in the mdr_context_aware_hand_over scenario) and then makes a call to the receive_object action so that the object can be received.
Notes
This PR adds a basic/nominal version of the scenario in which the person is in the view of the robot. To make this more general, a future PR should implement actual looking for the person. This will require using a topological map so that the robot doesn't look for the person in all rooms, but only where the person can actually be found.
In the tests we performed with the HSR, we had some troubles during placing because the robot was too close to the kitchen counter and was colliding with the counter. This issue is related to https://github.com/b-it-bots/mas_domestic_robotics/pull/232, but a differently shaped DMP (which moves up first and then forward) would also be desired (NB: there is currently a bug in the DMP executor due to which we cannot execute new DMPs we record). Under the current version of the code, the problem can only be avoided by having the robot stand further from the counter before placing.
Summary of changes
The PR defines a new scenario package
mdr_receive_and_transport_drink
undermdr_robocup_tasks
. The package implements a scenario in which a robot looks for a person, receives a drink from them, and brings the drink to a kitchen counter. The implementation follows the scenario description in the METRICS rulebook.In addition to the new package, the PR includes the following changes and enhancements:
find_people
action client was modified so that person recognition can optionally be performed (depending on an argument passed to the client) and previously detected people can be erased from the knowledge base (as in theperceive_plane
action). Thefind_people
behaviour undermdr_perception_behaviours
was also modified so that it can receive an argumentperform_recognition
, which is then passed on to the action client.receive_object
behaviour was added undermdr_hri_behaviours
, which extracts the posture of a person (with the same heuristic as in themdr_context_aware_hand_over
scenario) and then makes a call to thereceive_object
action so that the object can be received.Notes