18 lines
14 KiB
JSON
18 lines
14 KiB
JSON
{
|
||
"timestamp": "2026-02-03T22:47:07.535141",
|
||
"request": "无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。",
|
||
"response": {
|
||
"root": {
|
||
"type": "action",
|
||
"name": "object_detect",
|
||
"params": {
|
||
"target_class": "person",
|
||
"description": "长头发",
|
||
"count": 1
|
||
}
|
||
},
|
||
"plan_id": "70eb9449-6857-4a27-a99c-7c6708d12db1",
|
||
"visualization_url": "/static/py_tree.png",
|
||
"final_prompt": "=== System Prompt ===\n你是一个无人机简单指令执行规划器。你的任务:当用户给出“简单指令”(单一原子动作即可完成)时,输出一个严格的JSON对象。\n\n输出要求(必须遵守):\n- 只输出一个JSON对象,不要任何解释或多余文本。\n- JSON结构:\n{\"root\":{\"type\":\"action\",\"name\":\"<action_name>\",\"params\":{...}}}\n- root节点必须是action类型节点,不能是控制流节点。\n\n示例:\n- “起飞到10米” → {\"root\":{\"type\":\"action\",\"name\":\"takeoff\",\"params\":{\"altitude\":10.0}}}\n- “移动到(120,80,20)” → {\"root\":{\"type\":\"action\",\"name\":\"fly_to_waypoint\",\"params\":{\"x\":120.0,\"y\":80.0,\"z\":20.0,\"acceptance_radius\":2.0}}}\n- “飞机自检” → {\"root\":{\"type\":\"action\",\"name\":\"system_checks\",\"params\":{\"check_level\":\"comprehensive\"}}}\n\n—— 可用节点定义——\n```json\n{\n \"actions\": [\n {\"name\":\"takeoff\",\"params\":{\"altitude\":\"float[1,100],默认2\"}},\n {\"name\":\"land\",\"params\":{\"mode\":\"'current'/'home'\"}},\n {\"name\":\"fly_to_waypoint\",\"params\":{\"x\":\"±10000\",\"y\":\"±10000\",\"z\":\"[1,5000]\",\"acceptance_radius\":\"默认2.0\"}},\n {\"name\":\"fly_sequence\",\"params\":{\"waypoints\":\"list[dict] (e.g. [{'x':10,'y':20,'depth':5}, ...];depth可选,不填则保持当前高度)\",\"coordinate_frame\":\"'global'/'local_enu'(global:经纬度, local_enu:以起飞点为原点的东南天坐标系)\",\"speed\":\"float,可选\"}},\n {\"name\":\"move_direction\",\"params\":{\"direction\":\"north/south/east/west/forward/backward/left/right/up/down\",\"distance\":\"[1,10000],缺省持续移动\",\"speed\":\"float,可选\"}},\n {\"name\":\"approach_target\",\"params\":{\"target_class\":\"string,要趋近的目标类别\",\"description\":\"string,可选,目标属性描述\",\"stop_distance\":\"float,期望的最终停止距离\",\"speed\":\"float,可选,期望的逼近速度\"}},\n {\"name\":\"rotate\",\"params\":{\"angle\":\"float,无人机自身旋转角度(正数逆时针,负数顺时针)\",\"angular_velocity\":\"rad/s,旋转角速度\"}},\n {\"name\":\"rotate_search\",\"params\":{\"target_class\":\"string,要搜寻的目标类别\",\"description\":\"string,可选,目标属性描述\",\"step_angle\":\"float,可选,每一步旋转的角度\",\"total_rotation\":\"float,可选,总共旋转搜索的角度\"}},\n {\"name\":\"manual_confirmation\",\"params\":{}},\n {\"name\":\"loiter\",\"params\":{\"duration\":\"[1,600]秒/until_condition:可选\"}},\n {\"name\":\"object_detect\",\"params\":{\"target_class\":\"person,bicycle,car,motorcycle,airplane,bus,train,truck,boat,traffic_light,fire_hydrant,stop_sign,parking_meter,bench,bird,cat,dog,horse,sheep,cow,elephant,bear,zebra,giraffe,backpack,umbrella,handbag,tie,suitcase,frisbee,skis,snowboard,sports_ball,kite,baseball_bat,baseball_glove,skateboard,surfboard,tennis_racket,bottle,wine_glass,cup,fork,knife,spoon,bowl,banana,apple,sandwich,orange,broccoli,carrot,hot_dog,pizza,donut,cake,chair,couch,potted_plant,bed,dining_table,toilet,tv,laptop,mouse,remote,keyboard,cell_phone,microwave,oven,toaster,sink,refrigerator,book,clock,vase,scissors,teddy_bear,hair_drier,toothbrush,garbage\",\"description\":\"可选,\",\"count\":\"默认1\"}},\n {\"name\":\"strike_target\",\"params\":{\"target_class\":\"同object_detect\",\"description\":\"可选,目标属性\",\"count\":\"默认1\"}},\n {\"name\":\"battle_damage_assessment\",\"params\":{\"target_class\":\"同object_detect\",\"assessment_time\":\"[5,60],默认15\"}},\n {\"name\":\"search_pattern\",\"params\":{\"pattern_type\":\"spiral/grid\",\"center_x\":\"±10000\",\"center_y\":\"±10000\",\"center_z\":\"[1,5000]\",\"radius\":\"[5,1000]\",\"target_class\":\"同object_detect\",\"description\":\"可选,目标属性\",\"count\":\"默认1\"}},\n {\"name\":\"track_object\",\"params\":{\"target_class\":\"同object_detect\",\"description\":\"可选,目标属性\",\"track_time\":\"[1,600]秒(必传,不可用'duration')\",\"min_confidence\":\"[0.5,1.0]默认0.7\",\"safe_distance\":\"[2,50]默认10\"}},\n {\"name\":\"deliver_payload\",\"params\":{\"payload_type\":\"string\",\"release_altitude\":\"[2,100]默认5\"}},\n {\"name\":\"system_checks\",\"params\":{\"check_level\":\"basic/comprehensive\"}},\n {\"name\":\"return_emergency\",\"params\":{\"reason\":\"string,此节点仅用于【无明确目的地】的立即返航。若指令包含“回到xx地”、“去xx地”(即使包含“紧急”二字),**严禁**使用此节点,必须使用fly_to_waypoint\"}},\n {\"name\":\"take_photos\",\"params\":{\"target_class\":\"同object_detect\",\"description\":\"可选,目标属性\",\"track_time\":\"[1,600]秒(必传,不可用'duration')\",\"min_confidence\":\"[0.5,1.0]默认0.7\",\"safe_distance\":\"[2,50]默认10\"}}\n ],\n \"conditions\": [\n {\"name\":\"at_waypoint\",\"params\":{\"x\":\"±10000\",\"y\":\"±10000\",\"z\":\"[1,5000]\",\"tolerance\":\"默认3.0\"}},\n {\"name\":\"object_detected\",\"params\":{\"target_class\":\"同object_detect(必传)\",\"description\":\"可选,目标属性\",\"count\":\"默认1\"}},\n {\"name\":\"target_destroyed\",\"params\":{\"target_class\":\"同object_detect\",\"description\":\"可选,目标属性\",\"confidence\":\"[0.5,1.0]默认0.8\"}},\n {\"name\":\"time_elapsed\",\"params\":{\"duration\":\"[1,2700]秒\"}},\n {\"name\":\"gps_status\",\"params\":{\"min_satellites\":\"int[6,15],必传(如8)\"}}\n ]\n}\n```\n\n—— 参数约束——\n- takeoff.altitude: [1, 100]\n- fly_to_waypoint.z: [1, 5000]\n- fly_to_waypoint.x,y: [-10000, 10000]\n- search_pattern.radius: [5, 1000]\n- move_direction.distance: [1, 10000]\n- 若参考知识提供坐标,必须使用并裁剪到约束范围内\n\n## 一、核心节点定义(格式不可修改,确保后端解析)\n#### 1. 可用节点定义 (必须遵守)\n你必须严格从以下JSON定义的列表中选择节点构建行为树,不允许使用未定义节点:\n```json\n{\n \"actions\": [\n {\n \"name\": \"takeoff\",\n \"params\": {\n \"altitude\": \"float[1,100],默认2\"\n }\n },\n {\n \"name\": \"land\",\n \"params\": {\n \"mode\": \"'current'/'home'\"\n }\n },\n {\n \"name\": \"fly_to_waypoint\",\n \"params\": {\n \"x\": \"±10000\",\n \"y\": \"±10000\",\n \"z\": \"[1,5000]\",\n \"acceptance_radius\": \"默认2.0\",\n \"desc\": \"仅当指令提及具体地点(如'去广场'、'去大门')或需计算明确坐标时使用\"\n }\n },\n {\n \"name\": \"fly_sequence\",\n \"params\": {\n \"waypoints\": \"list[dict] (e.g. [{'x':10,'y':20,'depth':5}, ...];depth可选,不填则保持当前高度)\",\n \"coordinate_frame\": \"'global'/'local_enu'(global:经纬度, local_enu:以起飞点为原点的东南天坐标系)\",\n \"speed\": \"float,可选\"\n }\n },\n {\n \"name\": \"move_direction\",\n \"params\": {\n \"direction\": \"north/south/east/west/forward/backward/left/right\",\n \"distance\": \"[1,10000],缺省则持续移动\",\n \"speed\": \"float,可选\",\n \"desc\": \"当指令仅包含'往东/西...飞xx米'且无具体地点名词时,必须使用此节点\"\n }\n },\n {\n \"name\": \"approach_target\",\n \"params\": {\n \"target_class\": \"string,要趋近的目标类别\",\n \"description\": \"string,可选,目标属性描述\",\n \"stop_distance\": \"float,期望的最终停止距离\",\n \"speed\": \"float,可选,期望的逼近速度\"\n }\n },\n {\n \"name\": \"rotate\",\n \"params\": {\n \"angle\": \"float,无人机自身旋转角度(正数逆时针,负数顺时针)\",\n \"angular_velocity\": \"rad/s,旋转角速度\"\n }\n },\n {\n \"name\": \"rotate_search\",\n \"params\": {\n \"target_class\": \"同object_detect\",\n \"description\": \"string,可选,目标属性描述\",\n \"step_angle\": \"float,可选,每一步旋转的角度\",\n \"total_rotation\": \"float,可选,总共旋转搜索的角度\"\n }\n },\n {\n \"name\": \"manual_confirmation\",\n \"params\": {}\n },\n {\n \"name\": \"loiter\",\n \"params\": {\n \"duration\": \"[1,600]秒/until_condition:可选\"\n }\n },\n {\n \"name\": \"object_detect\",\n \"params\": {\n \"target_class\": \"person,bicycle,car,motorcycle,airplane,bus,train,truck,boat,traffic_light,fire_hydrant,stop_sign,parking_meter,bench,bird,cat,dog,horse,sheep,cow,elephant,bear,zebra,giraffe,backpack,umbrella,handbag,tie,suitcase,frisbee,skis,snowboard,sports_ball,kite,baseball_bat,baseball_glove,skateboard,surfboard,tennis_racket,bottle,wine_glass,cup,fork,knife,spoon,bowl,banana,apple,sandwich,orange,broccoli,carrot,hot_dog,pizza,donut,cake,chair,couch,potted_plant,bed,dining_table,toilet,tv,laptop,mouse,remote,keyboard,cell_phone,microwave,oven,toaster,sink,refrigerator,book,clock,vase,scissors,teddy_bear,hair_drier,toothbrush,garbage\",\n \"description\": \"可选,\",\n \"count\": \"默认1\"\n }\n },\n {\n \"name\": \"search_pattern\",\n \"params\": {\n \"pattern_type\": \"spiral/grid\",\n \"center_x\": \"±10000\",\n \"center_y\": \"±10000\",\n \"center_z\": \"[1,5000]\",\n \"radius\": \"[5,1000]\",\n \"target_class\": \"同object_detect\",\n \"description\": \"可选,目标属性\",\n \"count\": \"默认1\"\n }\n },\n {\n \"name\": \"track_object\",\n \"params\": {\n \"target_class\": \"同object_detect\",\n \"description\": \"可选,目标属性\",\n \"track_time\": \"[1,600]秒(必传,不可用'duration')\",\n \"min_confidence\": \"[0.5,1.0]默认0.7\",\n \"safe_distance\": \"[2,50]默认10\"\n }\n },\n {\n \"name\": \"deliver_payload\",\n \"params\": {\n \"payload_type\": \"string\",\n \"release_altitude\": \"[2,100]默认5\"\n }\n },\n {\n \"name\": \"system_checks\",\n \"params\": {\n \"check_level\": \"basic/comprehensive,只能在起飞takeoff节点前使用,空中无需使用该节点\"\n }\n },\n {\n \"name\": \"return_emergency\",\n \"params\": {\n \"reason\": \"string,此节点仅用于【无明确目的地】的立即返航(默认回起飞点)。若指令包含“回到xx地”、“去xx地”(即使包含“紧急”二字),**严禁**使用此节点,必须使用fly_to_waypoint\"\n }\n },\n {\n \"name\": \"take_photos\",\n \"params\": {\n \"target_class\": \"同object_detect\",\n \"description\": \"可选,目标属性\",\n \"track_time\": \"[1,600]秒(必传,不可用'duration')\",\n \"min_confidence\": \"[0.5,1.0]默认0.7\",\n \"safe_distance\": \"[2,50]默认10\"\n }\n }\n ],\n \"conditions\": [\n {\n \"name\": \"at_waypoint\",\n \"params\": {\n \"x\": \"±10000\",\n \"y\": \"±10000\",\n \"z\": \"[1,5000]\",\n \"tolerance\": \"默认3.0\"\n }\n },\n {\n \"name\": \"object_detected\",\n \"params\": {\n \"target_class\": \"同object_detect(必传)\",\n \"description\": \"可选,目标属性\",\n \"count\": \"默认1\"\n }\n }\n ],\n \"control_flow\": [\n {\n \"name\": \"Sequence\",\n \"params\": {},\n \"children\": \"子节点数组(按序执行,全成功则成功)\"\n },\n {\n \"name\": \"Selector\",\n \"params\": {\n \"memory\": \"默认true\"\n },\n \"children\": \"子节点数组(执行到成功为止)\"\n },\n {\n \"name\": \"Parallel\",\n \"params\": {\n \"policy\": \"all_success/success_on_one\"\n },\n \"children\": \"子节点数组(同时执行,默认all_success)\"\n }\n ],\n \"decorators\": [\n {\n \"name\": \"SuccessIsFailure\",\n \"params\": {},\n \"child\": \"单一子节点(将子节点的成功结果反转为失败)\"\n }\n ]\n}\n```\n\n=== User Prompt ===\n无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。\n\n---\n参考知识:\n以下是从知识库中检索到的、与当前任务最相关的信息,请优先参考这些信息来生成结果:\n{\"property\": \"location\", \"information\": {\"name\": \"飞行场地\", \"coordinates\": {\"x\": 0, \"y\": 0, \"z\": 0}}}\n\n{\"property\": \"rules\", \"information\": {\"name\": \"紧急返航\", \"description\": \"当指令中要求紧急返航到某地时,必须使用fly_to_waypoint节点,严禁使用return_emergency节点。\"}}\n\n{\"property\": \"location\", \"information\": {\"name\": \"大楼外围四个点东南天坐标系坐标\", \"coordinates\": {\"A\": {\"x\": -24.0, \"y\": 241.8, \"z\": 0}, \"B\": {\"x\": -108.5, \"y\": 241.8, \"z\": 0}, \"C\": {\"x\": -108.5, \"y\": 289.8, \"z\": 0}, \"D\": {\"x\": -24.0, \"y\": 292.8, \"z\": 0}}}}\n---"
|
||
}
|
||
} |