1. SUMO仿真环境搭建全攻略第一次接触SUMO仿真工具的朋友可能会觉得有点懵其实它就像我们小时候玩的积木游戏。你搭建道路网络积木轨道然后放上小车积木汽车最后看着它们跑起来。只不过SUMO把这个过程数字化了而且功能强大得多。我在Ubuntu上折腾SUMO已经两年多了从最初的磕磕绊绊到现在能熟练搭建各种复杂仿真场景。记得第一次安装时因为版本问题重装了三次浪费了整整一个下午。所以今天特别想分享这份避坑指南让你少走弯路。SUMO全称Simulation of Urban MObility是开源的交通仿真软件。它特别适合做城市交通流分析自动驾驶算法测试交通信号灯优化新型交通方案评估2. Ubuntu环境准备2.1 系统要求建议使用Ubuntu 20.04或22.04 LTS版本这两个版本我都长期使用过稳定性最好。虽然SUMO也支持其他Linux发行版但在Ubuntu上安装最省心。硬件配置方面最低配置双核CPU/4GB内存/20GB硬盘推荐配置四核CPU/8GB内存/SSD硬盘显卡要求不高集成显卡即可2.2 安装依赖库打开终端先更新软件源sudo apt update sudo apt upgrade -y然后安装必备依赖sudo apt install -y g cmake libxerces-c-dev libfox-1.6-dev \ libgdal-dev libproj-dev libgl2ps-dev swig python3-dev这里有个小技巧如果你不确定某个依赖是否已安装可以用apt list --installed | grep 包名查询。我经常用这个方法检查依赖情况。3. SUMO安装与验证3.1 官方源安装最稳妥的安装方式是通过官方PPA源sudo add-apt-repository ppa:sumo/stable sudo apt update sudo apt install sumo sumo-tools sumo-doc安装完成后验证版本sumo --version这里要特别注意版本号很多教程是基于特定版本写的。我推荐使用1.12.0或更高版本兼容性最好。如果版本不符后续操作可能会遇到各种奇怪问题。3.2 源码编译安装可选如果你想体验最新功能可以源码编译git clone --recursive https://github.com/eclipse/sumo cd sumo mkdir build cd build cmake .. make -j$(nproc) sudo make install编译过程大概需要15-30分钟取决于你的CPU性能。我第一次编译时没加-j参数单线程编译等了一个多小时...4. 创建第一个仿真场景4.1 使用netedit创建路网启动neteditnetedit你会看到图形界面。点击File→New Network我们就开始搭建第一个路网。建议使用Chain模式创建道路这样只需要点击起点和终点系统会自动连接中间节点。我刚开始不知道这个功能一个个节点手动连接累得半死。创建完基本路网后按键盘上的i键进入视察模式。这里可以查看节点ID调整节点位置检查车道属性最后别忘了保存为.net.xml文件比如helloWorld.net.xml。这个后缀名很重要SUMO靠它识别路网文件。4.2 添加车辆需求切换到Demand模式这里有几个关键步骤先创建路线Route选中一条道路设置起点和终点切换到车辆模式点那个绿色小车图标选择车辆类型默认passenger就行在路线起点放置车辆保存需求文件时要特别注意必须选择File→Demand Elements→Save Demand Elements As保存为.rou.xml文件。我第一次就选错了选项结果仿真时死活看不到车。5. 运行可视化仿真5.1 启动sumo-gui最简单的方法是直接在netedit里点击Edit→Open in sumo-gui。系统会自动加载刚才创建的.net.xml和.rou.xml文件。你也可以手动启动sumo-gui -n helloWorld.net.xml -r helloWorld.rou.xml启动后界面可能有点卡这是正常的。我的经验是第一次启动会比较慢后面就流畅了。5.2 调整仿真参数在sumo-gui界面右侧有几个重要参数可以调整Delay控制仿真速度默认100ms数值越大越慢Step点击单步执行适合调试时使用View Settings可以调整车辆显示大小、颜色等点击Start按钮就能看到小车跑起来了第一次看到自己创建的仿真场景运行那种成就感还是很棒的。6. 常见问题排查6.1 车辆不显示如果看不到车辆检查这几个地方.rou.xml文件是否保存正确车辆是否被正确放置在路线上仿真时间设置是否合理默认从0开始6.2 路网显示异常路网显示不正常通常是因为节点坐标超出范围可以重置视图车道数设置错误默认1车道版本不兼容最头疼的问题6.3 性能优化技巧仿真大规模场景时可以关闭3D视图Settings→View Settings→Disable 3D减少可视化细节View→Decals使用--no-warnings参数跳过警告提示记得第一次做复杂路口仿真时我的笔记本风扇狂转。后来发现是3D视图太耗资源关闭后流畅多了。7. 进阶准备完成HelloWorld后你可能想尝试更复杂的场景。这里推荐几个下一步学习方向交通信号灯SUMO支持精细的信号灯控制包括相位、配时等随机车流生成用randomTrips.py脚本生成随机车流导入真实地图通过OSM网站下载真实路网数据API接口用TraCI接口实现动态控制我建议新手先从简单的交叉路口开始逐步增加复杂度。一下子做太复杂的场景容易受挫。