实现行为树执行器、任务协调和技能接口

This commit is contained in:
2026-09-20 12:18:52 +08:00
commit 492676344a
143 changed files with 13010 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
{
"client_request_id": "multi-001",
"robot_id": "robot_01",
"instruction": "从货架A取两瓶water,再取一个doll,逐件放入tote_A",
"known_info": {
"items": [
{
"target_name": "water",
"quantity": 2,
"source_location": "shelf_A"
},
{
"target_name": "doll",
"quantity": 1,
"source_location": "shelf_A"
}
],
"destination": "tote_A"
}
}
+74
View File
@@ -0,0 +1,74 @@
{
"schema_version": 1,
"plan_version": 1,
"task_type": "pick_transport_place",
"goal": "Move water from shelf_A to tote_A",
"slots": {
"target_name": "water",
"quantity": 1,
"source_location": "shelf_A",
"destination": "tote_A"
},
"missing_information": [],
"subtasks": [
{
"id": "S1",
"skill": "NAVIGATE",
"arguments": {
"destination": "shelf_A"
},
"depends_on": []
},
{
"id": "S2",
"skill": "GROUND_TARGET",
"arguments": {
"target": "water"
},
"depends_on": [
"S1"
]
},
{
"id": "S3",
"skill": "PICK",
"arguments": {
"target": "water"
},
"depends_on": [
"S2"
]
},
{
"id": "S4",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A"
},
"depends_on": [
"S3"
]
},
{
"id": "S5",
"skill": "CHECK_FREE_SPACE",
"arguments": {
"destination": "tote_A"
},
"depends_on": [
"S4"
]
},
{
"id": "S6",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A"
},
"depends_on": [
"S5"
]
}
]
}
+158
View File
@@ -0,0 +1,158 @@
{
"schema_version": 2,
"plan_version": 1,
"task_type": "multi_item_pick_transport_place",
"goal": "从货架A取两瓶water,再取一个doll,逐件放入tote_A",
"route": "OBJECT_TABLE",
"slots": {
"items": [
{
"target_name": "water",
"quantity": 2,
"source_location": "shelf_A"
},
{
"target_name": "doll",
"quantity": 1,
"source_location": "shelf_A"
}
],
"destination": "tote_A"
},
"missing_information": [],
"subtasks": [
{
"id": "S1",
"skill": "NAVIGATE",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": []
},
{
"id": "S2",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S1"
]
},
{
"id": "S3",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S2"
]
},
{
"id": "S4",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S3"
]
},
{
"id": "S5",
"skill": "NAVIGATE",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S4"
]
},
{
"id": "S6",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S5"
]
},
{
"id": "S7",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S6"
]
},
{
"id": "S8",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S7"
]
},
{
"id": "S9",
"skill": "NAVIGATE",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S8"
]
},
{
"id": "S10",
"skill": "PICK",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S9"
]
},
{
"id": "S11",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S10"
]
},
{
"id": "S12",
"skill": "PLACE",
"arguments": {
"target": "doll",
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S11"
]
}
]
}
+230
View File
@@ -0,0 +1,230 @@
{
"schema_version": 2,
"plan_version": 1,
"task_type": "multi_item_pick_transport_place",
"goal": "从货架A取两瓶water,再取一个doll,逐件放入tote_A",
"route": "SHELF_CELL",
"slots": {
"items": [
{
"target_name": "water",
"quantity": 2,
"source_location": "shelf_A"
},
{
"target_name": "doll",
"quantity": 1,
"source_location": "shelf_A"
}
],
"destination": "tote_A"
},
"missing_information": [],
"subtasks": [
{
"id": "S1",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 0
},
"depends_on": []
},
{
"id": "S2",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S1"
]
},
{
"id": "S3",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 0
},
"depends_on": [
"S2"
]
},
{
"id": "S4",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S3"
]
},
{
"id": "S5",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S4"
]
},
{
"id": "S6",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S5"
]
},
{
"id": "S7",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 1
},
"depends_on": [
"S6"
]
},
{
"id": "S8",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S7"
]
},
{
"id": "S9",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 1
},
"depends_on": [
"S8"
]
},
{
"id": "S10",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S9"
]
},
{
"id": "S11",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S10"
]
},
{
"id": "S12",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S11"
]
},
{
"id": "S13",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 2
},
"depends_on": [
"S12"
]
},
{
"id": "S14",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S13"
]
},
{
"id": "S15",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 2
},
"depends_on": [
"S14"
]
},
{
"id": "S16",
"skill": "PICK",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S15"
]
},
{
"id": "S17",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S16"
]
},
{
"id": "S18",
"skill": "PLACE",
"arguments": {
"target": "doll",
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S17"
]
}
]
}
+11
View File
@@ -0,0 +1,11 @@
{
"client_request_id": "demo-001",
"robot_id": "robot_01",
"instruction": "把货架A的一瓶矿泉水放进周转箱A",
"known_info": {
"target_name": "water",
"quantity": 1,
"source_location": "shelf_A",
"destination": "tote_A"
}
}
+9
View File
@@ -0,0 +1,9 @@
# Endpoint selection for integration with the real BT executor.
# This is not a complete success scenario: verification defaults to UNKNOWN.
# Fill scenarios_json explicitly for the selected route/site and evidence policy.
/sim/robot_01/bt_mock_skills:
ros__parameters:
enabled_actions: [navigate, navigate_semantic, execute_manipulation, plan_task, locate_shelf_column, localize_target_3d, check_free_space, assess_grasp, execute_posture, verify_state, evaluate_progress]
enabled_topics: [robot_state, safety_state, visual_observation, dense_progress]
initial_holding_state: UNKNOWN
scenarios_json: '{}'
+179
View File
@@ -0,0 +1,179 @@
{
"plan": {
"schema_version": 2,
"plan_version": 1,
"task_type": "multi_item_pick_transport_place",
"goal": "从货架A取两瓶water,再取一个doll,逐件放入tote_A",
"route": "OBJECT_TABLE",
"slots": {
"items": [
{
"target_name": "water",
"quantity": 2,
"source_location": "shelf_A"
},
{
"target_name": "doll",
"quantity": 1,
"source_location": "shelf_A"
}
],
"destination": "tote_A"
},
"missing_information": [],
"subtasks": [
{
"id": "S1",
"skill": "NAVIGATE",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": []
},
{
"id": "S2",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S1"
]
},
{
"id": "S3",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S2"
]
},
{
"id": "S4",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S3"
]
},
{
"id": "S5",
"skill": "NAVIGATE",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S4"
]
},
{
"id": "S6",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S5"
]
},
{
"id": "S7",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S6"
]
},
{
"id": "S8",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S7"
]
},
{
"id": "S9",
"skill": "NAVIGATE",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S8"
]
},
{
"id": "S10",
"skill": "PICK",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S9"
]
},
{
"id": "S11",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S10"
]
},
{
"id": "S12",
"skill": "PLACE",
"arguments": {
"target": "doll",
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S11"
]
}
]
},
"shelf": {
"status": "SUCCEEDED",
"shelf_id": "shelf_A",
"side_id": "FRONT",
"column_id": "1",
"tier_id": "2",
"confidence": 0.99
},
"localize3d": {
"point": [
0.5,
0.2,
0.8
]
},
"dense_feedback": {
"progress": 0.8,
"hop": 1
}
}
+251
View File
@@ -0,0 +1,251 @@
{
"plan": {
"schema_version": 2,
"plan_version": 1,
"task_type": "multi_item_pick_transport_place",
"goal": "从货架A取两瓶water,再取一个doll,逐件放入tote_A",
"route": "SHELF_CELL",
"slots": {
"items": [
{
"target_name": "water",
"quantity": 2,
"source_location": "shelf_A"
},
{
"target_name": "doll",
"quantity": 1,
"source_location": "shelf_A"
}
],
"destination": "tote_A"
},
"missing_information": [],
"subtasks": [
{
"id": "S1",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 0
},
"depends_on": []
},
{
"id": "S2",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S1"
]
},
{
"id": "S3",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 0
},
"depends_on": [
"S2"
]
},
{
"id": "S4",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 0
},
"depends_on": [
"S3"
]
},
{
"id": "S5",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S4"
]
},
{
"id": "S6",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 0
},
"depends_on": [
"S5"
]
},
{
"id": "S7",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 1
},
"depends_on": [
"S6"
]
},
{
"id": "S8",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S7"
]
},
{
"id": "S9",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 1
},
"depends_on": [
"S8"
]
},
{
"id": "S10",
"skill": "PICK",
"arguments": {
"target": "water",
"item_index": 1
},
"depends_on": [
"S9"
]
},
{
"id": "S11",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S10"
]
},
{
"id": "S12",
"skill": "PLACE",
"arguments": {
"target": "water",
"destination": "tote_A",
"item_index": 1
},
"depends_on": [
"S11"
]
},
{
"id": "S13",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "observation",
"item_index": 2
},
"depends_on": [
"S12"
]
},
{
"id": "S14",
"skill": "ROBOBRAIN_SHELF_LOCALIZE",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S13"
]
},
{
"id": "S15",
"skill": "NAVIGATE",
"arguments": {
"source_location": "shelf_A",
"mode": "shelf_cell",
"item_index": 2
},
"depends_on": [
"S14"
]
},
{
"id": "S16",
"skill": "PICK",
"arguments": {
"target": "doll",
"item_index": 2
},
"depends_on": [
"S15"
]
},
{
"id": "S17",
"skill": "NAVIGATE",
"arguments": {
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S16"
]
},
{
"id": "S18",
"skill": "PLACE",
"arguments": {
"target": "doll",
"destination": "tote_A",
"item_index": 2
},
"depends_on": [
"S17"
]
}
]
},
"shelf": {
"status": "SUCCEEDED",
"shelf_id": "shelf_A",
"side_id": "FRONT",
"column_id": "1",
"tier_id": "2",
"confidence": 0.99
},
"localize3d": {
"point": [
0.5,
0.2,
0.8
]
},
"dense_feedback": {
"progress": 0.8,
"hop": 1
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"loader": "deployment_models:create_robobrain",
"model": {"checkpoint": "/absolute/path/to/pinned/local/checkpoint"},
"task_mapping": {"plan": "general", "shelf": "general", "localize3d": "general"}
}
+10
View File
@@ -0,0 +1,10 @@
# Supply existing absolute directories and a pinned worker command at launch.
# No checkpoint, network endpoint or GPU allocation is invented by this config.
/**:
ros__parameters:
simulation: false
record_directory: ""
media_root: ""
model_version: ""
worker_argv_json: "[]"
model_load_timeout_seconds: 300.0
+57
View File
@@ -0,0 +1,57 @@
{
"schema_version": 1,
"registry_version": 1,
"simulation": true,
"locations": {
"observe_A": {
"frame_id": "map",
"x": 0.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"shelf_A_stop": {
"frame_id": "map",
"x": 1.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"tote_A_stop": {
"frame_id": "map",
"x": 2.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
}
},
"sources": {
"shelf_A": {
"observe_location": "observe_A",
"shelf_id": "shelf_A"
}
},
"destinations": {
"tote_A": {
"location": "tote_A_stop",
"region_ref": "tote_A"
}
},
"parking_locations": {
"shelf_A/FRONT/1": "shelf_A_stop"
},
"allowed_postures": [
"pregrasp",
"transport"
],
"transport_posture": "transport"
}
+91
View File
@@ -0,0 +1,91 @@
{
"schema_version": 1,
"registry_version": 1,
"simulation": true,
"locations": {
"observe_A": {
"frame_id": "map",
"x": 0.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"shelf_A_stop": {
"frame_id": "map",
"x": 1.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"tote_A_stop": {
"frame_id": "map",
"x": 2.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
}
},
"sources": {
"shelf_A": {
"observe_location": "observe_A",
"shelf_id": "shelf_A"
}
},
"destinations": {
"tote_A": {
"location": "tote_A_stop",
"region_ref": "tote_A"
}
},
"parking_locations": {
"shelf_A/FRONT/1": "shelf_A_stop"
},
"allowed_postures": [
"pregrasp",
"transport"
],
"transport_posture": "transport",
"object_locations": {
"water": "shelf_A_stop",
"doll": "shelf_A_stop"
},
"object_postures": {
"water": "pregrasp",
"doll": "pregrasp"
},
"cell_locations": {
"shelf_A/FRONT/1/2": "shelf_A_stop"
},
"cell_postures": {
"shelf_A/FRONT/1/2": "pregrasp"
},
"execution_route": "OBJECT_TABLE",
"object_aliases": {
"water": [
"矿泉水",
"水"
],
"doll": [
"玩偶"
]
},
"source_aliases": {
"shelf_A": [
"货架A"
]
},
"destination_aliases": {
"tote_A": [
"周转箱A"
]
}
}
+91
View File
@@ -0,0 +1,91 @@
{
"schema_version": 1,
"registry_version": 1,
"simulation": true,
"locations": {
"observe_A": {
"frame_id": "map",
"x": 0.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"shelf_A_stop": {
"frame_id": "map",
"x": 1.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
},
"tote_A_stop": {
"frame_id": "map",
"x": 2.0,
"y": 0.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0
}
},
"sources": {
"shelf_A": {
"observe_location": "observe_A",
"shelf_id": "shelf_A"
}
},
"destinations": {
"tote_A": {
"location": "tote_A_stop",
"region_ref": "tote_A"
}
},
"parking_locations": {
"shelf_A/FRONT/1": "shelf_A_stop"
},
"allowed_postures": [
"pregrasp",
"transport"
],
"transport_posture": "transport",
"object_locations": {
"water": "shelf_A_stop",
"doll": "shelf_A_stop"
},
"object_postures": {
"water": "pregrasp",
"doll": "pregrasp"
},
"cell_locations": {
"shelf_A/FRONT/1/2": "shelf_A_stop"
},
"cell_postures": {
"shelf_A/FRONT/1/2": "pregrasp"
},
"execution_route": "SHELF_CELL",
"object_aliases": {
"water": [
"矿泉水",
"水"
],
"doll": [
"玩偶"
]
},
"source_aliases": {
"shelf_A": [
"货架A"
]
},
"destination_aliases": {
"tote_A": [
"周转箱A"
]
}
}