Skip to content

Latest commit

 

History

History
97 lines (89 loc) · 3.74 KB

File metadata and controls

97 lines (89 loc) · 3.74 KB

Starting the AND/OR graph process, it loads the AND/OR graph description from a text file, and generates the AND/OR graph G.

To generate the AND/OR graph, we describe it with the following structure offline:

# 1st line:
[AND/OR graph name] [No. nodes (N)] [root node name]
# List all the nodes in the AND/OR graph:
[node_1 name] [node_1 cost]
[node_2 name] [node_2 cost]
...
...
...
[node_N name] [node_N cost]
# After the list of nodes, list all the hyper-arcs (H  hyper-arcs):
[hyper-arc_1 name] [No. child nodes(NC1)] [parent node name] [hyper-arc_1 cost] [hyper-arc_1 lower level graph file name]
[1st child node name]
...
[NC1'th child node name]
[hyper-arc_2 name] [No. child nodes(NC2)] [parent node name] [hyper-arc_2 cost] [hyper-arc_2 lower level graph file name]
[1st child node name]
...
[NC2'th child node name]
....
....
....
[hyper-arc_H name] [No. child nodes(NCH)] [parent node name] [hyper-arc_H cost] [hyper-arc_H lower level graph file name]
[1st child node name]
...
[NCH'th child node name]

If a hyper-arc does not hold a lower level AND/OR graph, we simply put a dash (-) character.

The description of the hierarchical AND/OR of a table assembly scenario with two legs, presented in Figure 4 of paper, is as following:

TableAssembly 7 Table_FinalPose
Plate_initialPose 0
Plate_assemblyPose 0
Leg1_initialPose 0
Leg2_initialPose 0
Leg1_Plate_connected 0
Leg2_Plate_connected 0
Table_FinalPose 0
h0 1 Plate_assemblyPose 1 -
Plate_initialPose
h1 2 Leg1_Plate_connected 1 basic_connection
Leg1_initialPose
Plate_assemblyPose
h2 2 Leg2_Plate_connected 1 basic_connection
Leg2_initialPose
Leg1_Plate_connected
h3 1 Table_FinalPose 1 -
Leg2_Plate_connected

In this description basic_connection is the lower level AND/OR file name which exists in the same path (folder) of the higher level AND/OR graph (basic_connection.txt). This AND/OR graph describes how the human or the robot can cooperatively connect a leg to a plate (tabletop) using FOL AND/OR:

ConnectLegPlate 4 Leg_Plate_Connected
Leg_Plate_Connected 0
Leg_initialPose 0
Leg_middlePose 0
Plate 0
h1 2 Leg_middlePose 2 -
Leg_initialPose
Plate
h2 2 Leg_Plate_Connected 1 -
Leg_initialPose
Plate
h3 1 Leg_Plate_Connected 1 -
Leg_middlePose
h4_human 1 Leg_Plate_Connected 2 -
Leg_middlePose
h5_human 2 Leg_Plate_Connected 5 -
Leg_initialPose
Plate

The interpretation of nodes and hyper-arcs titles given in the provided example of the table assembly AND/OR graph is following.

Title Interpretation
TableAssembly the name of the higher level AND/OR graph G0 (how to assemble a table)
ConnectLegPlate the name of the lower level AND/OR graph G1 (how to connect a leg to a plate or tabletop)
Table_FinalPose the root node name of G0 (the table is assembled and it is in its final pose)
Plate_initialPose a node name (the tabletop or plate is in its initial position)
Plate_assemblyPose a node name (the plate is in assembly position)
Leg(i)_initialPose a node name (the leg i is in initial position)
Leg(i)_Plate_connected a node name (the leg i is connected to the plate)
h(i) a hyper-arc name (a state transition from the child nodes to the parent node)
basic_connection the file name of the lower level AND/OR Graph G1
Leg_middlePose a node name of Graph G1 (a leg is placed in front of the human)
Plate a node name of Graph G1 (a plate or tabletop)
Leg_Plate_Connected a root node name of Graph G1 (a leg is connected to the tabletop)
h(i)_human a hyper-arc name of graph G1 (a state transition from the child nodes to the parent node and done by human)