SUMO学习笔记——ubuntu16.04下SUMO源码安装与Traci通讯例程的测试

本文详细介绍了如何在Ubuntu16.04系统下,使用源码安装SUMO及其配套工具Traci的过程,并解决了环境变量配置问题。适用于希望进行智能车辆仿真的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



         笔者近期需要运用SUMO完成关于Intelligent Vehicle仿真demo的搭建,于是需要通过Traci来与外部进行通讯。

        但是按照SUMO官网教程所指导的方法进行安装和环境配置后,Traci 通讯的例程总是报错。查阅国内外相关论坛发现有不少人遇到了同样的问题,但是没有给出适合我这个环境的方法。

        最终在查阅官方资料还有相关研究者的博客,折腾了快一周后,很神奇地跑通了。所以记录下来希望能帮助到后续进行相关工作的同学们。

        Remark:我的操作系统是 Ubuntu 16.04 , python 2.7,sumo-0.32.0(不过个人认为这些并不会有太大的影响,在操作系统都是linux的前提下)


一、 SUMO的安装方式——源码安装

        按照SUMO官方文件上运用 三句 apt-get的方法进行的安装,的确是可以安装上,但是我们会发现,sumo、tools、docs三个文件夹分别被默认地安装到了/usr/share/、/usr/share/docs、/usr/bin/这三个独立的地方,从而在按官方文档后续SUMO_HOME的配置中,就没有办法让其直接作为bin, tools,docs的上层文件的路径。虽然在terminal中输入sumo和sumo-gui时没有报错,但是在测试Traci例程 runner.py的时候就会出现报错:

[python] view plain copy
print ?
  1. ImportError:   please declare environment variable ‘SUMO_HOME’ as the root directory of your sumo installation (it should contain folders ‘bin’‘tools’ and ‘docs’)  
ImportError:   please declare environment variable 'SUMO_HOME' as the root directory of your sumo installation (it should contain folders 'bin', 'tools' and 'docs')

进过逐步调试,发现还是因为没有通过环境变量 “SUMO_HOME”找到tools文件夹,从而其中的sumolib 和 traci 库没有被import成功。然后我就开始尝试各种方法修改  ~./bashrc中的环境变量,均没有成功,最后参考官网的 binary packages 安装方法,进行相关的调整,完成了安装。

1. 如果之前运用apt-get 安装了sumo的话, 用以下语句卸载

  1. apt-get –purge remove sumo   
apt-get --purge remove sumo 

  1. apt-get –purge remove sumo-tools  
apt-get --purge remove sumo-tools
  1. apt-get –purge remove sumo-docs  
apt-get --purge remove sumo-docs

2. 点击下载SUMO文件包,我是默认下载到/home/Downloads/中

3. 解压并进入sumo文件夹,将src-<version>中的version换成自己的版本,我这里是0.32.0

  1. tar xzf sumo-src-0.32.0.tar.gz  
tar xzf sumo-src-0.32.0.tar.gz
  1. cd sumo-0.32.0/  
cd sumo-0.32.0/


4. Subversion checkout 

  1. svn co https://svn.code.sf.net/p/sumo/code/trunk/sumo   
svn co https://svn.code.sf.net/p/sumo/code/trunk/sumo 
  1. cd sumo   
cd sumo 
  1. make -f Makefile.cvs   
make -f Makefile.cvs 

5.SUMO_HOME 环境变量的配置

  1. gedit ~/.bashrc  
gedit ~/.bashrc

进入bashrc 文件进行修改,首先要知道/sumo-0.32.0/的位置,例如我的系统中它装在了home/<user>/Downloades/下,那么我的bashrc文件中要加上:


修改完毕保存退出后要通过source来使环境变量生效:

  1. source ~/.bashrc  
source ~/.bashrc

可以通过 echo SUMO_HOME 来初步检测有没有修改成功</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 580px; top: 2426px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_12" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_12" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=12&amp;width=16&amp;height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span>echo&nbsp; SUMO_HOME 来初步检测有没有修改成功</p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 580px; top: 2426px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_12" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_12" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=12&amp;width=16&amp;height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span>echo&nbsp; SUMO_HOME  

echo $SUMO_HOME</pre><p><img src="https://img-blog.youkuaiyun.com/20180209235735710" alt=""></p><p><br></p><p><strong>6.Building the SUMO binaries</strong></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 580px; top: 2663px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_13" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_13" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=13&amp;width=16&amp;height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span>./configure&nbsp;</span><span class="attribute">--prefix</span><span>=$HOME  
./configure --prefix=$HOME
  1. make  
make

make的时间会比较久,可能需要五到十分钟~


7.SUMO binaries 最终安装

  1. make install  
make install

很快就可安装完毕

8.将内层/sumo/bin/中的文件拷贝到父层/sumo-0.32.0/bin/中

这一步也是比较神奇,但是的确有用,因为在执行过第7步后,/sumo-0.32.0/中将会出现一个/sumo/的子文件夹,然后对比发现子文件夹几乎与父文件夹一模一样,只是子文件夹中/bin/比父文件夹中的/bin/要多出很多文件,父文件夹中只有两个makefile文件。将/sumo-0.32.0/sumo/bin/中的全部文件拷贝(相同名称文件替换)到/sumo-0.32.0/bin/中。

至此安装完毕,可在terminal中输入sumo或sumo-gui,测试是否有界面弹出。




二、 Traci 通讯例程的实现

        通讯例程的实现按照官网教程即可,没有太大的难度。

例程在/sumo-0.32.0/docs/tutorial/traci_tls 中,其中runner.py为核心脚本。

运用编辑器(我用的是spyder)打开runner.py并运行后,脚本会自动生成路网文件,在弹出的sumo-gui界面中点击绿色的开始模拟按钮,调整delay时间后即可看到仿真结果。




                </div>

转载地址 http://blog.youkuaiyun.com/zhixiting5325/article/details/79302244

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值