SUMO从openStreetMap下载地图运行仿真连接NS2(代码)

1.正确安装sumo,我这里使用的是sumo-0.32.0版本,查看sumo版本的命令是sumo。

sumo

2.取openStreetMap下载osm地图文件

2.png

3.选好大致区域后,点击导出按钮,然后点击手动选择不同区域,确定选择的区域。选择好区域后点击导出按钮,浏览器自动下载osm文件
4.png

4.将下载好的osm拷贝到一个新的目录中,我这里给osm文件重命名为sanTaiZi.osm。然后从命令行cd进这个目录并执行如下命令 ,使用工具netconvert根据osm文件转化出sumo使用的路网文件。出现警告不要紧,有下面的success就好。

netconvert --osm-files sanTaiZi.osm -o sanTaiZi.net.xml 
5.png

5.cd进sumo的主目录,即环境变量里配置的SUMO_HOME里面,然后再cd进入data/typemap目录里,把这里面的osmPolyconvert.typ.xml复制到之前存放osm文件的位置。


6.png

6.cd到存放osm文件的目录。使用下面的命令,生成.poly.xml文件,注意把相应的文件名换成你自己的文件名,后缀保持一致。

polyconvert --osm-files sanTaiZi.osm --net-file sanTaiZi.net.xml --type-file osmPolyconvert.typ.xml -o sanTaiZi.poly.xml
7.png

7.使用sumo带的工具生成.rou.xml文件,命令如下:

python /home/lzx/Downloads/sumo-0.32.0/tools/randomTrips.py -n sanTaiZi.net.xml -r sanTaiZi.rou.xml -e 50 -l
8.png

8.编写sumo的配置文件,注意更换<input>标签内部的三个文件名

<configuration>
<input>
    <net-file value="sanTaiZi.net.xml"/>
    <route-files value="sanTaiZi.rou.xml"/>
    <additional-files value="sanTaiZi.poly.xml"/>
</input>
<time>
<begin value="0"/>
<end value="100"/>
<step-length value="0.1"/>
</time>
</configuration>

9.在终端使用下面的命令运行sumo-gui仿真。延迟调在100到200之间,效果比较好。

sumo-gui sanTaiZi.sumocfg
9.png

10.使用下面的命令,生成连接NS2用的配置文件。

sumo -c sanTaiZi.sumocfg --fcd-output sanTaiZi.sumo.xml

11.使用下面的命令生成ns2仿真用的脚本文件,注意sumo的根目录换成自己的。

python ~/Downloads/sumo-0.32.0/tools/traceExporter.py --fcd-input sanTaiZi.sumo.xml --ns2config-output sanTaiZi.tcl --ns2mobility-output mobility.tcl --ns2activity-output activity.tcl

12.cd进ns2的根目录,/home/lzx/Documents/ns-allinone-2.35/ns-2.35/tcl/ex,然后进入ex目录,用文本编辑器
打开simple-wireless.tcl文件,复制里面的代码到sanTaiZi.tcl里面,即上一步生成的脚本文件。


10.png

11.png

13.修改脚本文件

  • 删除opt(min-x),opt(min-y)
  • val(rp)属性改成AODV
  • 删除opt(start)和opt(stop)
  • 删除这两行
set opt(mf) $opt(config-path)
append opt(mf) /mobility.tcl
  • 把val(nn)的值改成opt(nn)的值
  • 删除这两行
set opt(af) $opt(config-path)
append opt(af) /activity.tcl
  • 更改.tr文件名,方便以后的数据分析
  • 添加nam文件
set namf [open sanTaiZi.nam w]
$ns_ namtrace-all-wireless $namf $opt(x) $opt(y)
  • 给ope(x)和opt(y)向上取整,例如4942.85改为4943
  • 把$topo load_flatgrid 500 500改成$topo load_flatgrid $opt(x) $opt(y)
  • 把-movementTrace OFF改成-movementTrace ON
  • 在第一个for循环里添加$ns_ initial_node_pos $node_($i) 20
  • 删掉对node(1)和node(0)位置设置的代码和set tcp上面的代码,添加source mobility.tcl
  • $ns_ attach-agent node_(1) $sink改成$ns_ attach-agent $node_(22) $sink
  • 把下面的150都改成100
    14.保存退出,使用下面的命令运行ns2仿真
ns sanTaiZi.tcl
12.png

15.使用下面的命令运行ns2仿真界面

nam sanTaiZi.nam

完整的ns2脚本代码

set val(chan)           Channel/WirelessChannel    ;# channel type
set val(prop)           Propagation/TwoRayGround   ;# radio-propagation model
set val(netif)          Phy/WirelessPhy            ;# network interface type
set val(mac)            Mac/802_11                 ;# MAC type
set val(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
set val(ll)             LL                         ;# link layer type
set val(ant)            Antenna/OmniAntenna        ;# antenna model
set val(ifqlen)         50                         ;# max packet in ifq
set val(nn)             45                          ;# number of mobilenodes
set val(rp)             AODV                       ;# routing protocol
set opt(x) 4943
set opt(y) 21754
# ======================================================================
# Main Program
# ======================================================================
set ns_     [new Simulator]
set tracefd     [open sanTaiZi.tr w]
$ns_ trace-all $tracefd

set namf [open sanTaiZi.nam w]
$ns_ namtrace-all-wireless $namf $opt(x) $opt(y)

# set up topography object
set topo       [new Topography]

$topo load_flatgrid $opt(x) $opt(y)

#
# Create God
#
create-god $val(nn)

#
#  Create the specified number of mobilenodes [$val(nn)] and "attach" them
#  to the channel. 
#  Here two nodes are created : node(0) and node(1)

# configure node

        $ns_ node-config -adhocRouting $val(rp) \
             -llType $val(ll) \
             -macType $val(mac) \
             -ifqType $val(ifq) \
             -ifqLen $val(ifqlen) \
             -antType $val(ant) \
             -propType $val(prop) \
             -phyType $val(netif) \
             -channelType $val(chan) \
             -topoInstance $topo \
             -agentTrace ON \
             -routerTrace ON \
             -macTrace OFF \
             -movementTrace ON          
             
    for {set i 0} {$i < $val(nn) } {incr i} {
        set node_($i) [$ns_ node]   
        $node_($i) random-motion 0      ;# disable random motion
        $ns_ initial_node_pos $node_($i) 20
    }


source mobility.tcl

set tcp [new Agent/TCP]
$tcp set class_ 2
set sink [new Agent/TCPSink]
$ns_ attach-agent $node_(0) $tcp
$ns_ attach-agent $node_(22) $sink
$ns_ connect $tcp $sink
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns_ at 10.0 "$ftp start" 

#
# Tell nodes when the simulation ends
#
for {set i 0} {$i < $val(nn) } {incr i} {
    $ns_ at 100.0 "$node_($i) reset";
}
$ns_ at 100.0 "stop"
$ns_ at 100.01 "puts \"NS EXITING...\" ; $ns_ halt"
proc stop {} {
    global ns_ tracefd
    $ns_ flush-trace
    close $tracefd
}

puts "Starting Simulation..."
$ns_ run
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,827评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,725评论 0 10
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,981评论 0 13
  • 你收到来自神灵的通知吗? 很多时候神灵就在身边,他们总是在预言后,悄悄给你提示。 所以一定要记得注意观察哦 侯马夫...
    神奇小逗阅读 1,029评论 0 0
  • LGD123阅读 240评论 0 2