sumo之使用netedit绘制路网并进行简单模拟

2023-05-16

1.基本路网的构建(十字路口)

在下载完成sumo后,bin目录下有一个可以运行的nete.exe,点击可以进入界面进行路网的编辑,编辑生成.net.xml文件。点击进去后,点击File->New Network就能开始建立自己的路网了。截图如下:

 1.1构建十字路口

在这里介绍的时候,介绍如何建立一个十字路口。刚进入的界面会有一个红色的小圆圈,用来定义结点的。在连接完四个节点后如下所示;

                                            

然后在菜单栏点击如下按钮,就可以保存并进入下一步的编辑:

为了规范一点,点击结点(即红色的区域) 可以在pos这个位置设置点的坐标,如下图:   

                                                    

这里将五个点的坐标分别设置为(0,0)(0,100)(100,0)(-100,0)(0,-100).效果如下所示:

                                    

基本框架建立以后,选中某一条边点击右键,可以进行变得操作。由于道路有两个方向,这里选择对每条边添加相反的边。操作步骤如下:

1.2 添加相反的边(双向车道)

选中某条边点击右键->edge operations->add reverse diection for edge就能添加出相反的边。重复四次以后的效果图如下:

                                   

1.3添加车道(双向六车道)

完成上述绘制以后,可以看到一个基本的十字路口,通过对单条车道的编辑,可以进行车道的扩展。编辑方法如下:选中某条车道以后,在左边的参数栏中间numLanes改为3即可得到3条车道。现在对每条车道的numLanes均改为3就可得到双向六车道的道路。效果图如下:

                          

(如果还行针对某一条车道进行参数设置,可以在edit->clicking should select edges or lanes中取消这一项,选中要修改的车道即可在左边的参数栏中进行参数修改)

1.4车道通行设置

接下来进行车道通行的设置,比如限制某条车道不可右转。

在任务栏中点击如下图所示按钮,可进行车道直接的连接设置:

 点击完成后的效果图如下:

                                 

车道上的箭头指示了车道接下来可以行驶的路线。以南北方向第六条车道为例,选中以后可得到如下的效果:

 左侧任务栏

可以看到,该车道目前可以右转可以直行可以左转。为了限制右转,可以点击东西方向第六条车道,点击以后就能变成墨绿色,然后点击参数栏的ok即可。设置完成后的效果图如下:

                         

针对黄色的限制行驶车道,如果要强行改成可以形式,则按住Ctrl键再点击即可。

1.5红绿灯及通行设置

设置完基本的十字路口后,还缺少红绿灯的设置。设置红绿灯点击任务栏的如下按钮:

然后点击十字路口的中心(即红色区域),再点击参数栏的Create即可。效果如下:

                                      

在参数栏中,可以看见红绿灯的相位:,选中某一条线(以南北方向第一车道,绿色的为例)点击右键可以看见其状态(J0_0就代表了第一个G)。可以删除相位也可以添加相位,如果要编辑,只需要跟上面一样的操作,然后改变其颜色就能改变该车道的通行状况。

例如,不允许由南向北的车辆左转,用上面的方法就能得到如下的效果图:

                                    

设置完成后点击左侧参数栏的Save,至此基本的十字路口设置完成。

按住Ctrl+S就能保存设置好的路网,文件后缀为.net.xml。保存后可以通过上一篇文章介绍的方法打开路网进行查看。

在sumo-gui.exe中打开路网的效果如下图:

                   

可以看到刚才的设置效果:由南向北的车辆禁止左转。

2.对路网进行交通模拟

在基本的十字路口编辑完成以后,进行简单的道路模拟。

模拟出一辆车从某一条边(即道路)运动到另一条边需要知道在路网中边的编号。下面模拟的是一辆车由东向西运动然后右转进入由北向南运动。

此时需要知道进过的边的编号,在netedit中,点击边即可在左侧的参数栏中查看编号,我模拟的两条编号分别是E1和E0。

                           

然后开始编写车流文件.rou.xml。这里命名为cross_road_2.rou.xml键入如下代码:

<routes>
	<vType id="myType" vClass="taxi" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="50" callFollowMode="IDM"
		actionStepLength="1" tau="1.4" laneChangeModel="SL2015"/>
	<vehicle id="00" tpye="myType" depart="2" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="E1  E0"/>  </vehicle>
</routes>

 在代码段中,<vType>部分是车辆的一下参数,包括加速度、初速度等;<vehicle>部分就是定义的第一辆小车,id为“00”,depart表示进入的时间 departLane表示进入的车道等等。<route edges >定义的就是车辆行走的路线,前面以及得到了车辆走过边的编号。如果需要模拟多辆汽车,只要复制<vehicle>部分即可,id不能相同,depart即进入的时间只能往上增加。

在完成车辆的路由文件以后,还需要完成.sumocfg文件的编写。这里将其命名为cross_road_2.sumocfg。在文件中键入一下代码:

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

代码中 道路文件cross_road_2.net.xml和车辆路由文件cross_road_2.rou.xml需要根据读者实际情况进行修改。<time>部分定义了仿真开始和结束的时间。

在都编写完成以后,按照上一篇文章介绍的方法就能完成仿真。仿真的效果图如下所示:

1.小车进入并正常形式:

2.走到十字路口等待红绿灯:

 3.完成转弯继续正常形式:

为了模拟多台车辆的运动效果,修改cross_road_2.rou.xml代码后如下所示:                    (其它代码不变)

<routes>
	<vType id="myType" vClass="taxi" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="50" callFollowMode="IDM"
		actionStepLength="1" tau="1.4" laneChangeModel="SL2015"/>
	<vehicle id="00" tpye="myType" depart="2" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="E1  E0"/>  </vehicle>
	<vehicle id="01" tpye="myType" depart="3" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="E1  -E2"/>  </vehicle>
	<vehicle id="02" tpye="myType" depart="4" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="E2  E0"/>  </vehicle>
	<vehicle id="03" tpye="myType" depart="5" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="E3  -E2"/>  </vehicle>
	<vehicle id="04" tpye="myType" depart="6" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
		depardSpeed="20"> <route edges="-E0  -E3"/>  </vehicle>
</routes>

效果图如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sumo之使用netedit绘制路网并进行简单模拟 的相关文章

  • 四旋翼无人机数学模型推导

    本周开始进行四旋翼无人机的学习工作 xff0c 首先来进行四旋翼无人机的数学模型推导工作 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前 xff0c 首先引入坐标变换的概念 xff0c 定义两个坐标系惯性坐标系 E xff0c 以及
  • NVIDIA Jetson Xavier NX 计算GPIO编号

    NVIDIA Jetson Xavier NX 计算GPIO编号 前言准备工作计算步骤计算示例注意 xff1a 附件 xff1a tegra gpio h参考链接 前言 公司产品使用了自主设计的载板 xff0c 需要使用指定的GPIO引脚
  • 深度学习人脸表情识别中,需要比较数据集中的文件名和train_list.txt中的文件名是否相一致的java代码实现

    如下图所示 xff0c 现有一个人脸表情数据集RAF DB xff0c 其train文件中的每一个图片的文件名称为 train 00001 aligned jpg 另外 xff0c 有train list txt文件标记了上图文件夹每一张数
  • git拉取后,代码被覆盖怎么办?

    1 File gt Local History gt Show History 2 右击 xff0c Revert找回本地历史版本
  • 【面试】C/C++面试宝典一

    1 const 修饰变量 xff0c 说明该变量不可以被改变 xff1b 修饰指针 xff0c 分为指向常量的指针 xff08 pointer to const xff09 和自身是常量的指针 xff08 常量指针 xff0c const
  • Docker安装Xfce桌面环境(轻量可视化操作系统)

    0 Xfce是什么 xff1f Xfce是一个适用于类UNIX操作系统的轻量级桌面环境 它的目标是快速而低廉的系统资源 xff0c 同时仍然具有视觉吸引力和用户友好性 具体参考官网 https www xfce org 项目地址 xff1a
  • Linux系统常用快捷键及VNC基本使用命令

    Linux系统常用快捷键及VNC基本使用命令 文章目录 Linux系统常用快捷键及VNC基本使用命令Linux系统的特点Linux树型目录结构Linux系统常用命令VNC常用命令 Linux系统的特点 多任务系统 在linux系统中可以同时
  • 【docker】docker学习(3)——Dockerfile的常用语法和编写实战

    大家好 xff0c 我是好学的小师弟 xff0c 今天和大家分享下Dockerfile的常用语法和编写实战 插曲 xff1a 在学习Dockerfile之前 xff0c 我们先讲解下docker save 和docker load 这两个命
  • 1.2 安装 docker 容器并配置镜像加速器

    1 2 1 实验环境准备 实验环境 xff1a CENTOS7 9 64 位 主机名 xff1a hou 主机 ip 10 0 8 120 xff08 这个 ip 大家可以根据自己所在环境去配置 xff0c 配置成静态 IP xff09 4
  • 弯管参数计算及编程实现

    船舶软件建立三维管道模型后 xff0c 需要自动生成管子加工信息 xff0c 这样就提高了设计效率 其中弯管参数主要是下料长度 xff0c 弯角和转角 下料长度是由各管段实长 xff0c 即管子中心线长度 xff0c 减去弯管部分切线长再加
  • 完整版数据库系统概论(第五版)-课后答案-免费网盘自提

    包含全部的课后答案与复习笔记 xff01 大家伙不挂科不被刷 xff0c 一起冲 xff01 虽然这个我也是找的别人的 xff0c 但是真的好用 xff01 百度网盘 https pan baidu com s 1Ux07PWvPb k3l
  • 踩坑笔记:安装Gazebo11

    安装环境 xff1a ubuntu18 04 在我上一篇博客中 xff0c 我们安装了ROS Melodic amp amp Ros2 Dashing 在我想要安装Gazebo11时候出现了错误 一 依赖错误 安装Gazebo11 xff1
  • 在keil5中调试串口遇到的问题

    1 问题 在keil5中调试stm32串口实验时 xff0c 向单片机的串口1发送数据 xff0c 观察串口1的寄存器 xff0c 此时串口1的中断服务函数会遇到无法进入下图if 的情况 xff0c 此时观察串口1寄存器 RXEN 的值 由
  • 树莓派在上电后一直重启进入不了系统桌面

    问题描述 树莓派在上电后一直重启进入不了系统桌面 xff0c 在检查了各种接口没问题后解决办法 原因分析与解决方案 xff1a 用了键盘 鼠标 显示器后5v 1A的插头不行 xff0c 换了ipad用的5V 2A的充电器后就可以开启了 xf
  • 树莓派连接“手机热点“或“WiFi“ 后无法上网,以及连接“手机热点“或“WiFi“时VNC连接失败问题

    问题描述 之前一直在开热点 xff0c 通过电脑端VNC控制树莓派拍摄照片 xff0c 今天突然发现树莓派上不去网 xff0c 所以就试着尝试解决了一下 xff0c 心路历程如下 xff1a 要么就是树莓派连不上网 xff0c 要么就是连上
  • 相机标定和双目相机标定标定原理推导及效果展示

    文章目录 前言一 相机标定1 相机的四个坐标系2 相机的畸变 二 张正友标定法1 求解内参矩阵与外参矩阵的积2 求解内参矩阵3 求解外参矩阵4 标定相机的畸变参数5 双目标定6 极线矫正 xff08 立体校正 xff09 三 视差图与深度图
  • keras:tensor从全连接层输出到卷积层

    一 tensor从卷积层输出到全连接层 用过keras的都知道 xff0c 想从卷积层输出tensor到全连接层 xff0c 只需加一层 xff1a model add Flatten shape就不会出现错误 二 但是如果从全连接层输出t
  • 保研面试复习之数据结构篇

    数据项 数据元素和数据结构的概念 数据项是组成数据元素的 xff0c 有独立含义的 xff0c 不可分割的最小单位 数据元素是数据的基本单位 数据结构是带结构的数据元素的集合 数据结构包括逻辑结构和存储结构两个层次 数据结构的三要素是逻辑结
  • 视觉里程计的重定位问题1——SVO的重定位部分

    SVO的重定位部分代码解析与分析 SVO的重定位功能体现在 xff1a 运动跟踪丢失后通过与上一关键帧匹配以及地图点投影 xff0c 找回当前相机位姿 由于没有后端和回环 xff0c SVO的重定位并不是回环校正后的重定位 代码部分被放在运
  • 组合导航(一):定位技术分类与介绍

    组合导航 xff08 一 xff09 xff1a 导航定位技术分类与介绍 一 定位技术分类1 1 基于相对测量的定位 xff08 航位推算 xff09 1 2 基于绝对测量的定位1 3 组合定位 一 定位技术分类 1 1 基于相对测量的定位

随机推荐

  • git bash可以正常commit,但是 VSCode 里不能正常commit使用的解决方法

    问题描述 同一路径下的源码 xff0c 使用git bash可以正常commit xff0c 但是使用vscode提交commit就会一直卡住 xff0c 转圈圈 参考方案链接 xff1a VS CODE GIT 500 问题处理 pudn
  • 组合导航(四):惯性导航系统

    1 惯性导航系统的物理平台2 惯性测量单元IMU3 惯性传感器的测量值3 1静止状态下的加速度测量3 2静止与运动状态下的角速度测量 4 惯性传感器误差4 1 系统误差 xff08 可通过实验进行校正 xff09 4 2 随机误差4 3 惯
  • 组合导航(七):卡尔曼滤波

    Kalman滤波1 离散卡尔曼滤波2 卡尔曼滤波的流程2 1 预测与时间更新2 2 测量更新与校正 3 卡尔曼滤波 算法步骤4 非线性卡尔曼滤波4 1 线性化kalman滤波4 2 扩展kalman滤波 5 卡尔曼滤波发散控制5 1 KF过
  • 组合导航(八):INS/GPS组合导航

    INS GPS组合导航1 误差反馈1 1 开环INS GPS架构1 2 闭环INS GPS架构 2 组合导航的类型2 1 松耦合 的INS GPS组合导航2 2 紧耦合 的INS GPS组合导航2 3 深度耦合的 INS GPS组合导航 3
  • 组合导航(九):三维简化的INS/GPS组合导航系统

    简化INS与GPS组合系统在三维路面上的导航1 MEMS级IMU的三维定位的性能分析2 解决MEMS级IMU在路面导航中存在的问题3 三维简化的惯性传感器系统3 1 3D RISS概述3 2 xff08 轮式车辆 xff09 采用3D RI
  • PX4安装与编译

    第一步 xff1a 下载源码 下载方式一 xff1a git clone https github com PX4 Firmware git recursive 默认下载版本为master 下载时间比较长 xff0c 包含各种包以及依赖工具
  • PX4:【系统架构】

    PX4系统架构 由两个层组成 xff1a 一是飞行控制栈 xff08 flight stack xff09 二是中间件 xff08 middleware xff09 flight stack xff1a 集成了各种自主无人机的制导 导航以及
  • PX4:【uORB通讯机制】

    uORB xff1a Micro Object Request Broker PX4进程间的通讯机制 xff1a 多对多的信息发布与订阅方式 发布消息 xff1a 1 公告 advertise xff1a 相当于初始化 xff0c 在发布消
  • PX4:【传感器校准】

    sensor的校准校准步骤 xff1a 文件目录 xff1a 代码入口 xff1a 求解模型计算公式 sensor的校准 校准步骤 xff1a 首先通过地面站QGC进行校准 xff0c QGC将校准参数设置到sh文件中 此后再基于QGC的校
  • PX4:【sensor_combined】

    功能介绍消息内容sensor combined 产生机制 amp 代码流程 功能介绍 sensor combined 是一个冗余传感器集合的消息 xff0c 通过订阅多个传感器的数据 xff0c 将冗余的数据经过VoteSensorsUpd
  • PX4:【地面站传感器数据校准】

    上电 gt rsC 运行 sensor start commander start 入口函数 xff1a 位于commander文件夹中 Commader cpp Commander run xff08 xff09 commander lo
  • Windows和Linux双系统安装教程

    最近刚刚完成了Windows和Linux双系统 xff08 这里以Ubuntu安装为例 xff09 的安装 xff0c 应某奔同学要求 xff0c 这里简单记录下安装过程 系统启动盘准备Windows系统安装分出给Linux系统的磁盘空间安
  • MSCKF系列论文阅读与代码流程

    MSCKF原理与代码总结 算法原理前端理论 xff08 图像的特征提取与跟踪 xff09 后端理论 xff08 误差状态卡尔曼滤波模型 xff09 1 IMU状态预测1 1 IMU状态传播 xff08 p v q 4阶Runge Kutta
  • open_vins(二):rosbag精度测试

    一 xff0e ros读取与轨迹保存二 xff0e euroc数据集测试三 结论 一 xff0e ros读取与轨迹保存 运行open vins launch 读取ros数据包 xff1a roslaunch pgeneva ros eth
  • open_vins(三):imu静止初始化

    一 xff0e 静止初始化原理二 xff0e 理论公式三 xff0e 相关代码四 xff0e 小结 xff1a 初始化是指在系统启动阶段 xff0c 需要估计重力方向 gravity direction 加速度计以及陀螺仪biases ac
  • ros数据集录制:rosbag record

    1 查看话题 查看topic列表 xff1a rostopic list 打印topic内容 xff1a rostopic echo topic xff12 话题录制rosbag record 用于在ros系统中录取系统中其他ros节点发出
  • git pull的时候:您对下列文件的本地修改将被合并操作覆盖,请在合并前提交或贮藏您的修改。 正在终止

    使用git pull的时候报错 xff1a 更新 span class token number 008728 span e span class token punctuation span span class token number
  • 使用webpack-dev-server自动打包并实现debug调试

    webpack dev server 是一个开发服务器 xff0c 它的功能就是可以实现热加载 xff0c 并且自动刷新浏览器 准备工作 xff1a 创建一个程序目录test xff0c 将html页面拷贝进来 xff0c 在目录下新建sr
  • ROS实现串口GPS数据的解析与通信

    1 配置串口 配置串口时 xff0c 利用ROS自带的serial功能包进行串口数据的读取 xff0c 具体来说就是创建一个串口对象 xff0c 用成员函数read进行读取 xff0c 需要注意的是其中Timeout的设置以及read在调用
  • sumo之使用netedit绘制路网并进行简单模拟

    1 基本路网的构建 xff08 十字路口 xff09 在下载完成sumo后 xff0c bin目录下有一个可以运行的nete exe xff0c 点击可以进入界面进行路网的编辑 xff0c 编辑生成 net xml文件 点击进去后 xff0