Ubuntu 16.04系统中SUMO安装方法及简单示例

本文介绍SUMO交通模拟软件的安装方法及一个简单示例。SUMO是一款开源、微观、多模态交通仿真模拟软件。文章首先详细说明了如何在Linux环境下安装SUMO,并展示了如何创建一个基本的交通网络。

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

SUMO全称Simulation of Urban Mobility,是一个开源、微观、多模态交通仿真模拟软件,可用于解决大的交通管理问题。本文简介该软件的安装方法及简单示例。

一、安装方法

安装方法非常简单,只要确保网络畅通,使用如下命令即可:

sudo add-apt-repository ppa:sumo/stable
sudo apt-get update
sudo apt-get install sumo sumo-tools sumo-doc

本文写作之日(2018年8月10日)安装的版本是0.32.0,可以使用命令sumo -V查看。
程序安装完毕后,直接在命令行终端中输入sumo(纯命令行)或sumo-gui(带图形化界面),即可打开该程序。
为避免运行程序时出现如下警告:

 Warning: Environment variable SUMO_HOME is not set, schema resolution will use slow website lookups.

需要使用如下命令编辑配置文件,导出环境变量SUMO_HOME

 vi ~/.bashrc
 source ~/.bashrc

在文件最后一行增加:

 export SUMO_HOME=/usr/share/sumo

二、简单示例

示例教程默认位于/usr/share/doc/sumo-doc/tutorial目录,如果通过其他方法安装,位置不一定与此相同,可以借助如下命令查找:

sudo find / -name sumo-doc

下面介绍一个简单示例:Hello,若采用默认安装方式,则数据位于/usr/share/doc/sumo-doc/tutorial/hello目录。
在SUMO中,街道网络由节点(交汇点)和边(连接交汇点的街道)组成。 因此,如果需要创建一个具有两条街道的网络,彼此相继,我们需要三个节点和两条边,因为若只包含一条边,则路线是唯一的,也就不成为一个网络了。

2.1 节点(Node)

所有节点包含一个ID及位置(即笛卡尔坐标系下的x和y坐标,用于描述与原点的距离,以米为单位)属性。一个简单的节点文件如下所示:

<nodes>
    <node id="1" x="-250.0" y="0.0" />
    <node id="2" x="+250.0" y="0.0" />
    <node id="3" x="+251.0" y="0.0" />
</nodes>

可以使用任何一种文本编辑器进行编辑(我一般使用vi编写配置文件,使用VSCode编写代码文件),只要将其保存成后缀为.nod.xml的文件即可。这里我们将其保存为hello.nod.xml

2.2 边(Edge)

节点需要用边来连接。 对于一个有向节点,很自然地能想到,需要一个ID源节点ID以及目标节点ID,具体格式如下 所示:

<edges>
    <edge from="1" id="1to2" to="2" />
    <edge from="2" id="out" to="3" />
</edges>

将此数据保存到名为hello.edg.xml的文件中。
现在我们已经创建了两个节点和一条边,于是可以调用SUMO包中的一个工具netconvert来创建网络。
进入节点和边文件所在的目录,使用如下命令创建名为hello.net.xml的网络。

netconvert --node-files=hello.nod.xml --edge-files=hello.edg.xml --output-file=hello.net.xml

2.3 路线(Route)

现在我已经建好最简单的一张交通网络,接下来还需要一辆车。在SUMO中,车辆的基本属性包括:长度、加速度、减速度以及最大速度。此外还需要一个所谓的sigma参数,用于引入一些随机行为(类似于信号中的噪声),将该值设置为0能得到一辆完美控制的汽车(现实中不存在这样的车辆)。
现在为我们的汽车定义一条路线,目前这条线路非常简单,它只包含我们定义的两条边1to2以及out
最后还需定义车辆的驾驶情况,例如:车辆从哪个节点出发,行驶路线怎样,如文件hello.rou.xml所示:

<routes>
    <vType accel="1.0" decel="5.0" id="Car" length="2.0" maxSpeed="100.0" sigma="0.0" />
    <route id="route0" edges="1to2 out"/>
    <vehicle depart="1" id="veh0" route="route0" type="Car" />
</routes>

2.4 配置

现在我们将上述信息全部写到一个名为hello.sumocfg的配置文件中:

<configuration>
    <input>
        <net-file value="hello.net.xml"/>
        <route-files value="hello.rou.xml"/>
    </input>
    <time>
        <begin value="0"/>
        <end value="10000"/>
    </time>
</configuration>

2.5 在模拟器中运行配置

使用如下命令在SUMO模拟器中运行(不带图形化显示):

sumo -c hello.sumocfg

带图形化显示的命令如下:

sumo-gui -c hello.sumocfg

使用GUI进行模拟时,在配置文件hello.sumocfg中添加一个额外的配置项gui-settings非常有用,这样就无需在启动程序后更改设置:

<configuration>
    <input>
        <net-file value="hello.net.xml"/>
        <route-files value="hello.rou.xml"/>
        <gui-settings-file value="hello.settings.xml"/>
    </input>
    <time>
        <begin value="0"/>
        <end value="10000"/>
    </time>
</configuration>

配置项gui-settings中包含的文件hello.settings.xml内容如下所示:

<viewsettings>
    <viewport y="0" x="250" zoom="100"/>
    <delay value="100"/>
</viewsettings>

这里我们使用视口(viewport)来设置摄像头位置,使用延迟(delay)来设置每个步骤之间的模拟延迟(以ms为单位)。
在GUI中的界面如下,因为示例太简单,实在没有什么好看的效果:
1

<think>好的,我现在需要帮助用户解决在Ubuntu 16.04终端中切换到指定目录的问题。首先,用户的问题很明确,他们想知道如何使用cd命令切换目录。我得确保回答结构清晰,按照系统级指令的要求,使用中文,正确应用LaTeX格式,并生成相关问题。 首先,回忆cd命令的基本用法。用户可能对终端操作不太熟悉,所以需要从基础讲起。比如,使用绝对路径和相对路径的区别。绝对路径是从根目录开始的完整路径,比如$cd /usr/local/bin$,而相对路径是相对于当前目录的位置,比如$cd Documents$。需要明确说明这两种方法,并给出例子。 接下来,可能需要提到一些特殊符号,比如~代表用户主目录,.表示当前目录,..表示上级目录。例如,$cd ~/Downloads$可以切换到Downloads目录,$cd ..$返回上一级。这些是常用的技巧,用户可能会用到。 另外,用户可能遇到路径中有空格的情况,这时候需要用引号或者转义符来处理。比如路径是“My Documents”,应该写成$cd "My Documents"$或者$cd My\ Documents$。这也是常见的问题点,需要提醒用户注意。 然后,需要检查用户提供的引用内容是否有相关部分。查看引用[1]是关于安装.deb文件的命令,引用[2]是系统日志,引用[3]涉及SUMO安装,引用[4]是系统不支持的问题,引用[5]是虚拟环境和Django安装。看起来这些引用中没有直接关于cd命令的信息,所以可能不需要引用这些内容。但根据系统指令,引用的段落末尾需要自然添加引用标识,所以可能需要确认是否有相关部分被遗漏,但根据当前信息,可能不需要引用。 接下来,确保按照用户的要求生成相关问题。比如,如何查看当前目录,如何创建目录,如何处理带空格的目录名,以及如何快速返回主目录。这些都是和目录操作相关的问题,能够帮助用户进一步学习。 最后,检查LaTeX格式是否正确,所有的行内数学表达式都用$...$,例如路径中的例子。独立公式这里可能用不上,但如果有的话需要用$$...$$。另外,回答的结构要分步骤,清晰易懂,避免使用专业术语过多,保持口语化但准确。 总结步骤: 1. 介绍cd命令的基本用法,绝对路径和相对路径。 2. 举例说明不同情况下的命令写法。 3. 处理路径中的空格问题。 4. 常见问题解答,如返回上级目录,快速切换主目录。 5. 生成相关问题,帮助用户扩展知识。 确保每个部分都简洁明了,用户能够一步步跟随操作,同时符合系统级指令的所有要求。</think>### 如何在Ubuntu 16.04终端中切换到指定目录? 在Ubuntu终端中,使用 `cd` 命令可以切换目录。以下是具体步骤: #### 1. **基本语法** ```bash cd 目标目录路径 ``` - **绝对路径**:从根目录 `/` 开始的完整路径,例如切换到 `/usr/local/bin`: ```bash cd /usr/local/bin ``` - **相对路径**:相对于当前目录的路径,例如当前目录为 `/home/user`,要进入子目录 `Documents`: ```bash cd Documents ``` #### 2. **特殊符号** - `~` 表示用户主目录(如 `/home/用户名`): ```bash cd ~/Downloads # 切换到主目录下的Downloads文件夹 ``` - `.` 表示当前目录,`..` 表示上级目录: ```bash cd .. # 返回上一级目录 ``` #### 3. **处理带空格的目录名** 若目录名包含空格,需用引号包裹路径或用反斜杠转义: ```bash cd "My Documents" # 使用引号 cd My\ Documents # 使用转义符 ``` #### 4. **验证当前目录** 切换后,可通过 `pwd` 命令查看当前目录: ```bash pwd ``` #### 示例 - 切换到 `/var/log`(需要权限时可用 `sudo -i` 切换为 root): ```bash cd /var/log ``` - 返回主目录: ```bash cd ~ ``` ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值