
科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载本篇指南以 Webots 开源仓库中docs/automobile/worlds.md为主线系统梳理随 Webots 一并分发的 12 个汽车仿真预置世界World涵盖城市、高速、村庄、真实地图导入与 SUMO 交通流仿真等典型场景。读完本文你将掌握每个世界的文件位置、场景构成、配套控制器与传感器配置并能快速选择或改造适合自己自动驾驶算法测试的仿真环境。预置世界总览开箱即用的多样化场景库Webots 在安装包中随附了一批可直接运行的汽车仿真世界覆盖了从简单直线路段到完整城市中心的各种驾驶场景。这些世界统一存放在 projects/vehicles/worlds 目录下全部基于 projects/vehicles 项目中的道路分段Road Segment、车辆 PROTO 和工具构建而成其对应的文档说明位于 docs/automobile 章节。worlds.md列出的 12 个世界及其对应文件如下世界对应 .wbt 文件场景特点City城市city.wbt小型城市街区、交通标志、受控路口、黄色中线City night城市夜景city_night.wbt夜间光照、路灯含一盏闪烁故障灯、车前灯City traffic城市交通city_traffic.wbt城市道路扩展 SUMO 生成车流CH MorgesCH_Morges.wbt基于 OpenStreetMap 导入的瑞士小城CH VensCH_Vens.wbt阿尔卑斯山区村庄ElevationGrid 起伏地形Highway高速highway.wbt带出入口的简单高速场景Highway overtake高速超车highway_overtake.wbt四车道高速 SUMO 密集车流 超车与雷达SUMO interface exampleSUMO 接口示例sumo_interface_example.wbt四路交叉口 信号灯 SUMO 联动Village村庄village.wbt高写实虚构村庄Village center村庄中心village_center.wbt村庄中心区域SUMO 管理交通Village winter冬季村庄village_winter.wbt雪地场景随积雪量变化的摩擦系数Realistic village写实村庄village_realistic.wbt更小但细节更丰富的写实村庄说明以_net结尾的同名目录如city_net/、highway_net/是与对应世界配套的 SUMO 路网文件目录只有使用了 SUMO 接口的世界才需要它们。城市系列从基础车道保持到夜间与密集车流City基础车道保持基准city.wbt呈现城市的一小部分区域包含若干大型建筑、交通标志和一个受信号灯控制的路口。它最显著的设计特征是道路中央线为黄色这是为了方便基于车载摄像头做车道保持lane keeping算法的视觉参考——projects/vehicles/worlds/city.wbt 中场景的自主车辆控制器设置为autonomous_vehicle其WorldInfo.basicTimeStep为 10 ms见 city.wbt。世界描述中明确写道The simple controller example uses an on-board camera to follow the yellow road lines and a SICK sensor to avoid the obstacles.该示例控制器使用车载摄像头跟随黄色道路线并用 SICK 传感器避开障碍物对应的控制器实现位于 projects/vehicles/controllers/autonomous_vehicle。因此该世界非常适合作为摄像头视觉车道保持算法的入门测试环境障碍物避让SICK 距离传感器算法的验证场景城市低速驾驶的基础对照基准。City night夜间鲁棒性测试city_night.wbt与city场景结构类似但模拟夜间光照条件太阳光被移除新增了若干路灯其中特意包含一盏闪烁的故障路灯同时启用了车辆前部的 SpotLights 车前灯。闪烁路灯会对视觉算法形成扰动因此这个世界的定位非常明确——测试驾驶控制算法在夜间光照下的鲁棒性。它可以与city世界形成昼夜对照实验用于量化光照变化对视觉感知的影响。City trafficSUMO 车流扩展city_traffic.wbt是city世界的扩展道路网络被加长并补充了更多树木和建筑。与city世界一样一辆车辆通过车载摄像头自主跟随道路中线行驶控制器同样为autonomous_vehicle见 city_traffic.wbt在此基础上SUMO 被用来在道路网络上生成额外的交通流使场景同时具备本车自主驾驶 他车动态车流两个要素。其配套路网目录 city_traffic_net 提供了sumo.net.xml、sumo.rou.xml等 SUMO 文件详见后文 SUMO 接口章节。真实地图世界基于 OpenStreetMap 的瑞士城市场景CH Morges完整导入的瑞士湖畔小城Morges 是瑞士日内瓦湖畔的一座中型城市。CH_Morges.wbt使用 OpenStreetMap importer 工具对整个城市中心进行了建模包含约 400 条道路、超过 1000 栋建筑以及若干小片森林、河流与湖泊等自然要素。这是仓库中体量最大的真实地图世界之一适合需要大规模、高密度城市环境的大规模仿真如车流调度、路径规划研究。CH Vens山地村庄与起伏地形Vens 是阿尔卑斯山中的一个小山村同样由 OpenStreetMap importer 建模。它有两个与众不同的技术点使用 ElevationGrid 定义起伏不平的地面从而生成坡度不平的道路有一条从谷底通往村庄、并继续延伸到山顶的道路整条道路和村庄都被森林环绕。村庄由约一百栋建筑组成。对于需要在带坡度地形而非纯平面上测试车辆动力学、爬坡能力或视觉地形的场景CH_Vens.wbt是一个现成选择。从文件结构看CH_Morges.wbt与CH_Vens.wbt均位于 projects/vehicles/worlds 下且与forest/目录中的森林资源共用。高速系列路网拼装与 SUMO 密集车流Highway预定义道路分段的拼装示范highway.wbt是一个带有多个高速出入口的简单高速场景。它的核心教学意义在于展示如何使用预定义道路分段快速搭建高速路网——从 highway.wbt 的源码结构看场景由CurvedRoadSegment弯道分段、StraightRoadSegment直道分段、AddLanesRoadSegment车道数变化分段、LaneSeparation车道分离以及Road、Pose、Box等节点组合而成各分段通过connectedRoadIDs字段相互衔接。同时该世界顶部声明了EXTERNPROTO webots://projects/default/protos/SumoInterface.proto并包含SumoInterface节点见 highway.wbt 与 L116说明高速车流由 SUMO 接口驱动。如果你需要快速搭建自己的高速出入口测试路网可以仿照该世界把直道 弯道 车道增减 车道分离几种分段按顺序摆放并设定连接关系即可在数分钟内得到一个结构完整的互通式高速场景。Highway overtake四车道超车与雷达可视化highway_overtake.wbt是一条笔直的 4 车道高速包含一条应急车道通过 SUMO 接口注入密集车流。场景中有两套关键角色超车车辆使用距离传感器尝试超越其他车辆其控制器为 projects/vehicles/controllers/highway_overtake见 highway_overtake.wbt雷达目标追踪 supervisor控制器为 projects/vehicles/controllers/radar_target_tracker见 highway_overtake.wbt用于在 3D 窗口中显示车辆前向雷达探测到的目标。该世界非常适合测试基于距离/雷达传感器的自主超车决策逻辑并且由于雷达目标被可视化调试感知算法时能直观看到雷达的探测范围与目标关联结果。世界标题为 Highway overtake、basicTimeStep为 10 ms见 highway_overtake.wbt。SUMO 接口Webots 世界与交通仿真的桥梁多个预置世界City traffic、Highway、Highway overtake、Village center、SUMO interface example 等都依赖 Webots 与 SUMO 节点用 Python 实现通过TraCI 协议与 SUMO 通信详细说明见 sumo-interface.md。其核心价值在于能在仿真进行中实时生成大量车辆从而低成本地制造真实交通流。使用 SUMO 接口的前提条件要运行依赖 SUMO 的世界系统必须安装 SUMO且环境变量SUMO_HOME指向 SUMO 安装路径Debian / Ubuntusudo apt install sumo sumo-tools sumo-doc安装后可能需要注销重登或重启才能生效macOS先brew install --cask xquartz接口依赖 X11再brew tap dlr-ts/sumo brew install sumo并在~/.bashrc末尾添加export SUMO_HOME/opt/homebrew/opt/sumo/share/sumo默认安装目录Windows从 SUMO 官方文档下载最新安装包运行即可。若 Webots 以 snap 方式安装沙箱会阻止 Webots 直接启动 SUMO。解决办法是将SumoInterface.exterController字段设为TRUE并在 Webots 外部以 extern controller 方式启动控制器参考 running-extern-robot-controllersexport WEBOTS_HOME/snap/webots/current/usr/share/webots $WEBOTS_HOME/webots-controller $WEBOTS_HOME/projects/default/controllers/sumo_supervisor/sumo_supervisor.py如需传递 SUMO 选项直接追加在启动行末尾例如--use-netconvert --no-gui。路网文件与命名规则每个使用 SUMO 的世界其同级目录下必须有名为worldName_net如sumo_interface_example_net的文件夹内含 SUMO 定义路网的常规文件.edg.xml、.nod.xml、.rou.xml等以及.netccfg和.sumocfg配置。接口默认加载名为sumo.netccfg与sumo.sumocfg的配置文件若不存在则回退使用该目录下任意其他名称的配置不建议同目录放置多份 SUMO/NETCONVERT 配置因为无法确定哪份会被使用。接口会在仿真开始时自动启动 SUMO 并与 Webots 时间同步。每辆新进入 SUMO 仿真的车辆都会在 Webots 中创建其位置与朝向持续更新DEF 名被设置为SUMO_VEHICLEXX 为从 0 开始的车辆编号。反之若仿真中已存在 DEF 名为SUMO_VEHICLEX的车辆接口会优先复用它们再创建新车可避免实时动态添加车辆造成的瞬时速度下降若 SUMO 车辆 ID 与场景中某车辆 DEF 名相同该车也会被自动关联。若场景中存在 DEF 名为WEBOTS_VEHICLEX的车辆接口还会反向把它们的位姿注入 SUMO实现双向闭环。车辆类型的映射规则为SUMO 车辆抽象类别为passenger默认时随机选用一款汽车 PROTObus使用Busmotorbike在Motorbike与Scooter间随机选择trailer与truck分别选择带挂车与不带挂车的TruckPROTO。SumoInterface PROTO 参数SumoInterfacePROTO 继承自 Supervisor完整字段如下PROTO SumoInterface [ field SFString name sumo interface field SFBool gui TRUE field SFBool useNetconvert FALSE field SFBool enableTrafficLights TRUE field SFBool enableWheelsRotation FALSE field SFInt32 maxVehicles 100 field SFInt32 radius -1 field SFFloat maximumLateralSpeed 2.5 field SFFloat maximumAngularSpeed 3 field SFFloat laneChangeDelay 3 field SFBool enableHeight FALSE field SFInt32 step 200 field SFInt32 port 8873 field SFInt32 seed 1 field SFString networkFiles field SFString sumoArguments field SFNode display NULL field SFBool verbose FALSE field SFBool synchronization TRUE field MFNode children [] ]各字段含义全部可在 projects/default/protos/SumoInterface.proto 中查看定义gui使用 SUMO 的命令行版本还是 GUI 版本useNetconvert是否在启动 SUMO 前先调用 NETCONVERT若已提供*.net文件应禁用enableTrafficLights是否启用信号灯同步enableWheelsRotation车辆车轮是否旋转旋转更真实但会降低仿真速度maxVehicles从 SUMO 加入 Webots 的最大车辆数radius车辆可见半径米车辆距视点超过该距离则不会加入 Webots负值表示加入全部车辆maximumLateralSpeed/maximumAngularSpeed车辆最大横向速度m/s与最大角速度rad/slaneChangeDelay换道耗时秒此期间 Webots 与 SUMO 中车辆位置可能不同步enableHeight是否从边edge名称中提取高度信息实验性stepSUMO 仿真步长毫秒应大于或等于世界步长portWebots 与 SUMO 通信端口seedSUMO 随机数种子0表示基于时间的随机种子等价于 SUMO 的--random选项networkFilesSUMO 路网文件所在目录为空时默认使用世界文件同级的worldName_net目录sumoArguments启动 SUMO 时附加的参数display可选的SumoDisplay节点verbose是否在 Webots 控制台打印 SUMO 输出synchronization接口控制器是否与 Webots 同步children用于插入其他节点信号灯应加在该字段中。SumoDisplay 与信号灯同步如需在 Webots 内部看到 SUMO 的 GUI 视图例如模拟 GPS 视图可在SumoInterface的display字段中放入SumoDisplay节点其字段为PROTO SumoDisplay [ field SFInt32 width 256 field SFInt32 height 256 field SFFloat zoom 1.0 field SFInt32 refreshRate 1000 field SFBool fitSize FALSE ]width/height定义 Display 的尺寸zoom控制启动时 SUMO 自动缩放的比例refreshRate为刷新间隔毫秒fitSize为TRUE时图像自动缩放填满 Display长宽比可能不保真为FALSE时按原始比例裁剪或留白。信号灯同步方面Webots 中交通灯对应的LEDs节点名称必须遵循trafficLightID_trafficLightIndex_r/y/g语法r红、y黄、g绿接口才能把 SUMO 的信号灯状态自动同步到 Webots。可通过 Netedit 打开路网文件在交通灯模式下右键连接获取trafficLightID与trafficLightIndex参考文档中sumo_traffic_light配图说明。插件机制除 PROTO 参数外接口还支持 Python 插件扩展插件需放在 SUMO 路网文件同一目录实现SumoSupervisorPlugin类及两个入口函数class SumoSupervisorPlugin: def __init__(self, supervisor, traci, net): # TODO def run(self, ms): # TODO__init__在接口初始化时调用参数依次为 Supervisor 本身、traci 类用于获取 TraCI 上下文信息与 net 类用于获取路网信息run在每次 SUMO 步进时调用参数为时间步长。该机制可用于在 SUMO 侧修改信号灯状态等自定义逻辑。仓库中的 sumo_interface_example_net/plugin.py 即为真实插件示例。预置示例世界逐个剖析SUMO interface example接口最小演示sumo_interface_example.wbt是一个由信号灯控制的四路交叉口专门用于演示 SUMO 接口。其工作流程为仿真开始时 SUMO 以图形模式启动在horizontal水平道路上仿真若干车辆当一辆优先车辆从vertical垂直道路驶来时车道传感器会检测到它随后信号灯状态发生改变。配套目录 sumo_interface_example_net 中含有完整的 SUMO 文件sumo.edg.xml、sumo.nod.xml、sumo.rou.xml、sumo.con.xml、sumo.det.xml、sumo.netccfg、sumo.sumocfg以及generate_route_file.py与plugin.py。该世界还有一个亮点一辆由 SUMO 驱动的车辆在前部安装了 Lidar 传感器并显示测量到的点云——其控制器为 projects/vehicles/controllers/enable_all_lidars见 sumo_interface_example.wbt世界步长basicTimeStep为 20 ms。这直观展示了为 SUMO 控制的车辆采集传感器数据的可行性只需按前文命名规则放置车辆、在传感器插槽中添加传感器并指定控制器即可。通用做法是在仿真中放入自己的车辆并设置合适的 DEF 名添加传感器、指定控制器控制器即可启用传感器并把输出记录到文件或发送给外部进程。Village / Village center高写实虚构村庄village.wbt是一个小型虚构村庄写实度很高细节精心打磨包含桥梁、人行横道、河流、树木等所有路口都经过精心设计并配有合适的道路标志全部交通标志齐全且配有动态信号灯。其 SUMO 路网目录 village_net 表明该世界同样接入 SUMO 车流。village_center.wbt则聚焦村庄中心区域写实度同样很高并明确使用 SUMO 接口 管理交通配套目录 village_center_net。这两个世界适合需要美观、写实且元素完整的封闭村庄场景的视觉算法、行人避让或基础设施级仿真研究。Village winter积雪摩擦建模village_winter.wbt同样是虚构小村庄但处于冬季道路、建筑和树木上覆盖了不同厚度的积雪这会使车载摄像头难以跟踪道路更重要的是道路与轮胎之间的摩擦系数随积雪量相应改变。从 village_winter.wbt 的WorldInfo.contactProperties结构可以看到具体实现见 L25-L177定义了high_snow、medium_snow、low_snow三种接触材质并与车辆轮胎材质如CitroenCZeroWheels、ToyotaPriusWheels组合成多组ContactProperties通过coulombFriction指定不同的库仑摩擦系数道路表面则使用snowy_road系列 PBR 贴图基础色、粗糙度、法线、遮挡贴图位于 projects/vehicles/worlds/textures/snowy_road建筑与地面覆雪使用snow.jpg纹理。需要特别注意的是雪/冰与轮胎间的摩擦现象非常复杂该世界不应被视为地面真值ground truth只能作为粗略近似。它适合用来测试算法在摩擦参数变化、视觉特征退化条件下的表现差异而不是用于标定真实物理参数。Realistic village细节增强版村庄realistic-village.md描述village_realistic.wbt与Village世界非常相似但规模更小、包含的细节多得多因此观感更真实。配套目录 village_realistic_net 表明它也接入 SUMO 车流。当场景规模不是瓶颈、而画面真实度是关键例如生成合成训练数据、视觉 SLAM 评测时优先选择这个世界。如何选择与运行这些世界打开与运行在 Webots 中打开任意世界只需在启动器中选择对应的.wbt文件或通过File Open World直接加载 projects/vehicles/worlds 下的文件。涉及 SUMO 的世界City traffic、Highway、Highway overtake、Village、Village center、Village realistic、SUMO interface example需要提前按上文完成 SUMO 安装与SUMO_HOME配置。场景选择速查表测试目标推荐世界摄像头车道保持入门City夜间视觉鲁棒性City night城市自主驾驶 动态车流City traffic大规模真实城市地图CH Morges起伏地形 / 带坡度道路CH Vens高速路网拼装示范Highway密集车流下的超车决策与雷达调试Highway overtake理解 SUMO 接口机制SUMO interface example写实村庄 动态信号灯Village / Village center雪地摩擦与低能见度测试Village winter高细节真实感场景Realistic village配套控制器一览与这些世界配套的控制器全部位于 projects/vehicles/controllers包括autonomous_vehicle城市世界中的摄像头 SICK 传感器自动驾驶示例、highway_overtake高速超车控制、radar_target_tracker前向雷达目标可视化 supervisor、enable_all_lidars为 SUMO 车辆启用全部激光雷达并显示点云以及vehicle_driver/VehicleDriver、boomer、racing_wheel等车辆驱动相关控制器。阅读这些控制器源码可以完整复现预置场景中的自主驾驶行为。总结Webots 的 12 个汽车仿真预置世界构成了一条从基础车道保持到大规模真实城市 SUMO 车流的完整演进路径。它们既可以直接用于算法验证也可以作为搭建自定义场景的模板highway.wbt展示了如何用预定义道路分段拼装路网city.wbt展示了如何组织自主车辆与传感器sumo_interface_example.wbt与配套_net目录则展示了如何接入 SUMO 实时车流并采集传感器数据。结合 docs/automobile 章节中的工具如 OpenStreetMap importer与 SumoInterface 接口你可以基于这些预置世界快速构建面向自动驾驶研究与教学的专业仿真环境。赞分享科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载相关推荐从一句话到可复用的 AI 技能Refly 从零开始跑通实录从一句话到可复用的 AI 技能Refly 从零开始跑通实录 Refly 是一款开源的 AI 工作流与 Agent Skills 构建工具你用一句自然语言描述科研自动驾驶物理引擎Webots 汽车仿真工具链从 OpenStreetMap 地图生成世界到 SUMO 交通仿真的完整实战指南Webots 汽车仿真工具链从 OpenStreetMap 地图生成世界到 SUMO 交通仿真的完整实战指南 Webots 为汽车仿真场景提供了一套完整的工具科研自动驾驶物理引擎Webots 汽车仿真 PROTO 节点全解析从 AckermannVehicle 底盘到完整整车模型Webots 汽车仿真 PROTO 节点全解析从 AckermannVehicle 底盘到完整整车模型 本文围绕 Webots 开源机器人仿真器当前仓库为科研自动驾驶物理引擎上一篇gogcli 群组成员管理实战gog admin groups members remove 命令全面解析下一篇CesiumJS三维地球可视化终极指南从零构建专业级WebGIS应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考