Skip to content

D Behavior Trees Description

Irene González Fernández edited this page Mar 6, 2024 · 2 revisions

Preconditions and Effects

Carry My luggage

Node Name Precondition Effect
IsDetected(person) Person standing in front of the robot at the beginning of the test Person detected
IsDetected(2 bags) Two bags at maximum must be in front of the robot Bags detected
IsPointing Bags and a person detected Correct bag position known
MoveTo(correct_bag) Correct bag position known Robot near the correct bag
MoveArmToPredefined(gripper_front_camera) Robot near the correct bag Robot waiting for the person to put the bag on its arm
LookTo(person_1) Person was detected & Robot near correct bag Robot looking to person
Speak Robot near the correct bag & Looking to the person Person knows the robot is waiting
LookTo(gripper) Robot near the correct bag & Robot is waiting Robot looking at gripper
IsDetected(bag) Person moved the bag to its gripper Robot knows the bag is on its gripper
MoveArmToPredefined(home) Robot knows the bag is on its gripper Bag is secured to prevent its fall
Speak Bag is secured Robot is following the person
FollowPerson (subtree) Person is detected & Moving We have arrived to the destination
MoveArmToPredefined(gripper_front_camera) We have arrived to the destination Robot is offering the bag
LookAt(person) Person was detected & We have arrived to the destination Robot is looking at the person
Speak Robot is looking at the person Person knows it has to take its bag
LookAt(gripper) Person was noticed Robot looking at gripper
Not IsDetected(bag) Robot looking at gripper Person has the bag
Speak Person has the bag Robot is going bag
MoveTo(home) Bag was delivered Robot is at the beginning of the test

Receptionist

Node Name Precondition Effect
MoveTo(entrance) Robot is at entrance
Speak Robot is at entrance Guest is noticed, robot is ready to welcome them
IsDetected(person) Robot is at entrance & Guest noticed First Guest is detected
StoreDetection First Guest is detected (Optional) Possible extra characteristics could be inferred later
LookTo(person) Person was detected Robot looking at person
Query(name) Robot looking at person 1st Guest name is known
Query(favorite_drink) Robot looking at person 1st Guest favorite drink is known
Speak name and favorite drink are known Guest is following the robot
MoveTo(party) Guest is following the robot Robot and guest are at the party
IsDetected(person) Robot and guest are at the party Host is detected
LookAt(person) Person was detected Robot looking at host
Speak Robot looking at host Guest is introduced to host
IsSittable Guest is introduced A sittable spot is detected
LookTo(sittable_frame) A sittable spot is detected Robot is looking at chair
MoveArmTo(sittable_frame) Robot is looking at chair Robot is pointing at chair
Speak Robot is pointing to chair Guest knows where to sit

Serve Breakfast

Node Name Precondition Effect
MoveTo(kitchen) Robot is at kitchen
IsDetected(table) Robot is at kitchen Table is detected
MoveTo(table) Table is detected Robot is in front of the table
IsDetected(bowl) Robot is in front of the table Bowl is detected
LookAt(bowl) Bowl is detected Robot looking at bowl
PickObject(bowl) Robot looking at bowl Robot has the bowl
MoveTo(table_2) Robot has the bowl Robot is in front of the table_2
FindEmptyPlace(table_2) Robot is in front of the table_2 Empty place is found
PlaceObject(empty_place) Empty place is found Bowl is on the table
MoveTo(table_1) Bowl is on the table Robot is in front of table_1
IsDetected(cereal) Robot is in front of the table_1 Cereal is detected
LookAt(cereal) Cereal is detected Robot looking at Cereal
PickObject(cereal) Robot looking at Cereal Robot has the Cereal
MoveTo(table_2) Robot has the Cereal Robot is in front of the table_2
PourObject(bowl) Robot is in front of the table_2 Cereal is on bowl
FindEmptyPlace(table_2) Robot is in front of the table_2 Empty place is found
PlaceObject(empty_place) Empty place is found Cereal is on the table
MoveTo(table_1) Cereal is on the table Robot is in front of table_1
IsDetected(milk) Robot is in front of the table Milk is detected
LookAt(milk) Milk is detected Robot looking at milk
PickObject(milk) Robot looking at milk Robot has the milk
MoveTo(table_2) Robot has the milk Robot is in front of the table_2
PourObject(bowl) Robot is in front of the table_2 milk is on bowl
FindEmptyPlace(table_2) Robot is in front of the table_2 Empty place is found
PlaceObject(empty_place) Empty place is found Milk is on the table
MoveTo(table_1) Bowl is on the table Robot is at table_1
IsDetected(spoon) Robot is in front of the table Spoon is detected
LookAt(spoon) Spoon is detected Robot looking at spoon
PickObject(spoon) Robot looking at bowl Robot has the spoon
MoveTo(table_2) Robot has the spoon Robot is in front of the table_2
FindEmptyPlace(table_2) Robot is in front of the table_2 Empty place is found
PlaceObject(empty_place) Empty place is found Spoon is on the table

Storing Groceries

Node Name Precondition Effect
MoveTo(kitchen) Robot is at kitchen
IsDetected(table) Robot is at kitchen Table is detected
MoveTo(table) Table is detected Robot is in front of the table
LookAt(table) Robot is in front of the table Robot looking at the table
DetectNearestEntity Robot is in front of the table Nearest is detected
LookAt(nearest) Nearest is detected Robot looking at nearest
PickObject(nearest) Robot looking at nearest Robot has the nearest
MoveArmTo(camera_frame) Robot has the nearest Robot is looking at its gripper
IsDetected(nearest) Robot is looking at its gripper Nearest is confirmed it was picked
MoveArmToPredefined(home) Nearest is confirmed The object is secured
MoveTo(shelf) The object is secured Robot is in front of the shelf
IsDetected(shelf) Robot is in front of the shelf Shelf is detected again and confirmed
LookAt(shelf) Shelf is detected again and confirmed Robot looking at the shelf
DetermineObjectPosition(nearest) Robot looking at the shelf Place found
PlaceObject(to_place) Place found Nearest is in the shelf

Behavior Nodes

Description, Type and Ports of Behavior Nodes

Name Type of Node Description Ports (I: Input / O: Output)
PickObject Action Picks an object of a given position I: tf_frame
ReleaseObject Action Place an object to an empty place and return the... None
PlaceObject Action Place an object to an empty place and return the... I: position
O: left position
PourObjectToObject2 Action Pour one object into another I: position_obj2
MoveArmTo Action Moves the arm to a position I: tf_frame, tolerance
SetWayPoints Action Set the initial waypoints None
InitReceptionist Action Set the initial parameters, such as host name None
InitBreakfast Action Set initial parameters None
InitGroceries Action Set initial parameters None
Speak Action Speaks a certain text I: say text
Listen Action Listen to the person O: text listened
DialogConfirmation Action Confirms a prompt I: prompt
O: intention
Query Action The robot processes the information to extract the value of the intention I: intention
O: intention_value
MoveArmToPredefined Action Moves the arm to a position predefined None
GoBack Action Increase linear velocity backward I: velocity
Spin Action Moves within an area I: velocity
LookAt Action The robot stare to a frame I: tf_frame
MoveTo Action Moves to a frame with a margin of distance tolerance I: distance_tolerance, tf_frame
IsDetected Condition Check if an entity is detected and return the... O: frames
IsPointing Condition Check if the robot is pointing to an entity return... O: tf_target
IsEntityMoving Condition Detects if an entity is moving I: distance_tolerance
IsSeatable Condition Checks if there is enough space to sit a person... O: frame
LookAround Condition The robot looks around his head None
FindEmptyPlace Condition Finds an empty place in an entity and returns the... I: where, position
FindCorrectPlace Action Determine a position of the object I: tf_frame, entity
O: frame_to_put
StoreDetection Action Store the detection (picture) and relates to an id I: entity, id

Taxonomy of Behavior Nodes and Subsystems associated

Name Category Subsystem
PickObject Arm - Grasping Manipulation
ReleaseObject Arm - Grasping Manipulation
PlaceObject Arm - Manipulation Manipulation
PourObjectToObject2 Arm - Manipulation Manipulation
MoveArmTo Arm - Poses Manipulation
SetWayPoints Configuration Navigation
InitReceptionist Configuration Navigation
InitBreakfast Configuration Navigation
InitGroceries Configuration Navigation
Speak HRI - Dialogue HRI
Listen HRI - Dialogue HRI
DialogConfirmation HRI - Dialogue HRI
Query HRI - Dialogue HRI
MoveArmToPredefined Arm - Poses Manipulation
GoBack Motion - Base Attention
Spin Motion - Base Attention
LookAt Motion - Head Attention
MoveTo Motion - Navigation Navigation
IsDetected Perception Perception
IsPointing Perception Perception
IsEntityMoving Perception Perception
IsSeatable Perception Perception
LookAround Perception Perception
FindEmptyPlace Perception Perception
FindCorrectPlace Perception Perception
StoreDetection Perception Perception

Nodes used in the different tasks

Name CarryMyLuggage Receptionist ServeBreakfast StoreGroceries
PickObject No No Yes Yes
ReleaseObject No No Yes Yes
PlaceObject No No Yes Yes
PourObjectToObject2 No No Yes No
MoveArmTo No Yes No Yes
SetWayPoints No Yes Yes Yes
InitReceptionist No Yes No No
InitBreakfast No No Yes No
InitGroceries No No No Yes
Speak Yes Yes No No
Listen Yes Yes No No
DialogConfirmation Yes Yes No No
Query No Yes No No
MoveArmToPredefined Yes Yes No Yes
GoBack Yes No Yes No
Spin No Yes Yes No
LookAt Yes Yes Yes Yes
MoveTo Yes Yes Yes Yes
IsDetected Yes Yes Yes Yes
IsPointing Yes No No No
IsEntityMoving Yes No No No
IsSeatable No Yes No No
LookAround No Yes Yes Yes
FindEmptyPlace No No Yes No
FindCorrectPlace No No No Yes
StoreDetection No Yes No No