Veins教程01 - SUMO & OMNet++ & Veins
学业需要,笔者从零开始学习车联网相关知识。教授指定使用Veins作为仿真平台,这个平台的资料是真的少,于是笔者一边学习一边记录,希望对你有帮助。
SUMO & OMNet++ & Veins
使用Veins必然离不开SUMO和OMNet++,笔者首先来介绍以下三者的功能及关系。
SUMO
SUMO(Simulation of Urban MObility) 用于对交通系统建模,包括道路,车辆,公共交通,行人等等;也就是构建道路系统。SUMO本身可以进行仿真,主要针对交通流量,但是不能有车联网信息交流。
OMNet++
OMNNet++是一个基于C++的仿真库/框架。同时,OMNet++提供基于Eclipse的IDE和图形化运行环境,并支持其他工具,因此被广泛用作仿真平台。OMNet++主攻信息传递,比如网络数据包等。
Veins
Veins是基于OMNet++的仿真框架,给使用者一个预制的无线通信模板(基于802.11p)对车联网进行仿真。同时由于需要对车流进行仿真,因此需要于SUMO通信,来传输车流和建筑相关的仿真数据。
Relations
三者关系如图所示。Veins是主体,通过操作预制的sumo-launchd.py
Python脚本与SUMO通信:本质上SUMO作为服务器通过TraCI提供TCP通信API,而Veins作为客户端,操作Python脚本与SUMO通信。Veins通过OMNet++创建的车辆实例会不断通过TraCI由SUMO仿真后回传显示。
Installation
说到这里可能还是没有太多感受,没关系,先下载安装,跑一下例子吧。
Vitual Machine
Veins推荐使用预制虚拟机,下载地址及教程
On Linux
如果跟我一样想手动安装,Linux为Veins推荐平台;推荐使用Ubuntu
Install SUMO
1 | sudo add-apt-repository ppa:sumo/stable |
可以通过 dpkg -L sumo
获取sumo的安装目录
Install OMNet++
Install Required Packages
1 | sudo apt-get install build-essential gcc g++ bison flex perl tcl-dev tk-dev blt libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0-0 openmpi-bin libopenmpi-dev libpcap-dev autoconf automake libtool libproj-dev libgdal1-dev libfox-1.6-dev libxerces-c-dev qt4-dev-tools |
Install OMNet++
切换到想要放置的目录,比如 cd ~/Downloads
下载OMNet++,版本目录 wget https://github.com/omnetpp/omnetpp/releases/download/omnetpp-5.6.2/omnetpp-5.6.2-src-linux.tgz
解压 tar xzf omnetpp-5.6.2-src-linux.tgz
切换到OMNet++目录 cd omnetpp-5.6.2
配置 ./configure
编译 make
按照上一命令的输出(结尾),先打开环境变量配置文件~/.bashrc
,然后添加工作目录到PATH,比如
export PATH=$PATH:/home/YOUR_USER_NAME/Downloads/omnetpp-5.6.2/bin
重开Terminal或者刷新环境变量 source ~/.bashrc
启动OMNet++ omnet++
Download Veins
切换到想要放置的目录,比如 cd ~/Downloads
下载Veins,版本目录 wget https://veins.car2x.org/download/veins-5.0.zip
解压 unzip veins-5.0.zip
连接Veins和SUMO,请替换Veins目录以及SUMO命令位置(可以通过which sumo
),比如
~/Downloads/veins-5.0/sumo-launchd.py -vv -c /usr/bin/sumo
为方便之后使用,可以为以上命令添加alias,打开~/.bashrc
,比如nano ~/.bashrc
然后在适当位置(系统定义的alias附近或者文件最后)添加自己的alias,请替换Veins目录以及SUMO命令位置,比如
alias veins='python /home/YOUR_USER_NAME/Downloads/veins-veins-5.0/sumo-launchd.py -vv -c /usr/bin/sumo'
On Windows
TBD
On MacOS
TBD