车道标记传感器提供有关道路上车道线的信息。该信息作为车道线与相对于传感器的扫描线之间的交点提供。
一、车道标志数据
车道标记传感器主要提供描述车道和路边线交叉点的数据。交点计算最多四个前视扫描平面。前视扫描垂直于传感器的轴视,并直接集中在传感器的前面。扫描线的可视化见下图。
每次扫描都测量与世界上存在的车道线相交的点。这些线是数学定义的近似值,近似值的精度受到实验模型生成设置的影响。由于车道标记传感器是一种理想化的传感器,交叉口数据源于车道定义线,因此不一定与可见的车道标记一致。这也可以在图1中看到。标记模式的横向偏移也不影响定义线的检测。因此,如果只定义具有相对较高横向偏移量的标记模式,则视觉标记和检测到的定义线不会重合。
车道标记传感器每次扫描确定以下交点:
- 左侧最近的路边线交点。
- 右侧最近的路边线交点。
- 左侧最近的三个车道交点。
- 右侧最近的三条车道交点
注意:这里的“最近”,“左”和“右”在这里是相对于扫描中心(不是传感器)而言。
每个交点处可用的数据如下:
- 车道线类型(无、车道、中心或路缘)
- 与线条相关的标签
- 交点的绝对坐标位置。
- 扫描中心的距离。
- 用于可视化车道或路缘线的标记的颜色、宽度、长度和间距。
- 车道标线的第4个箭头方向(以度数表示)
- 交点的曲率
注1:车道标记传感器提供的是需要进一步解释的交点。例如,某些交点可能与车辆所在的道路不相交。
注2: 车道标记传感器将中心线和路缘线视为普通的车道线,因此与路缘线的交叉点可能与与车道线的交叉点完全相同。
注意3:车道标记传感器是一种真值传感器。与PreScan中的其他真值传感器一样,提供的输出未考虑遮挡因素。这样做是为了让需要补偿遮挡的客户算法拥有可供比较的绝对数据。
注4:交叉口的车头指向和曲率取自车道标线的几何形状。因此,这些值可能与预期的精确值略有不同。可以在“传感器”设置面板中调整生成的车道标线定义的精度。
二、预扫描实验编辑器
在实验编辑器中,车道标记可以通过几种方式可视化。
通过单击工具栏中的“切换车道定义”按钮,可以打开或关闭车道定义的可视化(默认关闭)。
通过单击工具栏中的“标签车道线”按钮,可以打开或关闭车道标签的可视化(默认关闭)。
请参见下图中的示例。
Lane Markers (default) | 显示添加到路段的车道标记。 | |
Lane Definitions | 显示车道定义,车道标记传感器使用这些定义来查找其交点。球道的定义是用颜色编码的: 车道线为蓝色 |
|
Lane Labels | 车道定义与其相关的标签一起显示。每个标签值都映射到用于显示车道定义和标签的颜色。 |
三、对象配置
对象配置包含以下选项卡:
1、系统:定位和方向可以相对于包含车道标记传感器的参与者进行配置
2、输出:Output选项卡配置传感器提供的信息。在距离传感器指定的距离处,传感器最多可产生四次扫描输出,可以通过add和remove添加和删除(目前这里有两个)。其中FOV是视场角,这些扫描的宽度可以锁定到传感器的方位FOV,使用选项“锁定到FOV”,当勾上勾时,Reach(宽度)不能修改,会随着FOV变化而变化。最后可以设置传感器的帧率。
四、车道标签操作
不同配置的车道标签可以检测不同的情况或交通情况的变化。例如,车道标签可用于检测车辆何时驶入另一条车道。可以根据需要配置场景。
当车道标签在构建区域中可视化时,可以选择车道定义线。在选择了通道定义之后,它的类型和标签将显示在属性编辑器中,在这里可以手动设置标签。
此外,从车道定义的上下文菜单中,可以选择将其标签扩展到跨多个路段的连接车道定义。
五、模型表示
车道标记传感器为预扫描编译表提供了一个输入端口。在参与者的子系统中,可以找到一个LaneMarkerSensor_Data块,它输出用于Simulink模型的数据。输出总是一个包含所有扫描数据的总线信号。为了从总线中提取信息,可以使用Bus Selector。
车道标记传感器数据的主要输出总线信号结构如下所述。LaneMarkerData总线包含5个信号:
将Bus Selector接上之后,双击Bus Selector可以看到
sliceCount (int) | 使用的前视距离的数量。 |
ScanAtSensor | 第一次扫描数据 |
ScanAtDistance1(,2,3) | 第二(、三、四)次扫描的数据 |
*注意:在PreScan 7.6和更早的版本中,sliceCount的取值范围从0到3。在后来的版本中,这已调整为1-4,以防止混淆
每个LaneMarkerSliceData总线包含以下信号:
PerformedScan [boolean] | 是否执行此扫描 |
CenterCoordinates [X,Y,Z double] | 扫描中心的绝对位置。对于基础扫描,这是传感器的位置。 |
RoadIdUnderSliceCenter [int] | 在扫描中心正下方找到的路段的唯一标识符。 |
RoadCurvatureUnderSliceCenter [double] | 路段的曲率。此值仅适用于直道和弯道路段。对于其他段类型,该值将为零 |
SliceDistance [double] | 传感器与扫描中心之间的距离 |
{Left,Right}CurbIntersection [sub-bus: LaneMarkerIntersectionData] | 扫描中心左右两侧最近的路边线的相交数据。 |
LeftLaneCount, RightLaneCount [int] | 在扫描中心左侧/右侧发现的交叉点数量。 |
{Left,Right}LaneIntersection{1, 2, 3} [sub-bus: LaneMarkerIntersectionData] | 扫描中心左右两侧最近车道线(最多3条)的相交数据。 |
每个LaneMarkerIntersectionData总线包含以下信号:
FoundIntersection [boolean] | 该总线信号是否包含描述交点碰撞的数据 |
LaneLineType [enum] | 交点的车道定义类型。取值可以是None(0)、LaneLine(1)、CenterLine(2)或CurbLine(3)。 |
Label [uint8] | 与车道定义线相关联的数字标签。 |
WorldCoordinate [X,Y,Z double] | 交点的绝对位置。 |
DistanceFromScanCenter [double] | 交点与切片中心之间的距离 |
MarkerColor {R,G,B} [uint8] | 车道/路缘标记的RGB颜色组件,用于可视化车道。 |
Marker{Length,Spacing,Width} [double] | 车道/路缘标志的尺寸,使车道可视化。如果在定义线上没有定义任何标记模式,则将维度报告为0。如果定义了多个标记模式,则只报告具有最大相对面积(按比例)的模式。 |
Heading [deg] | 交点车道标志的方向。 |
Curvature2 | 交点的车道标志的曲率。 |
注1:来自LaneMarkerSensor_Data块的总线信号有固定的大小。因此,所有的信号总是存在于总线中。如果扫描中只发现一个左车道交叉口,LeftLaneCount将为1,两个交叉口信号将包含全零数据,IntersectionFound设置为false。
注2:给定点的曲率由首先将圆的周长拟合到车道标记线来确定。曲率由圆半径的倒数来定义。
曲率的符号取决于传感器参考系中车道标志、交叉口和圆心的位置。如果圆心在交点左侧,符号为正,否则符号为负。换句话说,从传感器的角度来看,当道路向左转弯时,曲率为正,否则为负。
第一张图是正曲率,第二张图是负曲率
参考文章: