Python如何实现自动驾驶车辆每次抵达新路点时自动切换行驶行为
自动驾驶路点切换行驶行为解决方案
问题根因
现有代码的嵌套if逻辑存在结构性错误,永远无法触发模式切换:外层agent.done()触发后,你立刻创建了aggressive模式的新agent并设置了新目的地,此时新agent的done()状态必然为未完成,内层if判断永远为假,所以每次都会固定生成aggressive模式的agent。
最优实现方案
通过维护一个外部状态标记来循环切换行驶模式,后续新增模式也无需修改核心逻辑,可扩展性极强:
- 首先在主循环外部初始化行为配置:
# 可自定义添加更多行驶模式,直接追加到列表即可 behavior_list = ['aggressive', 'cautious'] # 记录当前使用的模式索引 current_behavior_idx = 0
- 将原有嵌套if逻辑替换为如下代码:
if agent.done(): # 计算下一个模式的索引,超出列表长度自动回到首个元素循环 current_behavior_idx = (current_behavior_idx + 1) % len(behavior_list) selected_behavior = behavior_list[current_behavior_idx] # 生成对应模式的智能体 agent = BehaviorAgent(world.player, behavior=selected_behavior) agent.set_destination(random.choice(spawn_points).location) world.hud.notification("已抵达目标,正在寻找下一个目标", seconds=4.0) print(f"已抵达目标,切换为{selected_behavior}行驶模式,正在寻找下一个目标")
内容的提问来源于stack exchange,提问作者idonutt
相关产品推荐
相关产品推荐

