第三节:场景编辑器入门
场景编辑器,说白了就是给自动驾驶系统搭舞台的地方。你想想看,算法再牛,没有合适的场景去验证,那都是纸上谈兵。我个人习惯把场景编辑器比作「导演的取景器」——你得先搭好路、放好车、摆好障碍物,才能让决策规划系统真正跑起来。
3.1 场景编辑器的基本操作
CarMaker 的场景编辑器,界面其实挺直观的。我第一次用的时候,花了大概半小时就摸清了门道。核心就三个区域:左侧的元件库、中间的3D视图、右侧的属性面板。
核心操作三件套:
- 拖拽:从元件库拖出道路、车辆、障碍物到场景中
- 选中:点击场景中的元素,右侧属性面板会同步更新
- 调整:直接拖拽坐标轴,或者手动输入数值精确定位
嗯,这里要注意一个细节。很多新手喜欢直接在3D视图里拖拽,觉得方便。但我建议你,关键位置的参数一定要手动输入。为什么?因为鼠标拖拽的精度有限,差个几厘米,在高速场景下可能就是天壤之别。我在项目中遇到过,就因为一个障碍物的位置偏差了5厘米,导致AEB功能误触发,排查了整整两天。
我的小技巧:按住 Shift 键再拖拽,可以锁定轴向移动。按住 Ctrl 键拖拽,可以复制选中的元素。这两个快捷键能省你不少时间。
3.2 道路网络构建
道路网络是场景的骨架。CarMaker 支持两种构建方式:一种是直接用内置的道路模板,另一种是手动绘制。
内置模板适合标准场景,比如直道、弯道、十字路口。你只需要选一个模板,然后调整长度、曲率、车道数就行。我一般用模板搭好主干道,再手动添加匝道和连接路。
手动绘制就灵活多了。你可以用样条曲线画出任意形状的道路。具体操作是这样的:
1. 点击「道路绘制」工具
2. 在3D视图中点击放置控制点
3. 右键完成绘制
4. 在属性面板中设置车道宽度、路肩类型、限速值
避坑指南:我曾经在绘制环形匝道时,控制点放得太少,结果道路曲率变化太剧烈,车辆根本跑不上去。后来我总结了一个经验:每个弯道至少放4个控制点,曲率变化大的地方再多加2个。这样生成的路径才平滑。
道路网络构建完成后,别忘了检查一下道路连接性。CarMaker 有个「道路连通性检查」功能,能自动标出断头路和连接异常的地方。我每次搭完路网,第一件事就是跑这个检查,能省掉后面调试时的大量麻烦。
3.3 静态障碍物设置
静态障碍物,就是那些不会动的物体——锥桶、护栏、施工区域、停着的车。这些东西看似简单,但设置不当会直接影响决策规划系统的表现。
| 障碍物类型 | 典型用途 | 关键参数 |
|---|---|---|
| 锥桶 | 施工区域、车道变窄 | 位置、间距、颜色 |
| 护栏 | 道路边界、中央隔离 | 长度、高度、材质 |
| 静态车辆 | 故障车、路边停车 | 朝向、车门状态、双闪 |
| 施工标志 | 临时路况变化 | 类型、可视距离 |
设置静态障碍物时,我特别关注碰撞体积。CarMaker 默认的碰撞体积是矩形的,但实际物体形状可能更复杂。比如锥桶,默认的矩形碰撞体比实际大了一圈,这会导致规划出的路径过于保守。我的做法是:手动调整碰撞体的尺寸,让它更贴合实际物体轮廓。
经验之谈:测试「车道内避障」功能时,我习惯在车道中间放一排锥桶,间距从5米到20米逐渐增大。这样能一次性测出系统在不同障碍物密度下的表现,比一个个场景跑效率高多了。
3.4 动态目标设置
动态目标才是场景编辑的重头戏。说白了,就是给场景里加入会动的元素——其他车辆、行人、自行车。CarMaker 支持两种动态目标:脚本驱动和轨迹驱动。
脚本驱动:你定义目标的行为逻辑,比如「前车在5秒后开始减速,减到30km/h后保持」。这种方式灵活,适合测试决策规划系统对复杂交互的反应。
轨迹驱动:你预先画好一条路径,目标沿着路径走。这种方式简单可控,适合重复性测试。我一般用轨迹驱动做回归测试,用脚本驱动做探索性测试。
// 一个简单的脚本驱动示例
// 前车在3秒后开始减速
if (time > 3.0) {
target_velocity = 50.0 - (time - 3.0) * 2.0;
if (target_velocity < 20.0) {
target_velocity = 20.0;
}
}
我的习惯:设置动态目标时,我会先想清楚「这个场景要测什么」。如果是测跟车功能,前车的速度变化要平滑;如果是测紧急制动,前车的减速度要突然。目标的行为要和测试目的匹配,别为了复杂而复杂。
还有一个容易被忽略的点——目标的初始位置和朝向。我曾经犯过一个低级错误:设置了一辆从对面车道驶来的车,结果朝向设反了,它直接逆行朝我撞过来。虽然测试结果很刺激,但那是错误数据。所以每次设置完动态目标,我都会在3D视图里回放一遍初始状态,确认朝向和位置都对。
重要提醒:动态目标的「激活距离」一定要设置合理。如果设得太远,场景一开始就有很多目标在运动,系统负载高,还可能干扰测试。如果设得太近,目标突然出现,系统来不及反应。我一般设为主车前方100-150米,具体看车速。
3.5 本章知识体系
下面这张图,是我自己整理的场景编辑器知识结构。你可以把它当作一个检查清单,每次搭场景时对照着过一遍。
场景编辑器入门,说白了就是三个字:搭、摆、调。搭路网,摆障碍物,调动态目标。每一步都有门道,但核心逻辑不变——你的场景越贴近真实工况,测试结果就越有参考价值。别怕花时间在场景搭建上,我见过太多团队因为场景太粗糙,导致算法在实车上翻车。嗯,这一节的内容就到这儿,剩下的就是多练。
公众号:蓝海资料掘金营,微信deep3321