完善修改
This commit is contained in:
@@ -51,3 +51,4 @@
|
|||||||
|
|
||||||
# 需要辨析的情况
|
# 需要辨析的情况
|
||||||
1. "无人机当前在空中,往东边飞50米,停个20s就好返航了。"这样的指令应该被判定为复杂,因为需要多步执行。
|
1. "无人机当前在空中,往东边飞50米,停个20s就好返航了。"这样的指令应该被判定为复杂,因为需要多步执行。
|
||||||
|
2. 到某地执行某动作,这样的任务应该是复杂。
|
||||||
@@ -171,25 +171,15 @@
|
|||||||
"params": { "duration": 300 }
|
"params": { "duration": 300 }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "拍照循环永不成功",
|
"name": "SuccessIsFailure",
|
||||||
"type": "decorator",
|
"type": "decorator",
|
||||||
"child": {
|
"child": {
|
||||||
"name": "DetectAndShoot",
|
"name": "check_and_photo",
|
||||||
"type": "Sequence",
|
"type": "Sequence",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{"name": "object_detect", "type": "action", "params": { "target_class": "person" }},
|
||||||
"name": "SuccessIsFailure",
|
{"name": "object_detected", "type": "condition", "params": { "target_class": "person" }},
|
||||||
"type": "decorator",
|
{"name": "take_photos", "type": "action", "params": { "target_class": "person" }}
|
||||||
"child": {
|
|
||||||
"name": "check_and_photo",
|
|
||||||
"type": "Sequence",
|
|
||||||
"children": [
|
|
||||||
{"name": "object_detect", "type": "action", "params": { "target_class": "person" }},
|
|
||||||
{"name": "object_detected", "type": "condition", "params": { "target_class": "person" }},
|
|
||||||
{"name": "take_photos", "type": "action", "params": { "target_class": "person" }}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,6 +195,25 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 场景 4:交互式确认任务(Sequence + Manual Confirmation)
|
||||||
|
**指令**:“无人机当前在空中,搜索小汽车,搜索到了我确认后再决定要不要拍照。”
|
||||||
|
**思路**:无人机已在空中,无需起飞,直接进行搜索。首先使用`rotate_search`主动搜索目标,配合`object_detected`条件节点确认目标是否被检测到。检测到后,执行`manual_confirmation`节点等待用户确认。只有用户确认通过(返回Success),才会继续执行后续的`take_photos`动作。
|
||||||
|
**结构**:Sequence
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"root": {
|
||||||
|
"type": "Sequence",
|
||||||
|
"name": "SearchConfirmPhoto",
|
||||||
|
"children": [
|
||||||
|
{"type":"action","name":"rotate_search","params":{"target_class":"car","description":"小汽车"}},
|
||||||
|
{"type":"condition","name":"object_detected","params":{"target_class":"car","description":"小汽车"}},
|
||||||
|
{"type":"action","name":"manual_confirmation","params":{}},
|
||||||
|
{"type":"action","name":"take_photos","params":{"target_class":"car","description":"小汽车"}}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 六、高频错误规避
|
## 六、高频错误规避
|
||||||
1. 控制流节点的 `type` 必须是 `"Sequence"`, `"Selector"` 或 `"Parallel"`
|
1. 控制流节点的 `type` 必须是 `"Sequence"`, `"Selector"` 或 `"Parallel"`
|
||||||
2. 当用户指令中要求执行动作前增加人工确认时,比如“我确认后拍照”,则必须在拍照动作前增加manual_confirmation节点
|
2. 当用户指令中要求执行动作前增加人工确认时,比如“我确认后拍照”,则必须在拍照动作前增加manual_confirmation节点
|
||||||
@@ -214,7 +223,7 @@
|
|||||||
6. **严格区分无人机状态**:当用户指令明确无人机在**空中**时,严禁使用system_checks与takeoff节点;仅当指令明确在**地面**时,才可使用这两个节点
|
6. **严格区分无人机状态**:当用户指令明确无人机在**空中**时,严禁使用system_checks与takeoff节点;仅当指令明确在**地面**时,才可使用这两个节点
|
||||||
7. **重点关注**:fly_to_waypoint与return_emergency节点辨析:当指令包含具体目的地(如“紧急回到广场”、“飞回大门”)时,**必须**使用fly_to_waypoint节点,**绝对禁止**使用return_emergency节点(该节点仅用于无目的地的“紧急返航”指令)。
|
7. **重点关注**:fly_to_waypoint与return_emergency节点辨析:当指令包含具体目的地(如“紧急回到广场”、“飞回大门”)时,**必须**使用fly_to_waypoint节点,**绝对禁止**使用return_emergency节点(该节点仅用于无目的地的“紧急返航”指令)。
|
||||||
8. 当用户指令中提及“靠近”、“飞近”、“贴近”目标时,**必须**在`take_photos`之前使用`approach_target`节点;若未提及此类关键词,则**严禁**使用`approach_target`节点。
|
8. 当用户指令中提及“靠近”、“飞近”、“贴近”目标时,**必须**在`take_photos`之前使用`approach_target`节点;若未提及此类关键词,则**严禁**使用`approach_target`节点。
|
||||||
9. **方向移动优先原则**:当指令仅要求“往/向/去往 + 东/西/南/北/前/后/左/右 + 飞/移动 + X米”(基于当前位置相对移动)且**未提及具体参照地点名词**(如“广场”、“大门”)时,**必须**使用`move_direction`节点,**严禁**计算坐标使用`fly_to_waypoint`。
|
9. **方向移动优先原则**:当指令为“快速去往东边100米”,直接使用 `move_direction` 节点+距离参数,严禁使用fly_to_waypoint
|
||||||
|
|
||||||
## 七、坐标计算规则(东北天坐标系 ENU)
|
## 七、坐标计算规则(东北天坐标系 ENU)
|
||||||
本系统统一使用东北天(ENU)坐标系:
|
本系统统一使用东北天(ENU)坐标系:
|
||||||
@@ -223,18 +232,6 @@
|
|||||||
- **Z轴**:正方向为**天** (Up),负方向为**地** (Down)
|
- **Z轴**:正方向为**天** (Up),负方向为**地** (Down)
|
||||||
|
|
||||||
**仅当指令涉及前往“具体地点”(如广场、大门)的偏移位置时,才需计算绝对坐标并使用`fly_to_waypoint`:**
|
**仅当指令涉及前往“具体地点”(如广场、大门)的偏移位置时,才需计算绝对坐标并使用`fly_to_waypoint`:**
|
||||||
假设参照点坐标为 $(x_0, y_0, z_0)$,偏移距离为 $d$:
|
|
||||||
- **"去广场东边 $d$ 米"**:目标坐标 $(x_0 + d, y_0, z_0)$ (使用 `fly_to_waypoint`)
|
|
||||||
- **"去广场西边 $d$ 米"**:目标坐标 $(x_0 - d, y_0, z_0)$ (使用 `fly_to_waypoint`)
|
|
||||||
- **"去广场北边 $d$ 米"**:目标坐标 $(x_0, y_0 + d, z_0)$ (使用 `fly_to_waypoint`)
|
|
||||||
- **"去广场南边 $d$ 米"**:目标坐标 $(x_0, y_0 - d, z_0)$ (使用 `fly_to_waypoint`)
|
|
||||||
- **"往上/升高 $d$ 米"**:目标坐标 $(x_0, y_0, z_0 + d)$
|
|
||||||
(注意:比如指令为“飞往东边100米”,请直接使用 `move_direction` 节点,无需计算坐标)
|
|
||||||
|
|
||||||
**示例**:
|
|
||||||
若"广场"坐标为 $(-17, 360, 3)$:
|
|
||||||
- "去广场**东边**20米" -> 目标点 $(3, 360, 3)$
|
|
||||||
- "去广场**南边**30米" -> 目标点 $(-17, 330, 3)$
|
|
||||||
|
|
||||||
## 八、输出要求
|
## 八、输出要求
|
||||||
仅输出1个严格符合上述所有规则的JSON对象。
|
仅输出1个严格符合上述所有规则的JSON对象。
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ LLAMA_SERVER_DIR="${LLAMA_SERVER_DIR:-~/llama.cpp/build/bin}"
|
|||||||
INFERENCE_MODEL_DIR="${INFERENCE_MODEL_DIR:-/home/a/models/AWQ/Qwen3-4B-Instruct-2507}"
|
INFERENCE_MODEL_DIR="${INFERENCE_MODEL_DIR:-/home/a/models/AWQ/Qwen3-4B-Instruct-2507}"
|
||||||
VLLM_CONDA_ENV="${VLLM_CONDA_ENV:-VLLM}"
|
VLLM_CONDA_ENV="${VLLM_CONDA_ENV:-VLLM}"
|
||||||
VLLM_SPECULATIVE_CONFIG="${VLLM_SPECULATIVE_CONFIG:-}"
|
VLLM_SPECULATIVE_CONFIG="${VLLM_SPECULATIVE_CONFIG:-}"
|
||||||
VLLM_GPU_MEMORY_UTILIZATION="${VLLM_GPU_MEMORY_UTILIZATION:-0.6}"
|
VLLM_GPU_MEMORY_UTILIZATION="${VLLM_GPU_MEMORY_UTILIZATION:-0.5}"
|
||||||
VLLM_SERVED_MODEL_NAME="${VLLM_SERVED_MODEL_NAME:-local-model}"
|
VLLM_SERVED_MODEL_NAME="${VLLM_SERVED_MODEL_NAME:-local-model}"
|
||||||
EMBEDDING_MODEL="${EMBEDDING_MODEL:-~/models/gguf/Qwen3/Qwen3-Embedding-4B/Qwen3-Embedding-4B-Q5_K_M.gguf}"
|
EMBEDDING_MODEL="${EMBEDDING_MODEL:-~/models/gguf/Qwen3/Qwen3-Embedding-4B/Qwen3-Embedding-4B-Q5_K_M.gguf}"
|
||||||
VENV_PATH="${VENV_PATH:-${PROJECT_ROOT}/backend_service/venv}"
|
VENV_PATH="${VENV_PATH:-${PROJECT_ROOT}/backend_service/venv}"
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
无人机当前在地面,到广场查找穿黄色衣服的男子,找到后近距离拍照。
|
无人机当前在地面,到广场查找穿黄色衣服的男子,找到后近距离拍照。
|
||||||
无人机当前在空中,回到广场,对戴帽子的人进行拍照。
|
无人机当前在空中,回到广场,对戴帽子的人进行拍照。
|
||||||
无人机当前在空中,去广场西边200米,对过往的公交车拍张照,然后返航。
|
无人机当前在空中,去广场西边200米,对过往的公交车拍张照,然后返航。
|
||||||
无人机当前在空中,到广场查找绿色公交车,看见了拍个照片。
|
无人机当前在地面,到广场查找绿色公交车,看见了拍个照片。
|
||||||
无人机当前在空中,搜索小汽车,搜索到了我确认后再决定要不要拍照。
|
无人机当前在空中,搜索小汽车,搜索到了我确认后再决定要不要拍照。
|
||||||
无人机当前在空中,往广场西边飞200米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。
|
无人机当前在空中,往广场西边飞200米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。
|
||||||
无人机当前在空中,到广场边上的施工区域内,发现有没带安全帽的飞近后拍照。
|
无人机当前在地面,到广场边上的施工区域内,发现有没带安全帽的飞近后拍照。
|
||||||
无人机当前在空中,紧急回到广场,看见了红绿灯之后直接降落。
|
无人机当前在空中,紧急回到广场,看见了红绿灯之后直接降落。
|
||||||
无人机当前在空中,快速去往东边100米,有身穿黑色衣服,头戴帽子的男子在挟持他人,对其进行拍照。
|
无人机当前在地面,快速去往东边100米,有身穿黑色衣服,头戴帽子的男子在挟持他人,对其进行拍照。
|
||||||
无人机当前在空中,离黑色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。
|
无人机当前在空中,离黑色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。
|
||||||
Reference in New Issue
Block a user