提交 5dfaaf8d 编写于 作者: M macDure 提交者: Qi Luo

docs: DKIT: update the vehicle calibration online guide

上级 51a3d5da
......@@ -7,6 +7,9 @@
- [修改配置文件](#修改配置文件)
- [标定数据采集](#标定数据采集)
- [准备](#准备)
- [1、选择模式,选择车型](#1选择模式选择车型)
- [2、启动标定所需要的软件模块](#2启动标定所需要的软件模块)
- [3、进入采集界面](#3进入采集界面)
- [开始采集](#开始采集)
- [标定任务提交](#标定任务提交)
- [文件夹结构要求](#文件夹结构要求)
......@@ -25,13 +28,12 @@
-`DreamView`数据采集监视器内采集标定数据;
- 数据本地预处理;
- 标定数据上传至BOS云盘,提交标定任务;
- 生成用于性能评估的可视化标定结果。
`DreamView`中,提供了一个踏板标定数据采集的监视器,用于监视采集标定数据的过程。通过配置文件设定标定条件(case),每个数据帧代表一种标定条件,每次采集数据时,每符合标定条件一次,则进度条增加一点,直至进度条增加满为止。
![vehicle_calibration_online_mainboard1](images/vehicle_calibration_online_mainboard1.png)
## 前提条件
......@@ -43,6 +45,7 @@
- [开通云服务账号](../../Apollo_Fuel/apply_fuel_account_cn.md)
## 主要步骤
- 修改标定配置文件
......@@ -53,6 +56,7 @@
- 可视化结果分析
## 修改配置文件
在开始标定前,需要根据实际车辆的最大速度、速度、油门、刹车踏板的限制,进行用于车辆踏板标定的数据采集配置,来适配车辆的标定,满足标定数据能够尽可能多的覆盖车辆踏板的有效范围。我们设置了开发套件的默认车辆标定数据采集配置文件,在文件`apollo/modules/calibration/data/dev_kit/dreamview_conf/data_collection_table.pb.txt`内,开发者在了解了标定文件构成后,如有需要可以自行修改需要的数据采集配置文件,通常情况下使用默认标定配置可以覆盖小车大部分踏板控制范围,**建议开发者不需要单独修改此配置文件,使用默认标定配置即可**。默认标定配置文件内主要设计了小车的标定条件如下:
......@@ -77,6 +81,7 @@
上述的`Throttle deadzone`表示车辆油门踏板的不产生加速度的无效区段,一般设在车辆刚能起步的附近,**开发套件给出的默认值是5%,开发者可以根据实际车辆的情况修改此参数**`Brake deadzone`表示车辆刹车踏板的不产生减速度的无效区段,一般设在较低的踏板开度时,**开发套件给出的默认值是3%,开发者可以根据实际车辆的情况修改此参数**。此参数设置在`apollo/modules/calition/data/dev_kit/vehicle_param.pb.txt`文件内`throttle_deadzone``brake_deadzone`,在标定开始前,就要先把改参数确定好,后面进行数据训练时上传的配置文件,也需要对应使用该参数。
根据如上标定条件,即可匹配出车辆的所有标定条件,共8种条件,分别为:
- 低速小油门
- 低速大油门
- 高速小油门
......@@ -86,7 +91,7 @@
- 高速缓刹车
- 高速急刹车
确认好上述标定条件后,通常情况下使用默认标定配置可以覆盖小车大部分踏板控制范围,如果需要修改配置文件,则需要将`apollo/modules/calibration/data/dev_kit/dreamview_conf/data_collection_table.pb.txt``Go Straight`部分配置进行修改,其它部分配置代码无需修改,无需删除,通过启动dreamview后重新选择车辆后配置生效,具体修改代码如下:
确认好上述标定条件后,通常情况下使用默认标定配置可以覆盖小车大部分踏板控制范围,如果需要修改配置文件,则需要将`apollo/modules/calibration/data/dev_kit/dreamview_conf/data_collection_table.pb.txt``Go Straight`部分配置进行修改,其它部分配置代码无需修改,无需删除,通过启动`DreamView`后重新选择车辆后配置生效,具体修改代码如下:
frame_threshold: 20 // 帧有效阈值,连续满足标定条件的帧数大于等于该阈值时才会被记录
total_frames: 4000 // 设置每一个标定case数据帧总量,当前设置为4000帧,可根据实际情况调整,数据量越大采集标定数据时间越长
......@@ -191,6 +196,7 @@
}
}
## 标定数据采集
### 准备
......@@ -202,70 +208,86 @@
```
在浏览器打开`DreamView`,进行下述步骤:
1、在`--setup mode--`内,选择`vehicle calibration`(车辆标定)选项,在`--vehicle--`选择`Dev_Kit`
##### 1、选择模式,选择车型
`--setup mode--`内,选择`vehicle calibration`(车辆标定)选项,在`--vehicle--`根据使用车型,选择对应车型,如`Dev_Kit`等;
![vehicle_calibration_select_vehicle](images/vehicle_calibration_select_vehicle.png)
2、在`Others`按钮区,选择`Data Collection Monitor`(数据采集监视器),选择`Go Straight`按钮。
如下图所示,为标定数据才采集面板。
##### 2、启动标定所需要的软件模块
![vehicle_calibration_online_dreamview1](images/vehicle_calibration_online_dreamview1.jpg)
在进行标定前,需要采集包含车辆底盘、定位信息的数据作为输入,可以通过`DreamView`界面上的模块开关启动相关模块软件,在`DreamView`界面左侧边栏选择`Module Controller`标签,然后在主界面启动`Canbus``GPS``Localization`模块,如下图所示:
![vehicle_calibration_launch_modules](images/vehicle_calibratio_launch_modules.png)
通过左侧`Components`查看`Canbus``GPS``Localization Pose`状态,直到信号都达到`OK`才能够进行下一步。
![vehicle_calibration_check_components.png](images/vehicle_calibration_check_components.png)
##### 3、进入采集界面
在确认上一步已经启动的软件模块状态`OK`后,点击`DreamView`界面左侧边栏`TASK`标签,在`Others`区域,打开`Fuel Client`开关启动云服务采集界面,然后在界面右上侧选择`Go Straight`标签,查看
如下图所示,为标定数据采集面板。
![vehicle_calibration_fuel_cleint](images/vehicle_calibration_fuel_cleint.png)
### 开始采集
准备所需channel:
**车辆标定数据采集开始前,一定要检查标定需要的channel数据是否正常,否则会造成采集的标定数据缺少信息而造成后续生成标定表失败**。需要采集包含车辆底盘、定位信息的数据作为输入,所需要的channel如下表所示:
`DreamView`界面点击左侧边栏,选择`Module Controller`,这时点击`Recorder`开关,开始录制标定数据,这时Apollo系统就开始录制记录车辆标定数据了。
| 模块 | channel名称 | 检查项目 |
|---|---|---|
| Canbus | `/apollo/canbus/chassis` | 确保能正常输出数据 |
| GPS | `/apollo/sensor/gnss/best_pose` | 确保能正常输出数据,`sol_type:` 选项显示为`NARROW_INT` |
| Localization | `/apollo/localization/pose` | 确保能正常输出数据 |
(如果在打开Recorder开关之前,右侧的数据采集器的进度条已经有一些增加,没有关系,因为在打开`Recorder`开关后会清除进度条的采集量,重新开始记录)
为获取上述channel,在命令提示行内启动`canbus`模块、`GPS`模块、`localization`模块:
```
bash scripts/canbus.sh
bash scripts/gps.sh
bash scripts/localization.sh
```
**通过cyber_monitor检查上述channel数据是否反馈正常**
<**记录数据时请注意**>:建议在第一次打开`Recorder`开关后,一次性把所有的标定case数据全部采集完之后再关闭`Recorder`开关,通常一次标定采集数据所用时间为20-40分钟,根据熟练程度、场地大小等决定。
`DreamView`界面点击左侧边栏,选择`Module Controller`,可以看到`Canbus`开关已经打开,这时开始点击`Recorder`开关,**(请务必切记先打开<Recorder>开关,再进行标定数据采集操作,实际情况常常会因未打开<Recorder>开关造成数据未记录保存,影响效率)**,这时Apollo系统就开始录制记录车辆标定数据了。
**(请务必切记先打开`Recorder`开关,再进行标定数据采集操作,实际情况常常会因未打开`Recorder`开关造成数据未记录保存,影响效率)**
![vehicle_calibration_online_dreamview2](images/vehicle_calibration_online_dreamview2.jpg)
![vehicle_calibration_launch_recorder.png](images/vehicle_calibration_launch_recorder.png)
这时,我们使用遥控器遥控车辆,根据右侧数据采集监视器,采集相应标定条件的车辆数据,直到采集监视器内各标定条件进度条(**蓝色**)全部集满后,点击关闭`Recorder`开关,关闭数据记录,结束车辆标定数据采集
这时,我们使用遥控器遥控车辆,根据`Dreamview`右侧数据采集监视器,采集相应标定条件的车辆数据,每符合标定条件一次,则进度条增加一点,直至进度条增加满为止
![vehicle_calibration_online_mainboard2](images/vehicle_calibration_online_mainboard2.png)
![vehicle_calibration_collect_data](images/vehicle_calibration_collect_data.png)
所有采集的标定数据都保存在`apollo/data/bag/`目录下,找到以`年-月-日-时-分-秒`命名的文件夹,根据时间找到属于车辆标定采集的数据。我们可以分批采集数据,即每一次可以采集一部分数据,这样数据会记录在不同的`年-月-日-时-分-秒`文件夹,(**注意**:默认情况下,数据采集后会在`apollo/data/bag/`文件夹下生成2个`年月日时分秒相似`的文件夹,分别以`年-月-日-时-分-秒``年-月-日-时-分-秒_s`命名,开发者可以不用理会`_s`后缀的文件夹,只需要使用`年-月-日-时-分-秒`文件夹内录制的标定数据即可)也可以一次全部采集,这样所有的数据都记录在同一个文件夹内,通常完成上述标定条件的车辆标定数据采集需要20分钟左右
待监视器内各标定条件进度条(**蓝色**)全部采集完成后,点击关闭`Recorder`开关,关闭数据记录,结束车辆标定数据采集
## 标定任务提交
**这里需要注意,原则上进度条全部采集完对标定结果的生成是最佳的;但开发者也可以根据实际情况采集进度条,实际根据场地大小限制,速度限制等,比如有些case很容易采集满,有些很难,对于很不好采集到的数据可以采集到60-80%的状态也可以。**
![vehicle_calibration_collect_data_complete](images/vehicle_calibration_collect_data_complete.png)
### 文件夹结构要求
## 标定任务提交
#### 1. 上传预处理后的数据至BOS
在上传数据之前,请注意以下几点:
1)请将标定数据按照如下文件夹结构进行放置
1)标定数据预处理
![vehicle_calibration_online_structure](images/vehicle_calibration_online_structure_2.png)
采集完车辆的标定数据,关闭`Recorder`后,如图所示,点击右下角`「Preprocess」`按钮,进行标定数据预处理。
2)`Origin Folder`确保是**BOS的根目录**,确保`task001`目录是在BOS根目录下创建的(根目录:登录BOS存储服务器后首先看到的目录即为根目录,一般是`Bucket name`目录);
![vehicle_calibration_preprocess_data.png](images/vehicle_calibration_preprocess_data.png)
3)`task001、task002...`代表一次车辆标定任务文件夹,即每次标定任务提交时,会训练一个`task文件夹`内的车辆数据;`task文件夹`上一层(`Origin Folder`)可以是BOS根目录或其他目录;
2)查看预处理结果
3) `Vehicle1、Vehicle2...`代表标定的车辆文件夹,可以根据实际情况,按照车辆名称+编号的形式命名,如`ch01``ch02`等。一个task文件夹下内可以包含多个Vehicle车辆文件夹,在一次任务提交中标定多个车辆;
点击`「Preprocess」`按钮后,首先对标定数据进行数据完整检查(sanity check),如果数据完整检查不通过,在进度条下方会有不通过的错误提示(通常情况下,只要按照文档上述步骤一步步做,完整性检查就不会有错)。
4)`Records`文件内导入采集的车辆标定数据,车辆的录制数据在`apollo/data/bag/`目录下;
预处理按钮只需要点一次,不需要多次点击。
**需要注意:**`Records`文件夹下需要有2层子文件夹,第一层为大时间(年-月-日),如上图`2019-04-19`,第二层文件夹是具体的record文件夹(年-月-日-时-分等),如上图`2019-04-19-12-45-01`等,提醒大家一定要注意`Records`文件夹下的文件夹结构还要有2层,不然后续会影响标定找不到文件数据,文件夹结构如上图所示;
![vehicle_calibration_preprocess_data_complete](images/vehicle_calibration_preprocess_data_complete.png)
5) `Configuration File`即为`vehicle_param.pb.txt`(车辆配置文件),该文件在`apollo/modules/calition/data/dev_kit`文件夹内,将该文件夹下的`vehicle_param.pb.txt`拷贝至BOS对应的车辆标定文件夹下,如上图`Vehicle2`文件夹内;
6)总结上述文件夹结构:
3)生成结果如下目录
BOS根目录 -> Task Folder ->Vehicle Folder -> Records + vehicle_param.pb.txt
结束数据完整检查后,会提示将生成的预处理数据存入到`apollo/output/task-*******`,文件夹以当时处理的时间为命名,所以开发者在`apollo/output`目录下查找时间最近的task文件夹即可。
如下图所示,拷贝预处理完成后的文件夹`task-2021-01-04-18-12`,用于标定使用。
![vehicle_calibration_preprocess_data_folder](images/vehicle_calibration_preprocess_data_folder.png)
4)把生成的结果上传至BOS
[BOS](../../Apollo_Fuel/apply_bos_account_cn.md)的初始目录,上传上一步选择的文件夹`task-2021-01-04-18-12`
![vehicle_calibration_upload_bos](images/vehicle_calibration_upload_bos.png)
#### 2. 提交标定任务
......@@ -317,14 +339,14 @@
- 油门踏板标定结果
![vehicle_calibration_online_throttle](images/vehicle_calibration_online_throttle.png)
![vehicle_calibration_online_throttle_result](images/vehicle_calibration_online_throttle_result.png)
- 刹车踏板标定结果
![vehicle_calibration_online_brake](images/vehicle_calibration_online_brake.png)
![vehicle_calibration_online_brake_result](images/vehicle_calibration_online_brake_result.png)
## NEXT
车辆云标定能够提供精度较高的车辆踏板标定表,对于自动驾驶的控制精度有显著提升。当然,使用`D-KIT`文件夹内默认的标定表数据,也可以进行循迹等自动驾驶控制
车辆云标定能够提供精度较高的车辆踏板标定表,对于自动驾驶的控制精度有显著提升。当然,目前车辆的出厂一致性较好,在对控制精度要求不高的前提下,`D-KIT`配置表内默认的标定数据,也可以进行正常循迹等闭环自动驾驶演示
现在,您已经完成车辆动力学标定,接下来可以开始[车辆循迹演示](start_waypoint_following_cn.md)
......@@ -334,13 +356,43 @@
![vehicle_calibration_online_error1](images/vehicle_calibration_online_error1.png)
排查方法:
1. 查看`文件夹结构`是否正确;
2. 查看是否在车辆文件夹内添加车辆配置文件(`vehicle_param.pb.txt`
3. 查看录制数据包内是否存在`gps/localization`数据:
1.查看`文件夹结构`是否正确,一般数据预处理时,会自动生成文件夹目录,如果文件夹目录存在错误,可以手动参考如下图目录自行修改:
所有采集的标定数据都保存在`apollo/data/bag/`目录下,找到以`年-月-日-时-分-秒`命名的文件夹,根据时间找到属于车辆标定采集的数据。我们可以分批采集数据,即每一次可以采集一部分数据,这样数据会记录在不同的`年-月-日-时-分-秒`文件夹,(**注意**:默认情况下,数据采集后会在`apollo/data/bag/`文件夹下生成2个`年月日时分秒相似`的文件夹,分别以`年-月-日-时-分-秒``年-月-日-时-分-秒_s`命名,开发者可以不用理会`_s`后缀的文件夹,只需要使用`年-月-日-时-分-秒`文件夹内录制的标定数据即可)也可以一次全部采集,这样所有的数据都记录在同一个文件夹内,通常完成上述标定条件的车辆标定数据采集需要20分钟左右。
1)正确的文件夹结构如下图所示:
![vehicle_calibration_online_structure](images/vehicle_calibration_online_structure.png)
2)`Origin Folder`确保是**BOS的根目录**,确保`task001`目录是在BOS根目录下创建的(根目录:登录BOS存储服务器后首先看到的目录即为根目录,一般是`Bucket name`目录);
3)`task001、task002...`代表一次车辆标定任务文件夹,即每次标定任务提交时,会训练一个`task文件夹`内的车辆数据;`task文件夹`上一层(`Origin Folder`)可以是BOS根目录或其他目录;
3) `Vehicle1、Vehicle2...`代表标定的车辆文件夹,可以根据实际情况,按照车辆名称+编号的形式命名,如`ch01``ch02`等。一个task文件夹下内可以包含多个Vehicle车辆文件夹,在一次任务提交中标定多个车辆;
4)`Records`文件内导入采集的车辆标定数据,车辆的录制数据在`apollo/data/bag/`目录下;
**需要注意:**`Records`文件夹下需要有2层子文件夹,第一层为大时间(年-月-日),如上图`2019-04-19`,第二层文件夹是具体的record文件夹(年-月-日-时-分等),如上图`2019-04-19-12-45-01`等,提醒大家一定要注意`Records`文件夹下的文件夹结构还要有2层,不然后续会影响标定找不到文件数据,文件夹结构如上图所示;
5) `Configuration File`即为`vehicle_param.pb.txt`(车辆配置文件),该文件在`apollo/modules/calition/data/dev_kit`文件夹内,将该文件夹下的`vehicle_param.pb.txt`拷贝至BOS对应的车辆标定文件夹下,如上图`Vehicle2`文件夹内;
6)总结上述文件夹结构:
BOS根目录 -> Task Folder ->Vehicle Folder -> Records + vehicle_param.pb.txt
2.查看是否在车辆文件夹内添加车辆配置文件(`vehicle_param.pb.txt`
3.查看录制数据包内是否存在标定需要的channel数据:
- 通过`cyber_recorder info xxxxxx.record.xxxxx`
检查采集数据内是否存在下面3个`channel`的数据:
- `/apollo/canbus/chassis`
- `/apollo/sensor/gnss/best_pose`
- `/apollo/localization/pose`
- 下图为正确的数据包示意
![vehicle_calibration_online_record_check](images/vehicle_calibration_online_record_check.png)
如果发现缺少了上述channel的某一项,请排查相关模块。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册