Restaurant
Description
The robot retrieves and serves orders to several customers in a real restaurant previously unknown to the robot.
Main Goal
: Detect calling or waving customer, reach a customer’s table without prior guidance/training. Take and serve all orders.
Optional Goals
: Use an unattached tray to transport the order.
Task Breakdown
- The robot should identify a customer calling or waving.
- The robot should reach the customer’s table.
- The robot should take the order (keep eye contact).
- The robot should go back to the Kitchen bar and pick the requested object.
- The robot should return to the identified customer and serve the order.
Possible points
Category | Action | Score |
---|---|---|
Regular Rewards | Detect calling or waving customer | 2×100 |
Reach a customer’s table without prior guidance/training | 2×100 | |
Take an order. | 2×300 | |
Serve an order. | 2×300 | |
Bonus Rewards | Use an unattached tray to transport | 2×200 |
Regular Penalties | Not making eye-contact when taking an order | 2×–80 |
Not reaching the bar (barman has to move from behind the bar to interact with the robot) | 2×–80 | |
Deus ex Machina Penalties | Being guided to a table | 2×–200 |
Asking the Barman to handover object to the robot | 4×–50 | |
Guest needing to take the object from a tray or the robot’s hand | 4×–50 | |
Being told/pointed where is a table/Kitchen-bar | 2×–100 | |
Special Penalties & Bonuses | Not attending (see sec. 3.9.1) | –500 |
Using alternative start signal (see sec. 3.7.8) | –100 | |
Outstanding performance (see sec. 3.9.3) | 200 | |
Total | Total Score (excluding special penalties & standard bonuses) | 2000 |
Tasks per Area
Navigation
navigate_to_target
Move to a target coordinate (customer)
Subtask Manager
Args - coordinates: Tuple[float,float,float] (3D coordinates to set nav goal)
Return - None
navigate_to_origin
Return to starting point (kitchen bar)
Subtask Manager
Args - None
Return - None
Manipulation
pan_camera
Move the arm horizontally either left or right to allow the camera to have a different field of view for customer detection.
Subtask Manager
Args - direction: int (either -1(pan to left) or 1(pan to right)), maybe also sending the angle
Return - None
follow_face
Follow the face of a person with the arm. There should be a subscriber for the vision topic, but the arm should only start following the face when requested (this could be a service or a subscriber).
Subtask Manager
Args - follow: bool (True to follow the face, False to stop following)
Return - None
HRI
say
Say text provided
get_order
Get items asked by customer and quantity
Subtask Manager
Args - None
Return - order: string? (will depend on picking approach )
Vision
find_beverage
Check if there is a beverage available in a table and return its approximate position.
Subtask Manager
Args - drink: string (could be any type of drink)
Return - status: int (success, execution error, terminal error or target not found ENUM) - found: bool (if the drink is available or not) - position: string (aproximate position on the table: left, right, center, top, bottom)
find_seat
Find an available seat.
Subtask Manager Args - None
Return - position: Point (normalized)
follow_face
A node should publish the coordinates of the largest face available so that the arm can follow it.
Main states
Detecting customers
- In this state, the robot should look for a customer calling or waving.
Navigation to the customer
- The robot should navigate to the customer’s table.
- This could be achieved with a follow person approach as long as the customer can be re-identified.
- Another approach would involve online mapping.
Taking the order
- For this state, the robot should take the order from the customer.
Navigation to the kitchen bar
- The robot should return to the kitchen bar to pick up the objects.
Picking objects
- If a tray is used, the robot should request the objects from the barman to be placed in the tray or pick them and placing them in the tray by itself.
- If no tray is used, the robot should pick up the objects one by one.
Returning to the customer
- The robot should return to the customer’s table to serve the order.
Placing objects
- The robot should place the objects on the table.
- If a tray is used, the robot should serve the objects from the tray or request the customer to take them.