主要内容

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

SpanSequenceNode

在跨度序列中定义跨度序列节点

自 R2025a 起

    说明

    SpanSequenceNode 对象表示跨度序列中的跨度序列节点。

    创建对象

    要从 RoadRunner 场景的车道标记轮廓中提取 SpanSequenceNode 对象,请提取对应 LaneMarkingProfile 对象的 Nodes 属性。例如,markingNodes = LaneMarkingProfile.Nodes 提取标记配置文件中的所有节点,并将它们赋值给变量 markingNodes

    属性

    全部展开

    节点沿跨度序列的距离,以数值标量形式指定。单位为米。该距离相对于跨度序列的起始点进行测量,且必须位于 [0, total length of the span sequence] 范围内。

    默认情况下,RoadRunner 中的跨度序列包含两个固定节点--一个位于起始处(0 米),另一个位于终点(等于跨度序列的总长度)。这些节点定义了初始跨度,且无法重新定位。您可以在跨度序列中自定义距离处添加额外节点。

    数据类型: double

    此 属性 为只读。

    节点起始处连接的跨度,指定为 SpanSequenceSpan 对象。

    此 属性 为只读。

    节点末端连接的跨度,指定为 SpanSequenceSpan 目标。

    示例

    全部折叠

    创建一个 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 中推出