🏎️自动驾驶小白说官网: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
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了。
小结
至此,我们已经了解了一些基本的工具和仿真流程。但如何搭建一个我们自己需要的仿真场景,并在该场景下验证算法呢?在下一章,我们将围绕这个问题展开介绍。