aem profile功能使用
Apollo配置参数生成&使用
配置参数同步方式
配置文件的管理和同步通过以下命令进行:
buildtool profile config init --package <包名> --profile=目录
#例,将planning包的全部配置文件同步到名为default的profile目录下(profiles/default/)buildtool profile config init --package planning --profile=default
【注意】:
- 自己添加的planning插件,无法通过该命令将配置文件同步至profiles目录下
- 配置参数不生效解决问题,请详见1.3
如需对planning其他插件进行参数调整,相关包名请查阅相关planning综述文档:https://apollo.chjunkong.com/docs/apollo/latest/md_collection_2planning_2readme__cn.html
配置参数生效方式
使用default目录的配置参数
aem profile use default
使用指令:ll profiles ,查看current的指向
├── current -> default# 指向当前启用的配置目录,默认指向名为default的目录
【重点】:如果本地如果下载了源码,可能会被影响,如若发现修改配置参数不生效,需要在重新使用【aem profile use default】指令
以笔者为例,注意本操作均为在容器中执行:
输入指令,检测profile的软链指向
ll profiles/current
输入指令,检测Apollo的配置文件软链是否指向current
本例子以planning_component为例
ll /apollo/modules/planning/planning_component/conf/
查看源码
ll modules/planning/planning_component/
配置参数不生效问题
本教程以planning_component为例,讲解配置参数不生效问题的修复方式
输入指令,检测profile的软链指向
ll profiles/current
输入指令,检测Apollo的配置文件软链是否指向current
本例子以planning_component为例
ll /apollo/modules/planning/planning_component/conf/
如若不是,请重新使用指令:
aem profile use default
多份配置参数切换
参数设置目录设置
进入docker工作空间,在/apollo_workspace路径下将modules/planning的配置参数复制到
profile的default目录或者其他自己所创建的目录
例如:
profiles/├── current -> demo_1 #软链├── default├── demo_1└── demo_2
在这个例子中,我们可以看到我当前使用的配置是"demo_1"这份配置文件。在profiles目录下,每个小伙伴都可以定义一到多份配置参数。这样的好处在于
- 场景适配性:通过根据不同的场景设置不同的配置参数,我们可以轻松地适应各种应用场景。不同的任务、环境或需求可能需要不同的配置,这样的灵活性能够提高系统的适应性和性能表现。
- 参数保存和复用:在调参过程中,我们可以将认为比较好的参数保存在一个文件夹中。这样,我们不仅能够方便地复用之前优化过的参数,还能够在之后的调参过程中避免遗忘或丢失重要的设置,提高了工作效率。
- 快速回滚:通过保存各个版本的配置文件,如果在后续调整参数时发现新的配置不如之前的好,我们可以轻松地将代码切换回之前保存的较为完美的配置文件。这样能够迅速回滚到之前的状态,避免不必要的错误或性能下降。
切换配置指令:
# 查看已有的profileaem profile list# 使用名字叫default的这份配置aem profile use default
在demo_1的目录结构中,我们可以看到在modules/planning/planning_base/conf目录下有多个配置文件。
demo_1/└── modules└── planning└── planning_base└── conf├── discrete_points_smoother_config.pb.txt├── planner_open_space_config.pb.txt├── planning.conf├── planning_config_navi.pb.txt├── planning_config.pb.txt├── planning_navi.conf├── planning_semantic_map_config.pb.txt├── qp_spline_smoother_config.pb.txt├── spiral_smoother_config.pb.txt└── traffic_rule_config.pb.txt
假设我们只需要调整其中的一个或多个配置文件,而不希望保留其他文件。那么我们可以只保留需要调整的配置文件,其他的配置参数会自动读取模块下的配置参数。
demo_1/└── modules└── planning└── planning_base└── conf├── planning.conf├── ……
这样的做法十分便捷,不需要手动处理所有配置文件,只需关注需要修改的部分,系统会智能地处理其余配置,确保我们能够快速调整参数并保持系统正常运行。这样的配置管理方式有效地提高了工作效率和代码的可维护性,让调参过程更加简洁和灵活。