Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

这篇具有很好参考价值的文章主要介绍了Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Apollo星火计划课程链接如下
星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2
星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12

1. Apollo决策技术详解

1.1 Planing模块运行机制

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
星火计划学习笔记——第七讲自动驾驶规划技术原理1

1.2 Apollo决策功能的设计与实现

●目的
○ 保障无人车的行车安全并且遵守交规
○ 为路径和速度的平滑优化提供限制信息
● 决策的输入
○ Routing信息
○ 道路结构,比如当前车道,相邻车道,汇入车道,路口等信息
○ 交通信号和标示,比如红绿灯,人行横道,Stop Sign,Keep Clear等
○ 障碍物状态信息,比如障碍物类型,大小,和速度
○ 障碍物预测信息,比如障碍物未来可能的运动轨迹
● 决策的输出
○ 路径的长度以及左右边界限制
○ 速度限制边界
○ 位置限制边界
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

Apollo 决策的5个步骤

1.2.1参考路径 Reference Line

● 没有障碍物情况下的默认行车路径
○ 参考路径需要保证连续和平滑 当前参考路径
参考路径也用于表达换道的需求
○ 目标参考路径(优先级高)
○ 当前参考路径(目标参考路径)
参考路径的一种实现方法
○ 根据Routing找到对应道路中心线
○ 对道路中心线进行平滑

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

路径边界

1.2.2 交规决策 Traffic rule process

主要作用:
处理红绿灯,Stop Sign, 人行横道等交通规则
输入信息:
○ 参考路径
○ 高精地图
○ 信号灯状态
输出:
○ 虚拟墙
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

判断是否需要生成停止墙。

1.2.3 路径决策 Path decider

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
    首先判断是否要进行换道操作。若有许多条参考路径,且车辆未处于最高优先级上,表明车辆有换道的需求。接着判断当前道路状况是否可以换道,若可以换道,则路径决策生成一个换道边界,若不可以换道,则会生成一个道内的边界。若车辆没有换道的需求,则需要判断车辆是否需要借道避让。借道避让有两个判断条件,主车所在的车道是否有足够的宽度可以避让以及前方是否有静止的障碍物。若确认可以换道,同样会生成两个决策。
    ps:在路径决策时,一般只考虑静态障碍物,对于动态障碍物,则由速度规划模块考虑。
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

1.2.4 速度决策 Speed decider

对车辆速度限制的因素:
● 道路限速
● 路径周边行人,自行车等
● 通过人行横道时
● 减速带
● 路径上过近的车辆,较为拥挤的道路
● 借道避让时
● 换道时
● 更多…
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

速度决策的流程

    在车辆行驶过程中,需要对车辆的速度进行许多限制。在得到路径边界之后,通过路径规划器,得到平滑的路径曲线,之后再对曲线进行路径决策。
    速度决策的流程:对当前路径产生一个或多个速度边界,再将其集成一个速度边界的集合,生成一个ST图。用ST图得到时间上的位置边界。利用速度边界和位置边界可以进行速度决策,从而生成轨迹。

1.2.5 Planing模块运行流程

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

1.2.6 场景 Scenarios

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
依据场景来做决策和规划有以下两个优点,
1)场景之间互不干扰,有利于并行开发和独立调参。
2)功能之间相互解耦,有利于开发者开发自己的特有场景。

2. 交规决策场景实现机制

2.1 交规的配置

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

    Apollo对 交 通 规 则 的 处 理 是 通 过for循 环 来 遍 历 配 置 文 件/apollo/modules/planning/conf/traffic_rule_config.pb.txt中设置的交通规则,处理后相关信息存入ReferenceLineInfo中。Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

2.2 交规决策的运行流程

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

依托输入信息来判断选择哪个场景

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
交通规则的运行流程

2.2.1 Traffic Light场景的进入

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

Traffic Light场景的进入这部分主要有两个部分:第一个部分通过Overlap重叠判断是否进入交叉路口,第二个部分通过由高精地图提供的车道信息以及交通信号等情况进入不同的场景,选择是有保护的场景还是无保护的场景。

2.2.2 Traffic Light场景的stage

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

2.2.3 APPROACH阶段

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

2.2.4 CRUISE阶段

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

CRUISE阶段主要用以判断,当CRUISE阶段结束时,就会恢复到lanefollow阶段

2.2.5 交通灯通过检测

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

2.2.6 停止墙生成

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

3. 交通灯场景仿真实现

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

3.1 云实验

云实验地址——Apollo规划之交通灯场景仿真调试

3.1.1 创建场景

系统场景: Go Straight (Intersection w/ Lights)
场景ID:Sunnyvale_3
场景描述:主车在路口红灯时直行
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

3.1.2 启动dreamview

    Dreamview 是Apollo提供的可视化交互界面,开发者可通过Dreamview对车辆硬件、各自动驾驶模块的状态进行实时监测与操作。同时提供PnC monitor、Console 等调试工具可以快速帮助开发者实现对自动驾驶开发的过程调试。
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

bash scripts/apollo_neo.sh bootstrap

3.1.3 场景同步

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

3.1.4 选择需要调试场景

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

3.1.5 实验流程

按照Apollo规划之交通灯场景仿真调试实验的步骤进行即可。

3.2 WSL2下Apollo-EDU-pre运行

启动docker:

sudo service docker start

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

启动 Apollo docker环境:

bash scripts/edu_launcher.sh start

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)输入以下命令进入 Apollo:

bash scripts/edu_launcher.sh enter

启动DreamView(如果启动失败,可以尝试更改网络,用手机热点替代)

bash scripts/apollo_neo.sh bootstrap

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
打开Sim Control 和 PnC Monitor
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
选择场景
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
选好模块
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
未更改配置时启动后停止距离为1m
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
注意运行时Scenario History中的信息
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
打开Vscode

Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

code .

建立停止决策的代码

traffic_light.cc
    // build stop decision
    ADEBUG << "BuildStopDecision: traffic_light["
           << traffic_light_overlap.object_id << "] start_s["
           << traffic_light_overlap.start_s << "]";
    std::string virtual_obstacle_id =
        TRAFFIC_LIGHT_VO_ID_PREFIX + traffic_light_overlap.object_id;
    const std::vector<std::string> wait_for_obstacles;
    util::BuildStopDecision(virtual_obstacle_id, traffic_light_overlap.start_s,
                            config_.traffic_light().stop_distance(),
                            StopReasonCode::STOP_REASON_SIGNAL,
                            wait_for_obstacles,
                            TrafficRuleConfig::RuleId_Name(config_.rule_id()),
                            frame, reference_line_info);
  }
}

停止距离的配置文件
Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)
停止距离更改为2.1m

config: {
  rule_id: TRAFFIC_LIGHT
  enabled: true
  traffic_light {
    stop_distance: 2.1
    max_stop_deceleration: 4.0
  }
}

这个是人行道的修改配置文章来源地址https://www.toymoban.com/news/detail-472126.html

config: {
  rule_id: CROSSWALK
  enabled: true
  crosswalk {
    stop_distance: 2.1
    max_stop_deceleration: 6.0
    min_pass_s_distance: 1.0
    max_valid_stop_distance: 3.5
    expand_s_distance: 2.0
    stop_strict_l_distance: 6.0
    stop_loose_l_distance: 8.0
    stop_timeout: 4.0
  }
}

到了这里,关于Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI大模型】“讯飞星火”认知大模型正式发布 计划10月底赶超ChatGPT

    ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入:全栈弄潮儿的个人社区 📙 专栏地址:AI大模型 5月6日,讯飞星火认知大模型成果发布会在安徽合肥举行。科大讯飞董事长刘庆峰、研究院院长刘聪发布讯飞星火认知大模型,现场

    2024年02月04日
    浏览(44)
  • Apollo决策规划算法学习Chapter3 速度规划算法

    第一章 Apollo决策规划算法基本概念 第二章 Apollo决策规划之路径规划算法 第三章 Apollo决策规划之速度规划算法 本文为第三章,主要讲解 Apollo决策规划算法中的速度规划算法,EM planner的速度规划算法同样是是通过动态规划和二次规划实现的,下面来细讲速度规划算法。 1)回

    2024年02月11日
    浏览(60)
  • 无人驾驶 自动驾驶汽车 环境感知 精准定位 决策与规划 控制与执行 高精地图与车联网V2X 深度神经网络学习 深度强化学习 Apollo

    百度apollo课程 1-5 百度apollo课程 6-8 七月在线 无人驾驶系列知识入门到提高 当今,自动驾驶技术已经成为整个汽车产业的最新发展方向。应用自动驾驶技术可以全面提升汽车驾驶的安全性、舒适性,满足更高层次的市场需求等。自动驾驶技术得益于人工智能技术的应用及推广

    2024年04月27日
    浏览(46)
  • Apollo规划决策算法仿真调试(5):动态障碍物绕行

    Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。Apollo 自动驾驶开放平台为开发者提供了丰富的车辆、硬件选择,强大的环境感知、高精定位、路径规划、车辆控制等

    2024年02月09日
    浏览(82)
  • 【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER

    1.【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER 2.【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER 3.【Apollo学习笔记】——规划模块TASK之PATH_BORROW_DECIDER 4.【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER 5.【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月11日
    浏览(43)
  • 【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER

    1.【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER 2.【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER 3.【Apollo学习笔记】——规划模块TASK之PATH_BORROW_DECIDER 4.【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER 5.【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月12日
    浏览(37)
  • 【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER

    1.【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER 2.【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER 3.【Apollo学习笔记】——规划模块TASK之PATH_BORROW_DECIDER 4.【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER 5.【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月11日
    浏览(47)
  • 【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMIZER

    1.【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER 2.【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER 3.【Apollo学习笔记】——规划模块TASK之PATH_BORROW_DECIDER 4.【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER 5.【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月10日
    浏览(55)
  • 【Apollo学习笔记】——规划模块TASK之RULE_BASED_STOP_DECIDER

    1.【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER 2.【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER 3.【Apollo学习笔记】——规划模块TASK之PATH_BORROW_DECIDER 4.【Apollo学习笔记】——规划模块TASK之PATH_BOUNDS_DECIDER 5.【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_PATH_OPTIMI

    2024年02月10日
    浏览(43)
  • 动态规划——决策单调性优化DP 学习笔记

    对于最优性问题,常有状态转移方程: (f_i = min/max{f_jdots}) , 形象的:如果 (i) 的最优转移点是 (j) , (i\\\') 的最优转移点是 (j\\\') ,当 (ii\\\') 时,有 (jle j\\\') ,则称该 DP 问题具有决策单调性。 即: (i) 单增,其最优转移点单调不减。 如何发现一个转移方程具有决策

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包