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

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

承接上文

单从学术来讲,仿真在自动驾驶的规控方向还是有着举足轻重的地位。因为路测环境复杂,而且条件不太容易重复,一般都是通过CARLA这类模拟器和ROS、Matlab,python等环境联合仿真作为论文验证。

Apollo 9.0通过一些桥接器也能够与CARLA联合仿真,而且由于Apollo内置的大量算法和基础软件工具,通过Apollo进行规控方面的算法研究和验证感觉还是具有优势的。

不过,千里之行,始于足下,还是要打好基础才行。

言归正传,在上一个定速巡航的实验中采用Sim_Control进行仿真,只能选择固定的高精地图,无法根据我们自己的要求来设置障碍物,那么如何为仿真场景添加障碍物呢?在这一章中,将进一步介绍场景编辑与同步方法,以及PnC的Scenario_Sim仿真模式。

三、编辑并同步仿真场景

实验内容

使用Apollo Studio编辑借道绕行仿真场景,创建仿真场景集,并同步到DreamView+中


实验目的

掌握Apollo Studio场景编辑器的使用

掌握场景集创建和同步方法


实验配置

Apollo Studio工作台->仿真评测


有两种方法创建并同步仿真场景。第一种是使用系统场景进行调试;第二种是使用编辑器编辑个人场景进行调试。下面分别介绍。

1. 查找需要的系统场景

打开Apollo社区,点击工作台,选择仿真。如果是初次使用,需要在仿真概览页面,完成新用户认证,才可以解锁更多功能。Apollo Studio仿真平台

https://pic1.zhimg.com/80/v2-b87af6131493ac3aad31a5a837df22ae_1440w.png?source=d16d100b

点击场景管理,可以看到Apollo系统场景。在Apollo Studio仿真工具中,开放了200余典型系统场景,每个系统场景提供了查看、编辑以及添加至场景集的功能。开发者可根据自己的需求,选择合适的场景进行调试。例如,当需要选择直行道的场景时,可以在道路类型中选择直行道选项进行筛选。

https://picx.zhimg.com/80/v2-0c8c4e4d75b7d9127d2ead6ca4ee5988_1440w.jpeg?source=d16d100b

此外,系统也提供了批量查看的功能,每个场景都可以独立预览,至此,我们就可以确定当前的场景是否是真实需要的。

2. 编辑个人场景

当系统场景不能满足个人调试需求时,开发者可以通过Apollo提供的场景编辑器自定义场景。接下来,我们以静态障碍物绕行为例,来介绍场景编辑器的使用。

首先打开仿真平台场景编辑器,选择地图San Mateo,填写基本信息。

https://pic1.zhimg.com/80/v2-25b68a5d26bb1423383266da5c0d97e5_1440w.jpeg?source=d16d100b

然后选择主车,在地图合适的位置放置主车,使用滚轮可以缩放,按住ctrl键可以拖动地图平移。再利用鼠标调整主车的位置和方向。这一步务必注意,使用新增轨迹点来设置车辆运行的终点。

https://pic1.zhimg.com/80/v2-d12d32346b6fc72586d3381a9d695d82_1440w.jpeg?source=d16d100b

最后选择参与者,参与者选择未知静态障碍物,其他参数选择默认即可,点击保存。

https://picx.zhimg.com/80/v2-dd5c4e6403e92a613242c7c5af9d52a0_1440w.jpeg?source=d16d100b

可以看到,在个人场景列表已经出现该场景了

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

3. 创建场景集

确定需要的场景后,就可以创建场景集了。我们新建一个名为Apollo 9.0的场景集,选择线下仿真,然后勾选刚才确认的场景,点击创建。

https://pica.zhimg.com/80/v2-9fc1baf931c024519e4d060a607be2a7_1440w.jpeg?source=d16d100b
https://picx.zhimg.com/80/v2-f142cc52e488b2c799a4e9e7a1d64b0b_1440w.png?source=d16d100b
https://pic1.zhimg.com/80/v2-04267811b646508100e54324c393083d_1440w.png?source=d16d100b

4. 使用Profile插件同步到DreamView

场景集创建完成后,就可以通过插件Profile将该场景集同步到本地DreamView中,安装插件是场景集同步的必要条件。Apollo Studio云实验系统中,已经内置了插件,因此可以直接使用。但是如果在本地计算机安装了Apollo系统,则需要再个人中心的仿真服务中,生成对应版本的插件安装指令,然后再docker环境中运行该条指令。运行完成后,就可以正常使用插件同步功能了。

接下来演示如何将场景集进行同步。首先启动DreamView,打开Source Manager资源中心,找到场景列表,我们将刚才创建的Apollo9.0下载到本地,返回主页。

https://pica.zhimg.com/80/v2-e159c7d4cec69a5e4fd8a070b192c4f1_1440w.jpeg?source=d16d100b

在资源环境中选择刚才下载的场景,打开Planning,Prediction,点击底部栏运行,就可以开始有障碍物的仿真了。

四、障碍物借道绕行仿真实验

在上一节中,我们学习了交通流仿真场景的编辑,也制作了静态障碍物绕行的场景。本实验将以该场景为例,讲解有障碍物场景下的仿真调试。

实验内容

车辆在行驶过程中,前方监测到静态障碍物后触发借道绕行,距离目标障碍物横向距离至少保持1m。


实验目的

掌握Scenario_Sim仿真组件使用方法

了解planning模块参数配置及调试方法


实验配置

《Apollo规划之障碍物借道绕行仿真调试》实验项目


1. 准备工作

实验的第一步是启动DreamView+;第二步将Mode调整为PnC,Operation切换为Scenario_Sim场景仿真操作;Modules模块中打开Planning,Prediction。

Scenario_Sim是PnC模块中最后一种仿真组件,可以支持在云端编辑同步的场景中仿真。

https://pica.zhimg.com/80/v2-18288b1e669e189c4820aa296a26f24c_1440w.png?source=d16d100b

2. 下载静态障碍物场景

打开资源中心,找到刚才创建的场景集,点击下载,可以看到场景集已经被下载到本地了。如果下载失败,或下载后右侧区域不显示场景集,那很有可能是场景存在问题,大家需要检查自己的场景,是否按照上个实验的标准来制作。

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

下载完成后,可以通过场景列表进行场景的切换。可以选择上节课创建的个人场景,也可以选择Apollo Scenario场景集中的默认的场景Obstacle_bypass,该场景为系统预设的静态障碍物绕行场景。

https://player.bilibili.com/player.html?isOutside=true&aid=113264931378391&bvid=BV1Cs11YpEU5&cid=26182092655&p=1

然后开启算法调试模块,点击底部运行,可以看到主车已经正常避让障碍物了。

3. 修改代码程序

实验第三步,是按照任务要求修改程序代码,本实验任务要求是主车行驶过程中,前方监测到障碍物后借道绕行,距离目标障碍物横向距离至少保持1.2m。

planning.conf模块中存储了车辆对障碍物绕行距离相关的参数,其中调整参数obstacle_lat_buffer即可实现对障碍物绕行横向距离的调整。

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

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

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

aem profile use default

我们打开云实验平台的在线编辑器,点击File->Open Folder,选择/Apollo_Workspace目录,打开profiles目录下的planning.conf文件,输入横向距离等于1.0。

--obstacle_lat_buffer=1.0
https://picx.zhimg.com/80/v2-46ae1ed580002874b892c7cc3e019ae0_1440w.png?source=d16d100b

4. 重新运行仿真

修改完后点击保存。关闭在重新打开Planning模块,再次点击运行,仔细与上一张仿真图进行对比就可以看到,车辆静态障碍物的绕行横向间距发生了变化。

https://player.bilibili.com/player.html?isOutside=true&aid=113264931377379&bvid=BV1ys11YpETz&cid=26182092660&p=1

结语

目前为止,我们在云实验室中学习了自动驾驶仿真和代码调试的基本方法,掌握了诸如DreamView、PnC monitor、Cyber Monitor等调试工具的使用方法,还学习了如何在云端制作场景集并同步到dreamview中。这些都是Apollo仿真中至关重要的技巧。

在这部分中主要以PnC模块为例进行演示,这是因为PnC模块无需显卡就能仿真。除此之外,default和perception也都有各自的适用场景和使用方法。另外,云实验室是对本地环境的一种模拟,接下来我们将在本地Ubuntu系统中安装并配置Apollo环境,真正开始上机仿真的学习。


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


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