优化提示词

This commit is contained in:
2025-09-21 22:12:21 +08:00
parent fd89745950
commit afd170c451
4 changed files with 37 additions and 2 deletions

View File

@@ -0,0 +1,35 @@
好的我现在需要处理用户的任务指令生成一个符合要求的行为树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结构确保每个节点正确参数符合约束。

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

After

Width:  |  Height:  |  Size: 272 KiB

View File

@@ -746,7 +746,7 @@ class PyTreeGenerator:
# 保存推理链(若有) # 保存推理链(若有)
try: try:
if reasoning_text: if reasoning_text:
reasoning_path = os.path.join(self.reasoning_dir, f"{plan_id}.md") reasoning_path = os.path.join(self.reasoning_dir, "reasoning_content.md")
with open(reasoning_path, 'w', encoding='utf-8') as rf: with open(reasoning_path, 'w', encoding='utf-8') as rf:
rf.write(reasoning_text) rf.write(reasoning_text)
logging.info(f"📝 推理链已保存: {reasoning_path}") logging.info(f"📝 推理链已保存: {reasoning_path}")
@@ -817,7 +817,7 @@ class PyTreeGenerator:
# 保存推理链(若有) # 保存推理链(若有)
try: try:
if reasoning_text: if reasoning_text:
reasoning_path = os.path.join(self.reasoning_dir, f"{plan_id}.md") reasoning_path = os.path.join(self.reasoning_dir, "reasoning_content.md")
with open(reasoning_path, 'w', encoding='utf-8') as rf: with open(reasoning_path, 'w', encoding='utf-8') as rf:
rf.write(reasoning_text) rf.write(reasoning_text)
logging.info(f"📝 推理链已保存: {reasoning_path}") logging.info(f"📝 推理链已保存: {reasoning_path}")