SUMO与python联合仿真(跟驰与换道)

这篇具有很好参考价值的文章主要介绍了SUMO与python联合仿真(跟驰与换道)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这几天做了几个sumo与python联合仿真的实验,虽然设计的场景相对来说不是很复杂,但是我觉得挺有收获的,期间也经历了很多大大的坑,下面来分享一下。

问题1:在sumo与python联合仿真时,配置环境变量

sumo跟驰模型,python,开发语言

(%E5%A4%A7%E5%9D%91%E6%80%BB%E7%BB%93.assets/1686476392225.png)

点开之后设置三部分

sumo跟驰模型,python,开发语言

然后是用户变量中设置SUMO_HOME

sumo跟驰模型,python,开发语言

然后是用户变量中设置SUMO_HOME,接着系统变量中同样进行上述设置。如果还是不能联合仿真的话,就应该是sumo版本的问题,我之前用的版本很老很老,但是换了一个最新的之后就可以了。

问题2:在选择跟驰和换道时遇到的坑

首先我是擦考虑知乎上,设置两个车辆,均做匀速运动,前车比后车的速度要小,这种情况应该是后车一段时间后应与前车追尾,但是通过仿真发现,后车会自动环道,因此车辆自带跟驰模型与换道模型,关闭两模型换道的代码为:

        traci.vehicle.setLaneChangeMode("vehicle_1", 0b000000000000)
        traci.vehicle.setLaneChangeMode("vehicle_2", 0b000000000000)

要注意的是,他这个代码是关闭自动换道和跟驰的,因此在设置强制换道时,该操作不受影响。

如果要调整回来,把所有0改为1即可,0b指的是二进制,详细每一位所代表的意义见

https://sumo.dlr.de/docs/TraCI/Change_Vehicle_State.html

sumo跟驰模型,python,开发语言

sumo跟驰模型,python,开发语言

问题3:碰撞时可选择碰撞后的模式

加入

<processing>
    <collision.action value="warn"/>
</processing>

此时sumocfg为

<?xml version="1.0" encoding="UTF-8"?>
​
<configuration>
​
    <input>
        <net-file value="test.net.xml"/>
        <route-files value="test.rou.xml"/>
    </input>
​
    <time>
        <begin value="0"/>
        <end value="10000"/>
    </time>
    <processing>
        <collision.action value="warn"/>
    </processing>
    <gui_only>
                <start value="t"/>
        <quit-on-end value="t"/>
    </gui_only>
</configuration>
​

碰撞模式可以选择四种,其中warn是常见的,它可以在右下角提醒你什么时间撞了车。但是如何撞车后立即停下不是很懂(待探索)

sumo跟驰模型,python,开发语言

问题4:改变状态函数-set acceleration

因为我的一个场景是需要均匀减速的,但是我用这个函数时出了问题,他是比如我设置了-2的减速度,他不会立即以这个减速度减速,而是减速度慢慢减至-2,如我设置在仿真20s时减速。

sumo跟驰模型,python,开发语言

此时开始仿真,

sumo跟驰模型,python,开发语言

sumo跟驰模型,python,开发语言

这个时候可以通过每一秒设置一个速度来解决-setspeed

sumo跟驰模型,python,开发语言

但是要注意在车辆类型设置的时候,最小减速度一定要小于等于-1。

问题5:将获取的动态数据进行处理的方法,大家可以参考一下

simulation_time = traci.simulation.getTime()
        print("仿真时间是", simulation_time)
        all_vehicle_id = traci.vehicle.getIDList()
        print("车辆ID是", all_vehicle_id)
        all_vehicle_position = [(i, traci.vehicle.getPosition(i)[0]) for i in all_vehicle_id]
        print("车辆位置是", all_vehicle_position)
        front_spd = traci.vehicle.getSpeed('vehicle_1')
        front_acc = traci.vehicle.getAcceleration('vehicle_1')
        print("前车速度是" + str(front_spd) + " 前车加速度是" + str(front_acc))
        follower_spd = traci.vehicle.getSpeed('vehicle_2')
        follower_acc = traci.vehicle.getAcceleration('vehicle_2')
        print("后车速度是" + str(follower_spd) + " 后车加速度是" + str(follower_acc))
            # 装在记事本里
        operate_time.append(simulation_time)
        follow_v.append(follower_spd)
        follow_accel.append(follower_acc)
        follow_position.append(traci.vehicle.getPosition('vehicle_2')[0])
        front_v.append(front_spd)
        front_accel.append(front_acc)
        front_position.append(traci.vehicle.getPosition('vehicle_1')[0])
        #        traci.vehicle.setSpeed('a12.5',10)
        #        print(traci.vehicle.getIDList())
        #        print(traci.edge.getIDList())
        #        print(traci.inductionloop.getVehicleData('abcd'))
    all_value = np.vstack((operate_time, follow_v, follow_accel, follow_position, front_v, front_accel, front_position))
    all_value1 = pd.DataFrame(all_value)
    # all_value1.to_csv(r'D:\桌面\value.csv')

问题6:关于traci模块的添加

参考

https://blog.csdn.net/weixin_53925257/article/details/126260618

问题7:改变运动状态时设置的时间

这个对于我来说,是一个非常像解决的问题,比如我想要让其在仿真时间为20s时开始减速,这时应该当step=19时设置这一函数,其次是车辆类型depart参数时,depart表示进入仿真的时间,这个时间如果设置为0时,则出现在仿真场景中的仿真时间是1s

总结:仅仅是做了一些简单的仿真,如果上边的问题给你带来了帮助,麻烦给个赞谢谢啦,有其他问题可以私聊互相讨论文章来源地址https://www.toymoban.com/news/detail-745179.html

到了这里,关于SUMO与python联合仿真(跟驰与换道)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • sumo检测器设置及输出(E1,E2,E3)

    操作步骤:新建Ex_info.xml→编辑sumocfg→运行sumocfg本文同时新增三种检测器,其中sumocfg文件内容如下: 运行sumocfg后可以观察检测器布设情况    下面介绍三种检测器具体布设情况:  一、线圈检测器(单点) 1.检测内容 流量、占有率、时间平均速度、空间平均速度、车辆平

    2024年02月08日
    浏览(78)
  • SUMO 创建带有停车位的充电站 在停车位上充电

    SUMO提供的Charging Station是没有停车位的,车辆只有在通过充电站区域或者停在充电站区域内时才能被充电,这时充电的车辆就会占用道路。然而,真实世界中的情况通常是充电站设在路边,且提供一定量的车位用于停车,而不会占用道路。下面介绍创建这种带有停车位的充电

    2024年02月12日
    浏览(40)
  • 基于sumo实现交通的拥堵预测和路径动态规划 基于机器学习或者深度学习方法动态预测各路段的拥堵指数

    基于sumo实现交通的拥堵预测和路径动态规划 实现思路: 1、基于机器学习或者深度学习方法动态预测各路段的拥堵指数。 2、采用A* Dijkstra实现车辆的路径实时动态规划 基于sumo实现交通的拥堵预测和路径动态规划 随着城市化进程的加速以及交通运输工具的不断普及,城市交

    2024年04月17日
    浏览(41)
  • 脚本化Questasim/Modelsim自动仿真——脱离联合仿真

    目录 引言 脚本仿真步骤分析 完整的脚本代码 保姆级使用教程 扩展 之前对于工程一直采用的是vivado+questasim联合仿真的模式,对于大型工程来说这个是合适的,因为需要调用一些ip库和包括约束之类的,vivado的图形化界面做的很完善,基本是一站式服务了;而对于一个小dem

    2024年02月10日
    浏览(41)
  • 【安路FPGA】联合modelsim仿真

    第一在modelsim安装目录下新建一个文件夹Anlogic用来存放TD库文件: 打开modelsim仿真软件,feil→change Directory,选择刚才新建文件目录,在新建一个Library库如图所示: TD库文件al与common是必须要添加的两个库,我的芯片是ph1系列所以添加ph1 在去到这个路径会发现多了三个文件夹,在

    2024年02月08日
    浏览(48)
  • C和SystemVerilog联合仿真

    想要联合仿真一个c程序和verilog表示的硬件,可以用如下方法(DPI): 先写一个.c文件 funcs.c 再写一个SystemVerilog文件 运行 即可 参考: https://stackoverflow.com/questions/26861400/systemverilog-how-to-connect-c-function-using-dpi-call-in-vcs-simulator

    2024年02月10日
    浏览(38)
  • Quartus联合 ModelSim仿真及测试

    插件系列文章目录: (1)modelsim安装使用及Vivado关联 (2)VSCode关联VIVADO编辑Verilog (3)Modelsim观察波形–基础操作述 (4)Quartus联合 ModelSim仿真及测试 Quartus联合 ModelSim仿真及测试 提示:以下是本篇文章正文内容,下面案例可供参考 [Quartus下载链接:https://pan.baidu.com/s/1t24

    2024年02月06日
    浏览(43)
  • LabVIEW-Solidworks联合仿真

    NI Softmotion介绍 LabVIEW NI SoftMotion 采用高级功能块API (应用程序接口) 便于编写运动程序,该功能块API基于由 PLCopen 定义的 Motion Control Library 。SoftMotion 包括用于 直线、弧线和轮廓运动 的功能块及用于进行 电子传动、电子凸轮 等高级运行的功能块。该模块还具有设计定制运动的

    2024年02月13日
    浏览(33)
  • PreScan与MATLAB联合仿真报错

    Error:Matlab ||和运算符的操作数必须能够转换为逻辑标量值 必须安装VS2013(我装的VS2017不行的),然后重启prescan和MATLAB,编译通过,界面如下: 三、VS2013安装包 链接:https://blog.csdn.net/qq_33742119/article/details/80075352 转自:https://blog.csdn.net/mingxiaod/article/details/90647540?spm=1001.2101.3

    2024年02月07日
    浏览(48)
  • Webots与MATLAB联合仿真环境配置

    系统:Win10 matlab版本:2023a webots版本:R2020b 在使用matlab写控制器之前,需要给matlab安装 MATLAB MinGW-w64 C/C++ Compiler,因为需要matlab与c进行交互。 下载地址 https://ww2.mathworks.cn/matlabcentral/fileexchange/52848-matlab-support-for-mingw-w64-c-c-compiler 下载完 MATLAB MinGW-w64 C/C++ Compiler 后,打开matla

    2024年02月14日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包