主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

SpanSequenceSpan

定义跨度序列中两个节点之间的跨度

自 R2025a 起

    说明

    SpanSequenceSpan 对象表示跨度序列中两个相邻节点之间的跨度。该对象定义了两个相邻节点之间的精确路径和空间关系,用于描述沿道路或车道从一个位置到下一个位置的过渡。

    创建对象

    要从 RoadRunner 场景的车道标记轮廓中提取 SpanSequenceSpan 对象,请提取对应 LaneMarkingProfile 对象的 Spans 属性。例如,markingSpans = LaneMarkingProfile.Spans 提取标记配置文件中的所有 span 元素,并将它们赋值给变量 markingSpans

    属性

    全部展开

    此 属性 为只读。

    指定跨度序列开头的节点,以 SpanSequenceNode 对象形式指定。StartNodeSpanSequenceSpan 的第一个节点。它定义了跨距序列沿道路几何形状的初始位置和方向。

    此 属性 为只读。

    跨度序列末端的节点,指定为一个 SpanSequenceNode 对象。它定义了跨距序列沿道路几何形状方向的终端位置和方向。

    示例

    全部折叠

    创建一个 roadrunner 对象,指定现有工程的路径。例如,此代码显示 Windows® 计算机上位于 "C:\RR\MyProject" 的工程的路径。此代码假设 RoadRunner 已安装在默认位置,并返回一个名为 rrApp 的对象,该对象提供用于执行基本任务的函数,例如打开、关闭和保存场景及工程。

    rrApp = roadrunner(ProjectFolder="C:\RR\MyProject");

    注意

    若您首次从 MATLAB® 打开 RoadRunner,或自上次从 MATLAB 打开以来更改了 RoadRunner 的安装位置,可使用 roadrunnerSetup 功能指定新的默认工程和安装文件夹,以便在打开 RoadRunner 时使用。您可以在 MATLAB 会话之间通过从对应下拉菜单中选择 Across MATLAB sessions 选项来保存这些文件夹。

    RoadRunner 中使用 newScene 函数创建新场景,指定 roadrunner 对象 rrApp

    newScene(rrApp)
    

    创建一个名为 RoadRunner 的创作 API 对象 rrAPI,该对象引用当前 RoadRunner 实例 rrApp 的对象。rrApi 对象支持通过编程方式创建场景,例如使用 MATLAB 添加和修改道路及车道组件。

    rrApi = roadrunnerAPI(rrApp);
    
    从创作 API 对象 rrApiScene 属性中提取场景对象。提取的 Scene 对象可用于指定添加场景组件(如道路和车道)的场景。
    scn = rrApi.Scene;

    从创作 API 对象 rrApiProject 属性中提取 RoadRunner 工程的对象。提取的 Project 对象可让您指定当前 RoadRunner 会话的工程文件夹,以便从中检索素材对象。您可以使用素材对象为场景中的车道添加车道标记。

    scn = rrApi.Project;

    使用 addLineArcRoad 函数向场景中添加一条具有线弧形水平曲线类型的道路。通过指定道路控制点在 RoadRunner 局部坐标系的 X-Y- 轴上的位置来确定道路的位置。将道路的控制点分别设置在 X- 轴上的 -100Y- 轴上的 50

    controlPoints = [-100 0; 0 50];
    rrRoad = addLineArcRoad(scn,controlPoints);

    从道路 rrRoadReferenceLane 属性中提取参考车道。提取的属性 ReferenceLane 定义了道路的中线。

    refLane = rrRoad.ReferenceLane;

    使用 getAsset 函数获取用于虚实黄线标记和实黄线标记的 LaneMarkingStyle 对象。这些对象定义了用于标记参考车道车道标记轮廓中跨段的车道标记素材。

    dashedSolidYellowMarkingStyle = getAsset(prj, "<PROJECT>/Assets/Markings/DashedSolidYellow.rrlms", "LaneMarkingStyle");
    solidDoubleYellowMarkingStyle = getAsset(prj, "<PROJECT>/Assets/Markings/SolidDoubleYellow.rrlms", "LaneMarkingStyle");

    使用 refLane 对象的 LaneMarkingProfile 属性提取参考车道的车道标记轮廓。

    refLaneMarkingProfile = refLane.LaneMarkingProfile;

    在车道标记轮廓中,使用 insertNode 函数在三个 30 米跨度处插入节点。该方案通过在 30 米、60 米和 90 米处插入节点,将车道标记轮廓划分为四个跨段。

    insertNode(refLaneMarkingProfile, 30);
    insertNode(refLaneMarkingProfile, 60);
    insertNode(refLaneMarkingProfile, 90);
    

    现在,使用车道标记轮廓对象 refLaneMarkingProfileSpans 属性,提取代表目标车道标记放置位置的独立跨度对象 refLaneSpan。第一跨和第三跨标记为虚实相间的黄色标记类型,第二跨和第四跨标记为实心双黄线标记类型。这些标记表示道路上的超车区,车辆在此区域内允许变道。

    refLaneSpan = refLaneMarkingProfile.Spans(1);
    refLaneSpan.LaneMarkingStyle = dashedSolidYelloMarkingStyle;
    refLaneSpan = refLaneMarkingProfile.Spans(2);
    refLaneSpan.LaneMarkingStyle = SolidDoubleYelloMarkingStyle;
    refLaneSpan = refLaneMarkingProfile.Spans(3);
    refLaneSpan.LaneMarkingStyle = dashedSolidYelloMarkingStyle;
    refLaneSpan = refLane.refLaneMarkingProfile.Spans(4);
    refLaneSpan.LaneMarkingStyle = SolidDoubleYelloMarkingStyle;
    

    版本历史记录

    在 R2025a 中推出