车联网仿真之两种超实用的SUMO地图生成与替换方法

SUMO仿真器跑起来需要有三个文件

  • ***.net.xml文件:路网构建、创建交通信号灯等,生成道路文件;
  • ***.rou.xml文件:生成车辆文件;
  • ***.sumocfg文件:将net.xml和rou.xml文件结合起来实现仿真。

SUMO地图替换

SUMO中路网文件的编写可以直接用 netedit 软件绘制,也可以用netconvert命令转换第三方来源中的复杂路网。总体包括道路、交叉口的id和位置信息、车道信息(数量、长度、最大速度、形状、功能等)、优先权信息、交通信号信息、交叉口信息等。下面介绍了两种生成SUMO路网文件的方法。

1. 使用netconvert转换工具

使用 netconvert 命令,能够将多种第三方的路网文件转化为SUMO可读的文件,具体可转化的第三方来源有:OpenStreetMap(一种开源的地图引擎)、OpenDrive、MATsim、ArcView 等。例如在linux系统下使用OpenStreetMap导入地图操作如下:

  • ***.osm文件生成

首先进入OpenStreetMap官网(https://www.openstreetmap.org/),按下图步骤选择区域并导出map.osm文件;

在这里插入图片描述

将导出的文件复制到linux系统中,然后再利用sumo bin目录下的netconvert、polyconvert转换工具和sumo tools目录下的randomTrips.py工具生成相应的SUMO仿真文件。具体步骤如下:

  • ***.net.xml道路文件生成

打开终端

在这里插入图片描述

输入以下内容生成道路文件

netconvert --osm-files map.osm -o map.net.xml

如果报错则需要配置临时环境变量,在终端输入以下内容配置临时变量(注意 sumo 版本)

export SUMO\_HOME=/home/veins/src/sumo-1.11.0

netconvert可以将***.osm文件转换成***.net.xml文件,--osm-files即表示输入文件类型, -o map.net.xml是输出, -o即output的意思,map.net.xml即为输出文件。

  • ***.rou.xml车辆行为文件生成

由于车辆的行为是多种多样的,所以可以利用SUMO中的randomTrips.py脚本根据道路状况随机化车辆行为生成相应的***.rou.xml文件。在终端输入以下内容将道路和行驶路径整合生成车辆行为文件

/home/veins/src/sumo-1.11.0/tools/randomTrips.py -n map.net.xml -e 100 -l
/home/veins/src/sumo-1.11.0/tools/randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l

-n map.net.xml 指定了路网文件,-e 100 定义了模拟时间结束的时刻(以秒为单位),-l 指示脚本在每个行程结束时让车辆再次出发,形成一个循环的行程。-r map.rou.xml 参数用于指定生成的路由文件的输出名称和位置。

也可以类似示例代码 erlangen.rou.xml 文件中使用<flow>元素定义一组具有相同特性(例如车辆类型、路线、发车时间等)的车辆。

<routes>
	<vType id="vtype0" accel="2.6" decel="4.5" sigma="0.5" length="2.5" minGap="2.5" maxSpeed="14" color="1,1,0"/>
	<route id="route0" edges="-39539626 -5445204#2 -5445204#1 113939244#2 -126606716 23339459 30405358#1 85355912 85355911#0 85355911#1 30405356 5931612 30350450#0 30350450#1 30350450#2 4006702#0 4006702#1 4900043 4900041#1"/>
	<flow id="flow0" type="vtype0" route="route0" begin="0" period="3" number="195"/>
</routes>

意思是,在仿真开始时间0的时候,有195辆类型为 “vtype0” 的车辆开始按照 “route0” 的路线行驶,每 3 秒钟就有一辆车开始行驶。每辆车的加速度为 2.6,减速度为 4.5,长度 2.5,最小间隔2.5,最大速度 14,颜色为黄色(RGB值为1,1,0)。sigma 是车辆驾驶员模型的一个参数,它代表驾驶员的“”驾驶错误”或“驾驶不确定性”。sigma值越高,驾驶员的行为就越随机,反之则更接近理想的驾驶行为。
如果仿真需要修改车流行驶路线,可以在 netedit 中打开 ***.net.xml 路网文件获取道路 id,按照道路顺序(注意车辆行驶方向)将 route id 填入相应为位置,即可生成一组具有相同特性(例如车辆类型、路线、发车时间等)的车辆。

  • ***.poly.xml地形文件生成

因为在 veins 仿真过程中,将用到地形文件。polyconvert 转换工具可以根据 ***.net.xml***.osm 文件生成相应的地形文件。在终端输入以下内容生成地形文件

polyconvert --net-file map.net.xml --osm-files map.osm -o map.poly.xml
  • ***.sumo.cfg配置文件生成

使用 vimtouch 命令新建一个map.sumo.cfg文件,编写并保存内容如下

<?xml version="1.0" encoding="iso-8859-1"?>

<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.sf.net/xsd/sumoConfiguration.xsd">

<input>
    <net-file value="map.net.xml"/>
    <route-files value="map.rou.xml"/>
    <additional-files value="map.poly.xml"/>
</input>

<time>
    <begin value="0"/>
    <end value="1000"/>
    <step-length value="0.1"/>
</time>

<report>
    <no-step-log value="true"/>
</report>

<gui_only>
    <start value="true"/>
</gui_only>

</configuration>
  • 开启可视化界面

在终端输入以下内容

sumo-gui map.sumo.cfg

此时会打开SUMO的GUI,按下图操作观察SUMO车辆行为仿真。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果需要对地图进行小部分修改,可以点击 Edit->Open in netedit注意:修改之后,意味着***.net.xml道路文件发生变化,需要重新生成车流行为文件,避免报错。

在这里插入图片描述

在这里插入图片描述

如果地图太大,边缘多余道路、地铁线等可以使用JSOM软件(https://josm.openstreetmap.de/)进行地图编辑,之后重新生成车辆行为文件即可。

  • 加载地图到Veins中

复制路网文件(map.net.xml)、车辆行为文件(map.rou.xml)、地形文件(map.poly.xml)、配置文件(map.sumo.cfg)到OMNeT++示例项目的Veins -> examples -> veins路径下,同时修改erlangen.launchd.xmlerlangen.sumo.cfg中的相应内容,如下:

在这里插入图片描述

在这里插入图片描述

或者重新生成 map.launchd.xmlmap.sumo.cfg 文件,并在 omnetpp.ini 文件中修改相应内容,如下:
在这里插入图片描述

运行omnetpp.ini文件,并根据需求在.ini配置文件下更改相应内容。

在这里插入图片描述

如果刚运行就出现如下错误:
在这里插入图片描述

说明无法成功连接到 TraCI(Traffic Control Interface)服务器,TraCI 服务器是 SUMO 交通模拟器的一部分。这时只需要点击 Activities->veins_launchd 打开,出现如下界面即可再次运行 omnetpp.ini
在这里插入图片描述

在这里插入图片描述

运行后如遇到下述情况,则需要在 omnetpp.ini 文件中修改仿真区域范围大小:

在这里插入图片描述

在这里插入图片描述

2. 用netedit软件绘制地图
  • 路网编辑

打开 netedit 软件通过选择 File->New Network 创建一个新网络,并确保 Network 被选中。以生成一个九宫格地图(2k×2k)为例。

  • 进入netedit:...\sumo\bin\netedit.exe
  • 创建网络:选择 File->New Network 创建一个新网络
  • 创建节点和边并修改属性:edge mode->(创建多个节点打开chain mode 模式)->inspect mode修改属性

在这里插入图片描述

在这里插入图片描述

  • 添加反向车道:鼠标右键边->Edge operations->Add reverse direction for edge

在这里插入图片描述

在这里插入图片描述

  • 根据需求 create TLS

  • 路网保存

在这里插入图片描述

将保存的***.net.xml文件复制到veins,之后的操作参照方法1,但是由于没有建筑物等,不用生成地形文件***.poly.xml,在***.sumo.cfg文件中删除<additional-files value="***.poly.xml"/>

最后,在终端输入sumo-gui ***.sumo.cfg,运行效果如下:

在这里插入图片描述

3. 相关参考链接
  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
MATLAB车联网仿真是一种使用MATLAB软件进行车联网系统模拟和分析的方法车联网是指通过无线通信技术将车辆、道路和互联网一起连接起来,实现车辆之间的信息交流和资源共享。通过MATLAB车联网仿真可以模拟车辆之间的通信,并分析车辆的运行状态、路况以及网络传输的延迟等指标。 MATLAB车联网仿真的主要步骤包括网络建模、通信协议设计、信道建模以及数据传输模拟等。首先,需要对车联网系统进行网络建模,包括定义车辆节点、通信基础设施以及互联网连接等。其次,针对车辆之间的通信需求,设计合适的通信协议,确保车辆之间的信息交换高效可靠。然后,通过信道建模,模拟车辆间的信号传播过程以及信道干扰等情况,进而分析车辆通信的质量。最后,进行数据传输模拟,通过引入实际数据或生成虚拟数据,评估车辆之间的数据传输性能,并对仿真结果进行分析和优化。 MATLAB车联网仿真通过提供丰富的工具箱和函数,可以方便地实现各种车联网场景的仿真模拟。例如,可以通过MATLAB的通信系统工具箱进行无线通信信号和系统建模;使用SIMULINK进行网络流量建模和传输效率分析;结合MATLAB的图形绘制功能展示车辆行驶路径和传感器数据等。此外,MATLAB还提供了大量的数据分析与处理工具,可以对仿真结果进行统计分析和可视化展示。 总之,MATLAB车联网仿真是一个强大的工具,可以帮助研究人员和工程师评估车联网系统的性能、优化通信策略以及验证新的技术方案。它能够提供高度可控的仿真环境,帮助用户更好地理解和改进车联网系统,从而推动车联网技术的发展和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小咖笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值