1、planning package介绍
planning模块由以下几个目录构成:
- planning_component: 包含planning组件类和planning程序的启动以及配置文件。
- planning_interface_base: 包含planning中几个重要的插件类型(scenario, task, traffic rule和planner)的父类接口文件。
- planning_base: 包含planning的基础数据结构和算法库。
- planner: 包含planning模块的几种规划器子类插件。
- pnc_map: 生成参考线基于的pnc_map类,根据输入的planning导航命令或地图等信息,生成参考线数据,作为planning局部路径规划的路线参考。
- scenarios: lanning模块支持的场景插件,每个目录下包含一个独立的场景插件包,包含scenario和stage类的定义。
- tasks: lanning模块中支持的任务插件,每个目录下包含一个独立的任务插件包,包含task类的定义。
- traffic_rules: lanning模块支持的通用交通规则插件,每个目录下包含一个独立的traffic rule插件包,traffic rules作用于所有运行的场景中。
2、模块启动
mainboard启动
mainboard -d modules/planning/planning_component/dag/planning.dag
cyber_launch 启动
cyber_launch start modules/planning/planning_component/launch/planning.launch
其实两种启动方式都是modules/planning/planning_component/dag/planning.dag这个文件
该文件主要定义配置文件路径以及readers的channal名称
有两个参数需要关注下:
depth
- 定义:
depth
参数通常位于QoS
配置中,它指的是订阅者消息队列的最大深度,即订阅者能缓存多少个尚未处理的消息。 - 作用:它控制了订阅者接收消息的缓冲区大小,确保即使在短暂的处理延迟或网络抖动情况下,也不会丢失消息。一旦队列满载,新的消息会替换掉最旧的消息。
- 位置:
depth
控制的是订阅者接收并初步存储消息的队列,即在网络层面上接收到消息后,但还未开始处理前的队列深度
pending_queue_size
- 定义:
pending_queue_size
参数指的是订阅者内部用于处理消息的队列大小,即消息已经由网络层接收并准备处理,但在处理函数调用前暂存的地方。 - 作用:它确保了即使在消息处理速度慢于接收速度的情况下,也有足够的空间存储待处理消息,避免消息的即时丢失。
- 位置:
pending_queue_size
控制的是消息从网络层传递到应用层处理之间的中间队列,是消息等待实际处理的队列
主要区别
- 层次差异:
depth
更倾向于网络层的缓存,而pending_queue_size
则是应用层处理前的临时存储。 - 目的差异:
depth
旨在防止网络延迟或处理滞后导致的消息丢失,pending_queue_size
则关注于确保处理机制不会因为处理速度跟不上接收速度而造成消息积压或丢弃。 - 影响:
depth
影响的是消息的接收和初步存储策略,pending_queue_size
则影响消息处理前的等待队列管理。
在设计和配置系统时,这两个参数需要根据系统的吞吐量、响应时间和可用资源来平衡选择,以达到最佳的性能和稳定性。