Planning 模块的输出数据类型定义在 ,如下图所示。
planning.proto
在 proto 数据的定义中,输出数据包括总时间、总长度和确切的路径信息,输出数据由 Control 模块解析执行,输出数据结构定义在 。
类继承自 类,并新增了 speed 、acceleration 和 timing 属性。 定义在 中的 包含了路径的详细属性。
除了路径信息,Planning 模块输出了多种注释信息。主要的注释数据包括:
● Estop
● DecisionResult
● Debug Information
是标示了错误和异常的指令。例如,当自动驾驶的车辆碰到了障碍物或者无法遵守交通规则时将发送 信号。 主要用于展示模拟的输出结果以方便开发者更好地了解 Planning 模块的计算结果。更多详细的中间值结果会被保存并输出作为 供后续的调试使用。
为了计算最终的输出路径,Planning 模块需要统一地规划多个输入数据。Planning 模块的输入数据包括:
● Routing
● Perception and Prediction
● Vehicle Chassis and Localization
● HD-Map
Routing 定义了概念性问题“我想去哪儿”,消息定义在 文件中。 包含了 ,指明了车辆到达目的地应该遵循的路线。
关于概念性问题“我周围有什么”的消息定义在 和 中。 定义了表示车辆周围障碍物的数据,车辆周围障碍物的数据由 Perception 模块提供。 定义了信号灯状态的数据。除了已被感知的障碍物外,动态障碍物的路径预测对 Planning 模块也是非常重要的数据,因此 封装了 消息来表示预测路径。请参考下述图片。
每个预测的路径都有其单独的可能性,而且每个动态障碍物可能有多个预测路径。
除了概念性问题“我想去哪儿”和“我周围有什么”,另外一个重要的概念性问题是“我在哪”。关于该问题的数据通过 HD-Map 和 Localization 模块获得。Localization 信息和 Vehicle Chassis 信息被封装在 消息中,该消息定义在 ,参考下述图片。
代码组织方式如下图所示。Planning 模块的入口是 。在 Planning 模块内部,重要的类在下图中展示。
对 类进行了封装,为 Planning 模块提供了平滑的指令执行序列。 Frame 包含了所有的数据依赖关系,例如包含了预测路径信息的障碍物、自动驾驶车辆的状态等。 HD-Map 在 Planning 模块内作为封装了多个数据的库来使用,提供不同特点的地图数据查询需求。 EM Planner 执行具体的 Planning 任务,继承自 Planner 类。Apollo 2.0 中的 EM Planner 类和之前发布的 RTK Planner 类都继承自 Planner 类。
例如,在 EM Planner 执行的一次 Planning 循环的内部,采用迭代执行的方法,Tasks 的三个类别交替执行。“ Decider/Optimizer ”类的关系在下述图片中展示。
● Deciders 包括 Traffic Decider 、Path Decider 和 Speed Decider。
● Path Optimizer 为 DP/QP Path Optimizer 。
● Speed Optimizer 为 DP/QP Speed Optimizer 。
附注:
DP 表示动态规划(Dynamic Programming),QP 表示二次规划(Quadratic Programming)。经过计算步骤后,最终的路径数据(Spatio-temporal Trajectory)经过离散化处理后传递到下一个节点模块 (Control 模块)进行路径的执行。
到此这篇Apollo配置中心页面长什么样(apollo配置中心架构)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/kjbd-jg/19374.html