【动手学Apollo】3. 入门Apollo仿真调试(上)

科技   2024-10-21 07:30   上海  
土豆泥老师 (知乎:@土豆泥): 上海交通大学在读博士.

🏎️自动驾驶小白说官网:https://www.helloxiaobai.cn

路测工程师执行任务时会记录车辆运行数据,发现问题后会对相应路段的数据进行提取分析。如果是硬件或简单软件问题,直接排除后就可以继续路测。但如果是算法导致的未知问题,研发工程师则需要在仿真环境中重现场景,调试成功后更新车辆代码,再次路测。因此,仿真测试对于自动驾驶至关重要

在前面的概述中,我们介绍了Apollo的车+云一体研发工具链。在Apollo云平台中,可以为自动驾驶提供模型训练、车辆标定、地图制作、仿真评测等工具。其中,Apollo云实验室就是进行仿真测试的入口,一键即可启动,其链接如下:Apollo开发者社区_Apollo云实验平台 (baidu.com)

云实验室已经安装好了Apollo运行所需要的环境,并提供了Dreamview、源码编辑器等工具快速打开的接口。另外,云实验室上线了丰富的实验课程,每个课程配备了详尽的实验手册,提供给开发者学习。但由于维护云实验室的资源有限,目前也只能通过课程入口进入云实验室,并有一定的时间限制。

接下来,我们就通过几个具体的实验案例,来学习如何用云实验室进行自动驾驶仿真。

一、分析Apollo的离线数据包

实验内容

使用DreamView播放并分析自动驾驶的离线数据包


实验目的

掌握DreamView启动,基本操作及Record模式下播放数据包方式

掌握PnC Monitor、Cyber Monitor、日志等工具使用方法


实验配置

《快速上手,五步入门自动驾驶》实验项目


1. 启动DreamView

DreamView是Apollo提供的Web端可视化交互界面,它不仅能够可视化显示当前车辆各模块的输出信息,还为使用者提供了人机交互接口。同时它还提供了PnC monitor等调试工具,可以高效跟踪模块输出的问题。

不过,DreamView的大部分功能主要为了实际上车时使用。在云实验室中,对其功能进行了裁剪,仅保留了数据播放以及与仿真相关的功能。

在终端中执行以下指令启动DreamView:

aem bootstrap start --plus

当出现如下界面时,即表明DreamView启动成功了。

如果对英文界面不熟悉,可以在个人中心中,点击设置->通用设置->切换语言类型。

2. 播放数据包

实验的第二步是播放自动驾驶离线数据包。点击左侧菜单栏,选择PnC模式;操作栏中,选择Record。

在环境资源数据包中,选择demo_3.5,如果没有数据包,可以前往资源中心中下载。选择完毕后,选择播放按钮,就可以看到离线数据包demo_3.5已经被正常播放了。

那么,我们该如何去分析数据包呢?这就到了实验的第三步。

3. PnC Monitor

在DreamView的右侧图框,可以看到PnC的数据曲线图。PnC Monitor是DreamView中内置的数据监视器,它能够将规划、控制相关的数据信息,以图表的形式展示。在曲线图中,我们可以清晰的看到车辆在行驶过程中的轨迹、速度,加速度等数据的变化,便于在自动驾驶过程中的数据分析与问题定位。

例如,在规划中可以看到系统规划的速度,在控制中可以看到车辆实际的速度,如果这两个速度存在较大的差异,那表示算法模块可能存在一定的问题。

4. Cyber Monitor

除了PnC Monitor以外,Apollo还提供了Channel的信息列表工具。Channel是用于管理Cyber RT中的数据通信,Cyber Monitor可以展示出所有channel的信息。

回到终端界面,输入Cyber Monitor,就可以看到完整的channel信息列表了。红色的代表当前的channel没有数据通信,绿色代表当前的Channel有数据通信。键盘的左右键可以实现Channel的进入和退出。

点击左键,进入该channel的详情页面。例如,选择pose,可以看到pose下包含了当前车辆的位置、速度、加速度、角速度等信息,如果当前页面信息展示不全,可以使用fn+上下键查看其余信息。键盘的ESC键可以完全退出Cyber Monitor。

如果我们发现sensor status的状态存在跳变,那表示该传感器或者软件系统可能存在一定的问题,需要做进一步的检查。这就是一个最简单的数据调试与分析的案例了。

5. 日志

最后,我们来介绍一下系统日志的查看方法。系统日志记录了系统模块运行的详细信息,通过以下指令可以进入Apollo日志所保存的目录:

cd /opt/apollo/neo/data/log

通过cd指令进入该目录,可以看到系统中记录了当前我们正在运行的Cyber monitor, DreamView中的操作。当某个模块出现异常的时候,就可以通过查看对应的log记录来查找原因。

输出log日志可以采用代码

Cat dreamview.log.INFO.20220902-151224.12391

二、定速巡航仿真调试

在第一个实验中,我们使用了DreamView PnC模块中Record操作播放了数据包。但是Record并不能根据我们的需要进行仿真,为此我们介绍一个新的操作——Sim Control

Sim Control是Apollo较早提供的一个仿真组件,它通过模拟底盘、定位、感知、障碍物等信息的输入,实现对自动驾驶算法模块的仿真调试。同时,Sim Control的仿真功能也是由底层算法支撑的。在本实验中,我们还会介绍如何修改代码来改变Sim Control中的仿真结果。

实验内容

通过Sim Control仿真实现自动巡航任务,并修改代码使得自动驾驶汽车在行驶中默认巡航速度为7km/h。


实验目的

掌握Sim Control仿真组件以及调试方法


实验配置

《定速巡航仿真场景调试》实验项目


1. 启动DreamView

与实验1中的第一步相同,不再赘述

2. 进入Sim Control仿真

在DreamView的左边栏,点击模式设置面板,选择PnC模式。操作选项中,选择Sim Control模式。Sim Control启动成功后,在可视化窗口就可以看到仿真车辆了,如果出现异常可以尝试刷新页面,或重启DreamView。

接下来开启planning模块,在高精地图中选择Sunnyvale Big Loop

https://picx.zhimg.com/80/v2-ef4294af8f070eabb7ae5aea4e3d9238_1440w.png?source=d16d100b

3. 设置路由

在车辆可视化面板的左上角点开路由编辑的面板

如果要指定起点,先点击Initial Point(起始点),点击地图上的位置然后转动鼠标,可以指定车辆的起点和方向。

点击Way Point(途经点),点击鼠标可以在地图设置车辆行驶路径(最后一个为终点),如下图所示,设置了起点-途经点-终点三个点位。当点位设置完毕后,点击右上角的Save Editing,返回主页。

4. 查看运行效果

点击底部栏运行效果,可以看到车辆在仿真环境中运动起来了。红色线路所示为routing搜索到最优路径,蓝色表示planning实时规划的行驶路径,此时观测可知,车辆的巡航速度最高可以达到40km/h.

但我们的实验目标是要求车辆巡航速度为7km/h,如何实现车辆巡航速度的修改呢?实验的第二部分就是通过修改代码,改变车辆在行驶中的巡航速度。

巡航速度的相关配置均在planning.conf文件夹下。其中,参数planning_upper_speed_limit表示规划的上限速度,参数default_cruise_speed表示默认的巡航速度。在Apollo系统,配置参数均被保存在根目录下。

5. 输入参数同步指令

打开一个新的终端,输入配置参数同步指令,系统将自动将planning模块的配置参数复制到profile的default目录中。

buildtool profile config init --package planning --profile=default

之后再输入生效指令,使default目录为参数生效目录

aem profile use default

6. 修改代码

打开云实验平台的在线编辑器。

点击File->Open Folder,选择/Apollo_Workspace,打开Config/planning.conf文件。值得注意的是,Apollo代码中有关速度的单位是m/s。这里修改巡航速度为2,可以接近实验目标中的7km/h。修改完成后,点击保存,回到DreamView。

7. 重启planning模块再次运行

因为planning的参数已经被修改了,因此重启planning模块,重新选择行驶路径,点击底部栏运行,可以看到车辆的巡航速度最高为7km/h了。

小结

至此,我们已经了解了一些基本的工具和仿真流程。但如何搭建一个我们自己需要的仿真场景,并在该场景下验证算法呢?在下一章,我们将围绕这个问题展开介绍。

推荐阅读:

自动驾驶小白说
输出专业自动驾驶算法教程的开发者社区. 🦈 官网: https://www.helloxiaobai.cn
 最新文章