第3章:SUMO基础操作:网络文件结构、路网生成工具与简单路网创建

各位同学,今天我们来聊聊SUMO里最基础也最核心的一块——路网。说白了,路网就是仿真的“舞台”。没有它,车往哪儿跑?

我个人习惯把路网文件比作一张电子地图。它不光是画几条线,里面藏着车道数量、限速、连接关系、红绿灯等等信息。嗯,咱们一步步拆开看。

3.1 .net.xml文件结构——别被吓到,其实很规整

我第一次打开.net.xml文件时,说实话,有点懵。满屏的XML标签,看得眼花。但后来发现,它的结构其实非常清晰,就像搭积木一样。

一个标准的.net.xml文件,核心就这几块:

  • 头部声明:版本号、编码方式,没啥好说的。
  • <net>根元素:整个路网的容器,里面包含所有路网元素。
  • <edge>元素:定义路段。每个路段有ID、车道数、限速等属性。
  • <lane>元素:定义车道。注意,路段是车道的集合。一个路段可以有1条或多条车道。
  • <junction>元素:定义交叉口。包括路口位置、连接关系、红绿灯逻辑。
  • <connection>元素:定义车道之间的连接。比如左转、直行、右转。

我给大家画个简单的结构图,方便理解:

.net.xml 文件结构 <net> ... </net> (根元素,包含所有路网信息) <edge> 路段定义 <junction> 交叉口定义 <lane> 车道属性 <connection> 连接关系 每个 <edge> 包含多个 <lane> 每个 <junction> 包含多个 <connection> 路段通过交叉口连接,形成完整路网

你看,结构就这么简单。一个路段(edge)包含若干车道(lane),交叉口(junction)定义连接关系(connection)。

小技巧: 我建议你刚开始时,用文本编辑器打开一个简单的.net.xml文件看看。别怕,找个小路网,边看边对照SUMO文档,很快就能上手。

3.2 netedit——可视化路网编辑器,比手写XML强多了

说实话,手写.net.xml文件太痛苦了。尤其是复杂路口,坐标算得你怀疑人生。所以,SUMO官方提供了netedit这个神器。

netedit是SUMO自带的图形化路网编辑器。你可以在上面画路、画交叉口、设置红绿灯,所见即所得。

启动netedit很简单,在终端输入:

netedit

或者直接双击SUMO安装目录下的netedit.exe(Windows用户)。

界面主要分三块:

  • 画布区:中间最大的区域,用来绘制和编辑路网。
  • 工具栏:左侧或顶部,选择绘制模式、选择模式、删除模式等。
  • 属性面板:右侧或底部,显示和修改选中元素的属性。

我记得第一次用netedit时,最不习惯的是它的操作逻辑。比如,画一条路要先点“创建边”工具,然后在地图上点两个点。嗯,习惯了就好。

3.3 创建简单路网——从十字路口开始

咱们来动手创建一个最简单的十字路口路网。别小看它,很多复杂路网都是从这个基础演变来的。

操作步骤:

  1. 打开netedit,新建一个空路网。
  2. 选择“创建边”工具(快捷键:e)。
  3. 画四条路:从中心点向四个方向延伸。先画一条水平路(从左到右),再画一条垂直路(从上到下)。
  4. 调整交叉口:netedit会自动在道路交叉处生成一个交叉口节点。你可以选中它,在属性面板里修改类型(比如“priority”优先规则路口或“traffic_light”信号灯路口)。
  5. 设置车道数:选中某条路段,在属性面板里修改“numLanes”属性。比如,主干道设3条车道,支路设2条。
  6. 添加连接:netedit会自动生成默认连接(直行、左转、右转)。你也可以手动调整,比如禁止某个方向的左转。
  7. 保存并导出:点击“文件”->“保存网络”,生成.net.xml文件。
关键点: 创建路网时,一定要先规划好道路的走向和车道数。我见过不少新手,画到一半发现车道数不够,又得重画。提前在纸上画个草图,能省很多时间。

导出后的.net.xml文件,你可以直接用SUMO加载进行仿真。也可以继续在netedit里调整,直到满意为止。

3.4 避坑指南——我踩过的几个坑

做路网这么多年,我总结了几条经验,分享给大家:

  • 坐标系统:SUMO使用笛卡尔坐标系,单位是米。如果你从其他地图导入数据,注意坐标转换。
  • 路段方向:路段是有方向的。从起点到终点。别搞反了,否则车会逆行。
  • 交叉口类型:默认是“priority”优先规则路口。如果你想要红绿灯,记得手动改成“traffic_light”。
  • 连接关系:netedit自动生成的连接不一定合理。尤其是复杂路口,一定要检查每个方向的转向是否允许。
曾经我犯过的错: 有一次,我建了一个五岔路口,没仔细检查连接关系。结果仿真时,车辆在路口乱成一团,有的车直接原地打转。后来发现是某个方向的左转连接没配好。从那以后,我每次建完路网都会跑一遍“检查网络”功能(netedit里的“检查”按钮),确保没有逻辑错误。

3.5 小结

这一章我们聊了.net.xml文件的结构,认识了netedit这个好用的工具,还亲手创建了一个简单的十字路口路网。说白了,路网创建就是搭积木——路段是积木块,交叉口是连接件,连接关系是拼装规则。

我个人觉得,学SUMO最忌讳的就是死记硬背。多动手、多试错,比看十遍文档都管用。下次遇到路网问题,别急着百度,先打开netedit画一画,说不定就找到答案了。

好了,这一章就到这儿。记住,路网是仿真的基础,基础打牢了,后面的仿真才能跑得顺。

可可精品资料库