通过yaml文件保存参数

如果用户采用yaml格式保存系统中涉及的配置参数,需要准备以下yaml文件:

param.yaml配置示例

该文件用于保存系统的配置参数,格式遵循通用的yaml文件规范,即key:value键值对格式,key和value值均可修改,配置示例如下:

1
2
3
4
5
param1:
  a: 12
  b: true
  c: "node"
param2: 234

配置管理模块在解析yaml文件时,需通过CfgMgr::Get接口获取参数值。原理是根据设定的key值(冒号前的内容为key值)获取相应value值。解析示例如下,其中namespace定义请参见yaml_path.yaml配置示例)。

1
2
3
4
/namespace/param1/a: 12
/namespace/param1/b: true
/namespace/param1/c: "node"
/namespace/param2: 234

如果yaml文件中保存的参数是数组形式,则需通过短横杠“-”来区分每一组参数,配置示例如下:

1
2
3
4
5
6
7
module:
  -
    key1: aaa
    key2: bbb
  -
    key1: ccc
    key2: ddd

配置管理模块在解析yaml文件时,key值需要添加下划线及序号(从上往下,数组序号从0开始),解析示例如下:

1
2
3
4
/namespace/module_0/key1: aaa
/namespace/module_0/key2: bbb
/namespace/module_1/key1: ccc
/namespace/module_1/key2: ddd

yaml_path.yaml配置示例

该文件用于指定参数文件param.yaml的存放路径和相关属性信息,配置示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
yaml_path:
  - path: /etc/param.yaml
    namespace: /demo
    group: global
    version: 1.0

  - path: /etc/cfg/robot_sensor_config/${robot_type}/${robot_id}/pnc_configs/parking_params.yaml
    namespace: /pnc
    group: global
    version: 1.0

  - path: ${parameters_path}/robot_sensor_config/${robot_type}/${robot_id}/pnc_configs
    namespace: /pnc
    group: global
    version: 1.0 

均为固定参数名,不可修改,具体含义如下:

cfgmgr_env.yaml配置示例

该文件用于配置yaml_path.yaml的存放路径和相关变量,配置示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
cfgmgr_env:                          # 固定字段,不可修改
  yaml_path:                         # 固定字段,不可修改
    - /etc/yaml/pnc_yaml_path.yaml
    - /etc/yaml/fusion_yaml_path.yaml  

  # 以下是变量的配置举例,可按需进行增、删、改操作
  robot_factory: xxxxx
  robot_type: vw_magotan_1.1
  robot_sensor: xxx
  robot_id: LFV3A23C5J3010804
  scenario: map

cfgmgr_env名称域下面的参数,支持用户修改,修改后需通过CfgMgr::Reload接口重新加载yaml文件。

关键参数解释如下: