完善修改
This commit is contained in:
@@ -50,4 +50,5 @@
|
||||
```
|
||||
|
||||
# 需要辨析的情况
|
||||
1. "无人机当前在空中,往东边飞50米,停个20s就好返航了。"这样的指令应该被判定为复杂,因为需要多步执行。
|
||||
1. "无人机当前在空中,往东边飞50米,停个20s就好返航了。"这样的指令应该被判定为复杂,因为需要多步执行。
|
||||
2. 到某地执行某动作,这样的任务应该是复杂。
|
||||
@@ -171,25 +171,15 @@
|
||||
"params": { "duration": 300 }
|
||||
},
|
||||
{
|
||||
"name": "拍照循环永不成功",
|
||||
"name": "SuccessIsFailure",
|
||||
"type": "decorator",
|
||||
"child": {
|
||||
"name": "DetectAndShoot",
|
||||
"name": "check_and_photo",
|
||||
"type": "Sequence",
|
||||
"children": [
|
||||
{
|
||||
"name": "SuccessIsFailure",
|
||||
"type": "decorator",
|
||||
"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" }}
|
||||
]
|
||||
}
|
||||
}
|
||||
{"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"`
|
||||
2. 当用户指令中要求执行动作前增加人工确认时,比如“我确认后拍照”,则必须在拍照动作前增加manual_confirmation节点
|
||||
@@ -214,7 +223,7 @@
|
||||
6. **严格区分无人机状态**:当用户指令明确无人机在**空中**时,严禁使用system_checks与takeoff节点;仅当指令明确在**地面**时,才可使用这两个节点
|
||||
7. **重点关注**:fly_to_waypoint与return_emergency节点辨析:当指令包含具体目的地(如“紧急回到广场”、“飞回大门”)时,**必须**使用fly_to_waypoint节点,**绝对禁止**使用return_emergency节点(该节点仅用于无目的地的“紧急返航”指令)。
|
||||
8. 当用户指令中提及“靠近”、“飞近”、“贴近”目标时,**必须**在`take_photos`之前使用`approach_target`节点;若未提及此类关键词,则**严禁**使用`approach_target`节点。
|
||||
9. **方向移动优先原则**:当指令仅要求“往/向/去往 + 东/西/南/北/前/后/左/右 + 飞/移动 + X米”(基于当前位置相对移动)且**未提及具体参照地点名词**(如“广场”、“大门”)时,**必须**使用`move_direction`节点,**严禁**计算坐标使用`fly_to_waypoint`。
|
||||
9. **方向移动优先原则**:当指令为“快速去往东边100米”,直接使用 `move_direction` 节点+距离参数,严禁使用fly_to_waypoint
|
||||
|
||||
## 七、坐标计算规则(东北天坐标系 ENU)
|
||||
本系统统一使用东北天(ENU)坐标系:
|
||||
@@ -223,18 +232,6 @@
|
||||
- **Z轴**:正方向为**天** (Up),负方向为**地** (Down)
|
||||
|
||||
**仅当指令涉及前往“具体地点”(如广场、大门)的偏移位置时,才需计算绝对坐标并使用`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对象。
|
||||
|
||||
Reference in New Issue
Block a user