增加输出数量约束

This commit is contained in:
2025-09-21 22:33:54 +08:00
parent afd170c451
commit d32520d83f
6 changed files with 87 additions and 267 deletions

View File

@@ -1,230 +0,0 @@
好的我现在需要处理用户的任务指令生成一个符合要求的行为树JSON。首先我得仔细阅读用户的指令和参考知识确保理解所有要求。
用户的要求是:无人机起飞后,先移动至学生宿舍,搜索并锁定任一红色的球,在对其环绕三十两圈后进行打击操作。参考知识中提到学生宿舍的坐标是(x:5, y:3, z:2)。不过,这里有个问题,用户提到的“红色的球”可能不在学生宿舍区域,但根据参考知识,学生宿舍的坐标是(5,3,2)而其他地点如跷跷板和A地的坐标不同。不过用户可能希望无人机先飞到学生宿舍然后在附近搜索球。
首先我需要确保所有坐标符合物理约束。学生宿舍的坐标是x=5y=3z=2这在允许的范围内。接下来无人机需要起飞然后飞往学生宿舍。这里可能需要使用fly_to_waypoint动作将坐标设置为学生宿舍的坐标。
接下来是搜索红色球。用户提到“搜索并锁定任一红色的球”这里可能需要使用search_pattern或者object_detect。不过用户可能希望先飞到学生宿舍区域然后进行搜索。根据参考知识学生宿舍的坐标是(5,3,2)所以可能需要先飞到那里然后进行搜索。不过用户可能希望在学生宿舍附近搜索所以可能需要使用search_pattern或者先悬停再检测。
不过用户提到“搜索并锁定”可能需要先使用search_pattern来搜索或者直接使用object_detect。但object_detect需要无人机在目标附近悬停而search_pattern是移动搜索。根据任务描述可能先飞到学生宿舍然后进行搜索所以可能需要使用search_pattern或者先飞到学生宿舍然后使用object_detect。
不过用户可能希望先飞到学生宿舍然后在该区域搜索红色球。所以可能需要先fly_to_waypoint到学生宿舍然后使用search_pattern或者object_detect。但根据参考知识学生宿舍的坐标是(5,3,2)而红色球可能在附近所以可能需要使用search_pattern或者直接使用object_detect但需要确认位置。
不过用户可能希望先飞到学生宿舍然后在该区域进行搜索。因此可能需要先fly_to_waypoint到学生宿舍然后使用search_pattern来搜索红色球。或者如果红色球的位置已知可能直接使用object_detect。但根据用户指令可能需要先搜索所以使用search_pattern更合适。
接下来找到红色球后需要环绕三十两圈。这里的“三十两圈”可能是笔误应该是“三十圈”或者“三圈”但用户写的是“三十两圈”可能是指半径30米绕两圈或者可能是“三十圈”需要根据中文习惯判断。通常“三十两圈”可能是指半径30米绕两圈或者可能是“三十圈”这里可能需要进一步确认但根据用户给出的参考知识可能需要将半径设为30米绕两圈。或者用户可能想表达的是“三十圈”但中文中“三十两圈”不太常见可能是“三十圈”或“三圈”。不过根据用户给出的参考知识中的“环绕三十两圈”可能是指半径30米绕两圈。因此在orbit_around_target中设置radius=30laps=2。
然后进行打击操作使用strike_target动作。
同时必须包含安全监控使用Parallel节点包含电池和GPS监控以及紧急处理流程。
现在,构建行为树的结构:
根节点是Parallel包含主任务和安全监控。主任务是一个Sequence包含起飞、飞往学生宿舍、搜索球、环绕、打击、降落。安全监控是Selector包含电池、GPS条件以及紧急处理Sequence。
在飞往学生宿舍时使用fly_to_waypoint参数x=5y=3z=2。然后进行搜索使用search_pattern可能以学生宿舍为中心半径适当比如50米搜索红色球。或者可能需要先悬停使用object_detect。但用户可能希望先搜索所以使用search_pattern参数center_x=5center_y=3radius=50target_class=balldescription=红色球。不过,用户提到的是红色球,可能需要调整参数。
接下来环绕目标使用orbit_around_target参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后锁定球的位置然后环绕。但根据用户指令可能需要先飞到学生宿舍然后搜索球所以search_pattern的中心是学生宿舍的坐标半径50米搜索红色球。然后环绕该球使用orbit_around_targetradius=30laps=2。然后进行打击。
现在,检查所有参数是否符合约束:
fly_to_waypoint的坐标是学生宿舍的(5,3,2)z=2符合约束。
search_pattern的参数pattern_type=spiralcenter_x=5center_y=3center_z=2学生宿舍的坐标radius=50target_class=balldescription=红色球。这符合约束。
然后环绕该球使用orbit_around_target参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后球的位置被确认所以使用orbit_around_target中心是搜索到的球的位置。但根据用户指令可能需要在搜索后锁定球的位置然后环绕。因此在search_pattern后可能需要使用object_detect来确认球的位置但用户可能希望直接环绕。
不过用户可能希望在搜索后锁定球的位置然后环绕。因此在search_pattern后可能需要使用object_detect来确认球的位置但根据任务描述可能需要直接环绕。
因此在search_pattern后可能需要使用orbit_around_target参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后球的位置被确认所以使用orbit_around_target中心是球的位置。
但根据用户指令可能需要先飞到学生宿舍然后在该区域搜索球所以search_pattern的中心是学生宿舍的坐标半径50米搜索红色球。然后环绕该球使用orbit_around_target参数center_x=5假设球在学生宿舍附近radius=30laps=2。
然后进行打击操作。
现在,构建行为树的结构:
根节点是Parallel包含主任务Sequence和安全监控Selector。
主任务Sequence的步骤
1. preflight_checks检查级别为comprehensive。
2. takeoffaltitude=2.0。
3. fly_to_waypoint到学生宿舍的坐标(5,3,2)acceptance_radius=2.0。
4. search_patternpattern_type=spiralcenter_x=5center_y=3center_z=2radius=50target_class=balldescription=红色球。
5. orbit_around_target参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后球的位置被确认所以使用orbit_around_target中心是球的位置。但根据用户指令可能需要在搜索后锁定球的位置然后环绕。因此在search_pattern后可能需要使用object_detect来确认球的位置但用户可能希望直接环绕。
因此在search_pattern后可能需要使用orbit_around_target参数center_x=5假设球在学生宿舍附近radius=30laps=2。
然后进行strike_target操作。
最后landmode=home。
同时安全监控Selector包含电池条件threshold=0.35和GPS条件min_satellites=8以及紧急处理Sequence。
现在,检查所有参数是否符合约束:
- fly_to_waypoint的坐标是学生宿舍的(5,3,2)z=2符合约束。
- search_pattern的参数center_x=5center_y=3center_z=2radius=50符合约束。
- orbit_around_target的参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后球的位置被确认所以使用orbit_around_target中心是球的位置。但根据用户指令可能需要在搜索后锁定球的位置然后环绕。因此在search_pattern后可能需要使用object_detect来确认球的位置但用户可能希望直接环绕。
因此在search_pattern后可能需要使用orbit_around_target参数center_x=5假设球在学生宿舍附近radius=30laps=2。
然后进行strike_target操作。
现在构建JSON
根节点是Parallel包含主任务Sequence和安全监控Selector。
主任务Sequence的步骤
1. preflight_checks参数check_level=comprehensive。
2. takeoff参数altitude=2.0。
3. fly_to_waypoint到学生宿舍的坐标(5,3,2)acceptance_radius=2.0。
4. search_pattern参数pattern_type=spiralcenter_x=5center_y=3center_z=2radius=50target_class=balldescription=红色球。
5. orbit_around_target参数center_x=5假设球在学生宿舍附近但需要确认。或者可能在搜索后球的位置被确认所以使用orbit_around_target中心是球的位置。但根据用户指令可能需要在搜索后锁定球的位置然后环绕。因此在search_pattern后可能需要使用object_detect来确认球的位置但用户可能希望直接环绕。
因此在search_pattern后可能需要使用orbit_around_target参数center_x=5假设球在学生宿舍附近radius=30laps=2。
然后进行strike_target操作。
最后landmode=home。
同时安全监控Selector包含电池条件threshold=0.35和GPS条件min_satellites=8以及紧急处理Sequence。
现在,检查所有参数是否符合约束:
- orbit_around_target的参数center_x=5但需要确认球的位置是否在学生宿舍附近。根据用户指令可能需要在搜索后锁定球的位置所以使用orbit_around_target中心是球的位置。但根据参考知识学生宿舍的坐标是(5,3,2)而红色球可能在附近所以使用orbit_around_target参数center_x=5学生宿舍的坐标radius=30laps=2。
这样,参数符合约束。
现在构建JSON
{
"root": {
"type": "Parallel",
"name": "CompleteStrikeMission",
"params": {
"policy": "all_success"
},
"children": [
{
"type": "Sequence",
"name": "MainStrikeSequence",
"children": [
{
"type": "action",
"name": "preflight_checks",
"params": {
"check_level": "comprehensive"
}
},
{
"type": "action",
"name": "takeoff",
"params": {
"altitude": 2.0
}
},
{
"type": "action",
"name": "fly_to_waypoint",
"params": {
"x": 5.0,
"y": 3.0,
"z": 2.0,
"acceptance_radius": 2.0
}
},
{
"type": "action",
"name": "search_pattern",
"params": {
"pattern_type": "spiral",
"center_x": 5.0,
"center_y": 3.0,
"center_z": 2.0,
"radius": 50.0,
"target_class": "ball",
"description": "红色球",
"count": 1
}
},
{
"type": "action",
"name": "orbit_around_target",
"params": {
"center_x": 5.0,
"center_y": 3.0,
"center_z": 2.0,
"radius": 30.0,
"laps": 2,
"clockwise": true,
"gimbal_lock": true
}
},
{
"type": "action",
"name": "strike_target",
"params": {
"target_class": "ball",
"description": "红色球",
"count": 1
}
},
{
"type": "action",
"name": "land",
"params": {
"mode": "home"
}
}
]
},
{
"type": "Selector",
"name": "SafetyMonitor",
"params": {
"memory": true
},
"children": [
{
"type": "condition",
"name": "battery_above",
"params": {
"threshold": 0.35
}
},
{
"type": "condition",
"name": "gps_status",
"params": {
"min_satellites": 8
}
},
{
"type": "Sequence",
"name": "EmergencyHandler",
"children": [
{
"type": "action",
"name": "emergency_return",
"params": {
"reason": "safety_breach"
}
}
,
{
"type": "action",
"name": "land",
"params": {
"mode": "home"
}
}
]
}
]
}
]
}
}

View File

@@ -1,35 +0,0 @@
好的我现在需要处理用户的任务指令生成一个符合要求的行为树JSON。首先我得仔细阅读用户的指令和参考知识确保理解所有要求。
用户的目标是搜索并锁定危险性最高的气球(红色>蓝色>绿色然后跟踪30秒后进行打击。参考知识中提到了三个地点但用户可能希望搜索的区域是这些地点附近或者需要根据这些坐标来规划路径。
首先,我需要确定无人机的起降点。参考知识中的地点坐标可能作为搜索区域的中心。比如,用户提到的“学生宿舍”坐标是(5,3,2),但可能需要选择一个合适的中心点进行搜索。不过用户没有明确指定搜索区域,可能需要根据常识判断,比如选择一个开阔区域,或者使用提供的坐标中的某个作为中心。
接下来,任务流程应该是:起飞→飞往搜索区域→搜索目标→检测到目标后跟踪→打击。同时必须包含安全监控。
根据参考知识中的坐标,可能需要将搜索区域设置为某个中心点。比如,用户提到的“跷跷板”在(x:15, y:-8.5, z:1.2)但z坐标可能需要调整到最低1米所以可能设置为z=2。或者选择其他地点作为搜索中心。不过用户没有明确说明可能需要假设搜索区域是这些地点附近或者需要覆盖多个区域。但根据任务描述可能需要在某个特定区域搜索比如“学生宿舍”附近或者使用提供的坐标中的某个作为中心。
假设用户希望搜索的区域是“学生宿舍”附近,那么飞往该区域的坐标是(5,3,2)。但需要确保z≥1所以没问题。或者可能需要更广泛的搜索比如使用search_pattern的模式以某个中心点为中心半径覆盖周围区域。
接下来构建行为树的结构。根节点必须是Parallel包含主任务和安全监控。主任务是一个Sequence包含起飞、飞往搜索点、搜索、跟踪、打击、降落。安全监控部分包括电池和GPS检查以及紧急处理。
在搜索阶段用户需要检测红色气球危险最高所以使用object_detect参数target_class为balloondescription为“红色>蓝色>绿色”count为1。如果未检测到可能需要使用search_pattern比如以某个中心点为中心半径适当模式为spiral或grid。但根据用户指令可能需要先尝试直接检测否则搜索。
然后一旦检测到目标进行跟踪使用track_object参数target_class为balloondescription同上track_time为30秒。之后打击使用strike_target最后评估战损。
需要确保所有参数符合约束比如坐标在±10000米内z≥1电池阈值正确等。例如起飞高度为2米飞往搜索点的坐标可能需要调整到合理范围比如使用学生宿舍的坐标(5,3,2),或者可能需要更远的点,但根据参考知识中的坐标,可能选择其中一个作为中心。
另外安全监控部分需要包含电池监控threshold 0.3和GPS状态以及紧急处理流程。同时主任务的Sequence必须以land结束。
现在将这些步骤转化为JSON结构确保每个节点正确参数符合要求。例如fly_to_waypoint的坐标可能需要调整到参考知识中的某个点比如学生宿舍的坐标或者可能需要更广泛的区域。但用户没有明确说明可能需要假设搜索区域是某个特定点或者使用search_pattern覆盖周围区域。
可能需要使用search_pattern来覆盖更大的区域比如以学生宿舍为中心半径50米模式为spiral寻找balloon。或者先飞往某个点然后进行检测或搜索。
综合考虑可能的步骤是起飞→飞往学生宿舍附近→进行object_detect如果未检测到则执行search_pattern。但根据用户指令可能需要直接检测否则搜索。因此在Selector中先尝试直接检测否则搜索。
因此在MainStrikeSequence中fly_to_waypoint的坐标可能设置为学生宿舍的坐标(5,3,2)调整z为2。然后进行object_detect参数target_class为balloondescription为“红色>蓝色>绿色”count为1。如果检测到进入跟踪和打击。否则执行search_pattern以该中心点为中心半径适当模式为spiral寻找balloon。
接下来构建JSON。主任务Sequence包括preflight_checkstakeofffly_to_waypoint坐标可能为学生宿舍的(5,3,2)然后Selector用于目标获取包含直接检测和search_pattern。检测到后track_object然后strike_target最后land。
安全监控部分包括电池阈值0.3GPS检查以及紧急处理。
现在将这些步骤转化为JSON结构确保每个节点正确参数符合约束。

View File

@@ -0,0 +1,43 @@
好的我现在需要处理用户的任务指令生成一个符合要求的行为树JSON。首先我得仔细阅读用户的指令和参考知识确保理解所有要求。
用户的目标是搜索并锁定危险性最高的气球(红色>蓝色>绿色然后跟踪30秒后进行打击。参考知识中提到了三个地点但用户可能希望搜索的区域是这些地点附近或者需要根据这些坐标来规划路径。
首先,我需要确定无人机的起降点。参考知识中的地点坐标可能作为搜索区域的中心。比如,用户提到的“学生宿舍”坐标是(5,3,2)但可能需要选择一个合适的中心点进行搜索。不过用户没有明确指定搜索区域可能需要使用search_pattern来覆盖这些区域或者直接在某个中心点周围搜索。
接下来,任务流程应该是:起飞→飞往搜索区域→搜索目标→检测到目标后跟踪→打击。同时必须包含安全监控。
根据用户提供的参考知识,可能需要将搜索区域设置为某个中心点。比如,用户提到的“跷跷板”在(x:15, y:-8.5, z:1.2)但z坐标需要调整到至少1米这里已经是1.2,没问题。或者可能选择其他地点作为搜索中心。但用户没有明确说明,可能需要假设搜索区域是这些地点附近,或者使用一个综合的中心点。
不过用户可能希望无人机先飞往某个特定的搜索区。比如参考知识中的“学生宿舍”可能是一个可能的区域但需要确认。或者用户可能希望无人机在某个中心点周围进行搜索。例如使用search_pattern的中心点可能选在某个已知地点比如“跷跷板”附近或者综合多个点。
但用户没有明确指定搜索区域所以可能需要使用search_pattern的中心点为某个已知地点比如“跷跷板”的坐标或者选择一个合理的中心点。例如假设搜索区域是“跷跷板”所在的位置那么中心坐标为(15, -8.5, 1.2)。或者可能需要将搜索区域设置为多个地点的组合,但用户没有说明,所以可能需要选择一个中心点。
接下来考虑使用search_pattern来搜索因为目标位置未知。参数中需要指定pattern_type比如spiral或grid。假设选择spiral模式覆盖更大的区域。中心点可能选在某个已知地点比如“跷跷板”的坐标或者综合多个点。但用户没有明确所以可能需要选择一个合理的中心点比如“跷跷板”的坐标。
然后检测到目标后需要跟踪30秒再打击。所以流程是起飞→飞往搜索区→搜索→检测→跟踪→打击→降落。
安全监控必须包含在Parallel节点中监控电池和GPS并在紧急情况下返航。
现在,构建行为树的结构:
根节点是Parallel包含主任务和安全监控。主任务是Sequence包含起飞、飞往搜索区、搜索、检测、跟踪、打击、降落。安全监控是Selector包含电池和GPS条件以及紧急处理Sequence。
在搜索部分使用search_pattern参数包括pattern_type为spiral中心点选在某个已知地点比如“跷跷板”的坐标(15, -8.5, 1.2)半径可能设为50米覆盖较大区域。目标类别是balloon描述为“红色气球危险性高于蓝色气球高于绿色气球”但参数中description需要描述目标属性比如“红>蓝>绿”。
检测到目标后使用track_object参数target_class为balloondescription为“红>蓝>绿”track_time为30秒。然后strike_target最后评估战损。
需要确保所有参数符合约束比如z坐标在1-5000米之间半径在5-1000米之间速度等参数在合理范围。
现在将各个步骤的参数填入JSON中。例如起飞到2米飞往搜索区的中心点可能选在“跷跷板”的坐标(15, -8.5, 1.2)但z需要调整到至少1米这里已经是1.2。所以fly_to_waypoint的参数x=15y=-8.5z=1.2接受半径2米。
搜索使用search_patternpattern_type为spiral中心点为(15, -8.5, 1.2)半径设为50米覆盖区域。目标类别是balloondescription为“红>蓝>绿”。
检测到目标后使用track_object参数target_class为balloondescription为“红>蓝>绿”track_time为30秒min_confidence设为0.7safe_distance设为15米。
然后strike_target参数target_class为balloondescription为“红>蓝>绿”count为1。
最后,降落。
安全监控部分电池阈值设为0.35GPS的min_satellites设为8紧急处理Sequence包括emergency_return和land。
现在将所有步骤的参数填入JSON中确保符合所有规则。