apollo_logo
13
0

pnc开发模式说明

综述

在Apollo 9.0中,我们对规划模块进行了全面重构,引入了全新的插件扩展机制和分级参数配置机制,旨在提高系统的灵活性和开发效率。

为了保证各位开发者快速入门Apollo planning的开发模式,可先学习相关课程

【PnC基础(9.0版)】https://apollo.baidu.com/community/online-course/776

planning模块综述:

全新插件扩展机制:我们将场景(scenario)、任务(task)和交通规则(traffic rules)进行插件化处理,使开发者能够更方便地开发和部署自己的插件。通过简化的配置流程,开发者可以轻松启动和运行这些插件。

分级参数配置机制:此机制明确区分了全局参数和局部参数。局部参数被嵌入到各自的插件中,实现独立管理,这极大地方便了开发者在进行参数查询和修改时的操作。

目录结构

在Apollo 9.0中,我们设定了精心组织的工作目录结构以支持各种操作和开发需求,详细的目录结构如下:工作目录(容器内显示/apollo_workspace)

这个目录下包含了三个核心的子目录:

application-core
├── .aem
│ └── envroot
│ ├── apollo # 会挂载到容器内的 /apollo 目录,【注】/apollo为配置文件生效目录
│ └── opt # 会挂载到容器内的 /opt/ 目录,而 Apollo 的软件包会默认安装到 /opt/ 下,因此该目录可以起到缓存的作用
├── modules # 存放需要修改源码目录
└── profiles # 新版配置目录
│ ├── current -> default # 当前启用的配置目录。修改完成后会在/apollo下生效
│ └── default # 名为 default 的配置目录
  1. .aem目录:存放所有模块的源码。需要注意的是,此目录下的源码不支持修改,主要用于参考和系统运行。
  2. modules目录:此目录用于存放可以修改的部分模块源码。开发者可以使用特定的命令从Apollo的软件库同步需要修改的源码到工作目录的modules目录,具体命令如下:。
buildtool install <包名>
  1. profiles目录:这是一个新版配置参数目录,用于存放和管理配置参数。此目录结构如下:配置参数可以根据需要进行修改,修改后的配置将在/apollo目录下生效。
├── current -> default# 指向当前启用的配置目录,默认指向名为default的目录
├── 其他
└── default# 默认配置目录,存放初始配置参数

全新插件扩展机制

在Apollo 9.0 中,planning base 为规划模块基座,负责接受和发布和其他模块的通信信息,生成参考线,提供基础数据结构和基础库的功能。双层状态机的第一层为 Scenario 插件,每个Scenario插件通常会包含其独有的Stage插件,每个 Stage 插件会从任务库中编排不同的任务(Task)来执行。

再此过程中,所有的场景(scenario)、任务(task)和交通规则(traffic rules)均被定义为插件,用户均可以使用自己所定制的插件以满足使用要求再或者通过修改Apollo planning 中自带的插件进行二次开发以满足要求;

一、自己定义场景(scenario)、任务(task)和交通规则(traffic rules)插件,以满足使用要求

具体可以查看技术文档&视频:

插件

文章名

文章链接

视频链接

buildtool create指令使用方式

交通规则(traffic rules)

交汇路口减速慢行场景(traffic rules插件)

任务(task)

交汇路口减速慢行场景(task插件)

场景(scenario)

左转待转场景


二、修改Apollo planning 中自带的插件进行二次开发以满足要求

使用指令

buildtool install <包名>

例如:修改交通规则(traffic rules)的crosswalk插件

使用指令将(traffic rules)的crosswalk插件同步至工作目录下的modules目录

buildtool install planning-traffic-rules-crosswalk

如需二次开发planning其他插件,相关包名请查阅相关planning综述文档:https://apollo.baidu.com/docs/apollo/latest/md_collection_2planning_2README__cn.html

分级参数配置机制

配置参数调整的具体措施:

  1. 参数被划分为全局变量和局部变量。全局变量用于多个算法或插件之间共享;局部变量则专属于特定的算法或插件。若需调整某个插件的参数,用户可直接在该插件的目录下进行查找和修改。
  2. 我们添加了一份涵盖常用功能参数的说明文档,以便用户在调试时能快速查找所需信息。

此外,我们引入了一个名为“profile”的配置参数插件,用户可以在此插件内放置配置参数。所有配置文件均存放于“profiles”目录下,用户可以在此目录中定义一份或多份配置文件,并可通过aem工具进行查看和管理。

配置参数同步方式

配置文件的管理和同步通过以下命令进行:

buildtool profile config init --package <包名> --profile=目录
#例,将planning的全局配置参数同步至default目录
buildtool profile config init --package planning --profile=default

使用default目录的配置参数

aem profile use default

使用指令:ll profiles ,查看current的指向

├── current -> default# 指向当前启用的配置目录,默认指向名为default的目录

其他目录配置参数

aem profile use 其他

使用指令:ll profiles ,查看current的指向

├── current -> 其他# 指向当前启用的配置目录,默认指向名为其他的目录

如需对planning其他插件进行参数调整,相关包名请查阅相关planning综述文档:https://apollo.baidu.com/docs/apollo/latest/md_collection_2planning_2README__cn.html

原创声明,本文由作者授权发布于Apollo开发者社区,未经许可,不得转载。
发表评论已发表 0 条评论
登录后可评论,请前往 登录
暂无评论~快去发表自己的独特见解吧!
目录
综述
目录结构
全新插件扩展机制
一、自己定义场景(scenario)、任务(task)和交通规则(traffic rules)插件,以满足使用要求
二、修改Apollo planning 中自带的插件进行二次开发以满足要求
分级参数配置机制
配置参数调整的具体措施: