2、路网构建基础:使用netedit绘制简单十字路口、设置车道与连接关系。

好,咱们正式开始动手了。

上一章我们聊了SUMO的整体框架,你可能觉得有点虚。这一章,我们来点实在的——亲手画一个十字路口。

你想想看,一个交通仿真系统,最核心的载体是什么?就是路网。没有路网,车往哪儿跑?所以,路网构建是基本功。我个人习惯,不管多复杂的项目,第一步永远是先画一个标准的十字路口,把流程跑通。

2.1 启动netedit,认识界面

netedit是SUMO自带的图形化路网编辑器。说白了,就是给你一个画板,你拿鼠标在上面画路。

启动方式很简单,在命令行里敲:

netedit

或者你在SUMO的安装目录下找到netedit.exe双击也行。我刚开始用的时候,总记不住命令,后来干脆在桌面建了个快捷方式。

界面打开后,你会看到几个主要区域:

  • 画布区:中间最大的空白区域,你就在这儿画路。
  • 工具栏:左侧竖排的一堆图标,有选择、画边、画连接等。
  • 属性面板:右侧,选中某个元素后,这里会显示它的详细参数。

嗯,这里要注意,第一次打开可能会有点懵。别急,我们只用到其中几个核心功能。

小技巧: 我个人习惯把画布背景调成浅色网格。在菜单栏 Edit -> Edit Mode -> Background 里可以设置。网格能帮你对齐道路,画出来的路网更规整。

2.2 绘制道路:从一条边开始

在SUMO里,一条路叫“边”(Edge)。两条边相交的地方叫“节点”(Junction)。

我们先画一条东西走向的路。

  1. 点击左侧工具栏的 创建边 图标(看起来像一条带箭头的线)。
  2. 在画布上点击一下,确定起点。
  3. 再点击一下,确定终点。一条路就出来了。

是不是很简单?但这里有个坑。你画出来的路默认是单向的,箭头指向终点。我们做十字路口,需要双向车道。

怎么解决?两种方法:

  • 方法一: 画完一条边后,再反向画一条。麻烦,不推荐。
  • 方法二: 在属性面板里,找到 spread type 这个参数,把它改成 center。这样,你画一条边,系统会自动生成双向车道。

我建议你直接用方法二。我在项目中遇到过,新手用方法一画出来的路,经常出现连接关系错乱,排查起来很头疼。

2.3 构建十字路口:画第二条路

好,现在画一条南北走向的路,让它和刚才那条路相交。

操作步骤完全一样:

  1. 点击 创建边 图标。
  2. 从北往南画,穿过刚才那条路。
  3. 注意,画的时候,终点要落在第一条路的“身上”,而不是旁边。系统会自动识别交叉点。

画完之后,你会看到两条路交叉的地方,自动生成了一个黄色的节点。这个节点就是十字路口的中心。

为什么会自动生成?因为netedit检测到两条边相交了,它认为这里需要一个路口来管理交通流向。嗯,这个逻辑很聪明。

核心概念: 在SUMO里,路口(Junction)是交通逻辑的核心。它决定了车辆能不能转弯、要不要等红灯。没有路口,车就只能直行,没法拐弯。

2.4 设置车道数量与方向

默认画出来的路,每个方向只有一条车道。现实中的十字路口,至少得有一条左转、一条直行、一条右转吧?

我们来改一下。

  1. 选中一条边(点击它,变红就表示选中了)。
  2. 在右侧属性面板里,找到 numLanes 这个参数。
  3. 把值改成 3。回车。

你会看到,这条路瞬间变成了三条车道。但注意,这三条车道目前是“通用”的,没有指定转向。

怎么指定?我们需要用到“连接关系”(Connections)。

2.5 设置连接关系:让车能转弯

连接关系,说白了就是告诉SUMO:从A路来的车,到了路口,可以往哪几个方向走。

操作步骤:

  1. 点击左侧工具栏的 创建连接 图标(看起来像两个箭头对接)。
  2. 鼠标移到路口中心,你会看到每条车道都伸出了“触手”。
  3. 点击一条车道(比如最左侧的车道),然后点击它要去的目标车道(比如对面路的左转车道)。
  4. 一条绿色的连接线就出现了,表示连接建立成功。

我一般这样设置一个标准的十字路口:

  • 最左侧车道:连接对面路的左转车道。
  • 中间车道:连接对面路的直行车道。
  • 最右侧车道:连接右侧路的右转车道(或者直行+右转)。

这里有个细节。右转车道,在SUMO里通常不需要单独设置连接,因为默认允许右转。但如果你希望右转车辆不受红绿灯控制,可以单独设置一条“右转专用道”并跳过连接。

避坑指南: 我曾经犯过一个错误,把左转车道连到了对面的直行车道上。结果仿真时,左转车辆和直行车辆在路口中间撞成一团。记住,连接关系必须一一对应,不能乱连。

2.6 保存与验证

画完之后,记得保存。文件格式是 .net.xml。

保存后,我建议你用SUMO自带的工具验证一下:

netconvert -s your_network.net.xml -o output.net.xml

如果没有任何报错,恭喜你,路网构建成功了。

你也可以用 sumo-gui 打开看看效果。加载路网文件,你会看到车辆在路口自动转弯、等待,一切井然有序。

2.7 本章知识体系

为了让你更直观地理解,我画了一张图,把本章的核心逻辑串起来:

路网构建核心流程 启动 netedit 绘制道路 (Edge) 设置车道数 设置连接关系 保存与验证 仿真测试 调整优化 核心逻辑:绘制 → 配置 → 连接 → 验证 → 迭代

这张图把我们从启动netedit到最终仿真测试的整个链条串起来了。你可以看到,设置连接关系是承上启下的关键一步,它直接决定了车辆在路口的行为。

2.8 一些经验之谈

最后,分享几个我个人的小习惯:

  • 命名规范:给每条边起个有意义的名字,比如 road_east_west,别用默认的 edge_001。不然项目大了,你根本找不到哪条路是哪条。
  • 备份习惯:每完成一个关键步骤,就保存一次。我吃过亏,画了两个小时的路网,软件崩了,全没了。
  • 多看属性面板:选中一个元素后,右侧的属性面板会显示所有可调参数。很多高级功能都藏在这里,比如限速、车道宽度、允许的车辆类型等。

好了,这一章的内容就到这儿。你跟着操作一遍,应该就能画出一个能用的十字路口了。下一章,我们会在路网上放车,让仿真跑起来。

可可精品资料库