VTD与SUMO联合仿真说明

1 概述
1.1 目的
说明SUMO的安装方法以及VTD和SUMO联合仿真时的配置过程。
1.2 参考文档
1) https://redmine.vires.com/projects/vtd/wiki/ModuleManager#Linking-to-SUMO
2) https://blog.csdn.net/zhixiting5325/article/details/79302244
3) https://www.cnblogs.com/saworld/p/7698563.html
4) https://blog.csdn.net/qq_26130991/article/details/82595572
2 软件环境配置
2.1 软件环境
本文选用的软件环境为:
Ubuntu 16.04
VTD 2.1
SUMO 0.32.0
2.2 SUMO的安装
2.2.1 编译环境和依赖库的安装
安装SUMO前需要安装:g++、cmake、autoconf、Proj、GDAL、Xerces-C、Fox Toolkit,在终端窗口输入如下命令:

sudo apt-get install cmake g++ autoconf
sudo apt-get install libgdal1h libgdal-dev libxerces-c3.1 libxerces-c-dev libicu-dev libproj-dev libfox-1.6-dev libgl1-mesa-dev libglu1-mesa-dev

2.2.2 SUMO的安装

  1. 如果之前运用apt-get 安装了sumo的话, 用以下语句卸载:
apt-get --purge remove sumo
apt-get --purge remove sumo-tools
apt-get --purge remove sumo-docs
  1. 在如下链接下载安装包,默认下载至/home/Downloads/:
    https://sourceforge.net/projects/sumo/postdown
  2. 解压并进入SUMO文件夹(可以提前将压缩文件移动到自己定义的位置):
cd Downloads
tar xzf sumo-src-0.32.0.tar.gz
cd sumo-0.32.0
  1. Subversion checkout:
svn co https://svn.code.sf.net/p/sumo/code/trunk/sumo
cd sumo
make -f Makefile.cvs
  1. SUMO_HOME 环境变量的配置:
    gedit ~/.bashrc
    在打开的文件的最后加上sumo-0.32.0的位置,如下所示:
    在这里插入图片描述
    (图片来自https://blog.csdn.net/zhixiting5325/article/details/79302244)
    修改完毕保存退出后,要通过source来使环境变量生效:
source ~/.bashrc

可以通过 echo $SUMO_HOME 来初步检测有没有修改成功:

echo $SUMO_HOME

若如下图所示,返回设定的SUMO_HOME的路径,则说明修改成功:
在这里插入图片描述
(图片来自https://blog.csdn.net/zhixiting5325/article/details/79302244)

  1. Building the SUMO binaries:
./configure --prefix=$HOME
make
  1. SUMO binaries 最终安装:
make install
  1. 测试安装结果:
    在终端中输入sumo-gui,若弹出sumo窗口则说明安装成功。

3 VTD和SUMO联合仿真
3.1 配置VTD
1)在SUMO工程的moduleManager.xml文件(一般位于:/VTD/VTD.2.1/Data/Projects/SUMO/Config)中添加下面<Sensor…Sensor>之间的语句:

<Debug    enable="false"
          lightSource="false"
          driver="false" />

<Sensor name="sumo" type="video">
    <Load lib="libModuleSUMOGateway.so" path="" persistent="true" />
    <Port name="SUMOout" number="8813" type="TCP" sendEgo="true" client="true" server="127.0.0.1" />
   <Port name="RDBout" number="49175" type="TCP" sendEgo="false" />
    <SUMO    radiusIn="1500.0" radiusOut="1550.0" 
              radiusFar="100000.0" verbose="false" showTrace="false" sendVehicleFrontEdge="true"
	          pathEndAction="stop"
startArgs="SmartDB.2011/SmartDB.2011.sumo.cfg"  globalHdgOffsetDeg="-90" globalHdgScale="-1"/>
    <Player   default="true" />
    <Config   useSyncMask="true" synchronizeInit="true" />
    <Debug    enable="false"/>
</Sensor>

<DynamicsPlugin name="viTrafficDyn">

其中startArgs=" "的内容可以暂不设置。
2)点击VTD主界面的配置按钮,并设置RDB:
在这里插入图片描述
3)为了实时性,注意在GUI中将Sensor中的perfect sensor去掉。
4)Ego车的起始位置和路径,在ScenarioEditor中设置。
3.2 由opendrive道路生成SUMO所需文件
1) 将opendrive格式的道路生成SUMO的.net文件:
将路径切换到道路文件所在文件夹,并使用netconvert工具转换格式:

cd townGer
netconvert --opendrive-files townGer.xodr -o townGer.net.xml --offset.x 0.0 --offset.y 0.0

在同文件夹下生成townGer.net.xml文件
2) 使用randomTrips.py生成随机交通流:

/home/SJN/SUMO/sumo-0.32.0/sumo/tools/randomTrips.py -n townGer.net.xml -b 0 -e 30 -p 1 -o townGer.trips.xml 

下划线处为randomTrips.py文件的绝对位置。
其中:
-b 0,表示生成车辆的开始时刻为t0=0时刻;
-e 30,表示生成车辆的结束时刻为t1=30s时;
-p 1,表示生成车辆间隔为p=1s。
以上参数可以根据需要设置,生成车辆的总数n=(t1-t0)/p.
3) 生成路径文件rou.xml:

duarouter -n townGer.net.xml --route-files townGer.trips.xml -o townGer.rou.xml --ignore-errors

生成的.rou文件中没有vehicle type的内容,如下图所示:
在这里插入图片描述
使用“vehicle type=“alltypes” id”全部替换“vehicle id”,并保存。如下图所示:
在这里插入图片描述
4) 编写配置文件sumo.cfg:
新建townGer.sumo.cfg文件,并在其中输入:

<configuration>
    <input>
        <net-file value="townGer.net.xml"/>
        <route-files value="townGer.rou.xml"/>
        <additional-files value="vtd_vehicle_types.add.xml"/>
        <remote-port value="8813"/>
        <step-length value="1"/>
    </input>
</configuration>

注意将vtd_vehicle_types.add.xml文件放置到同一文件夹下。
3.3 运行
首先在终端启动sumo:

cd townGer
sumo-gui townGer.sumo.cfg

sumo gui启动,并在状态栏显示如下信息:
在这里插入图片描述

在VTD中选中对应文件并确认,如下图所示:
在这里插入图片描述

VTD的ModuleManager和sumo状态栏显示如下信息,说明连接正常:
在这里插入图片描述
依次点击VTD的运行按钮和sumo的运行按钮,开始进行仿真。

猜你喜欢

转载自blog.csdn.net/dif8911/article/details/84629939