ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Webots Highway 高速公路世界解析:用预定义道路段搭建含出入口与立交的高速公路仿真场景

Webots Highway 高速公路世界解析:用预定义道路段搭建含出入口与立交的高速公路仿真场景 科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载本文基于 Webots 仓库中 Highway 世界文档 展开结合 highway.wbt 世界文件与 road PROTO 节点 源码系统讲解该仿真场景的构成方式、道路段组件的参数语义以及如何在自己的自动驾驶测试场景中复用这些预定义道路构件。读完本文你将掌握 Webots 中高速公路出入口、车道增减、匝道立交与交通标志的搭建思路并能直接打开、运行并改造该世界。场景定位一个开箱即用的高速公路世界原文档对 Highway 世界的描述非常凝练这是一个包含多种高速公路入口entrances与出口exits的简单高速公路场景用以展示使用预定义道路段predefined road segments构建场景是多么容易。它属于 Webots 随附的 Worlds 集合 中的一员与 City、City Traffic、CH Morges、Highway Overtake、Village 等世界一起覆盖了从城市道路到乡村、高速的多样化驾驶场景。从仓库结构看该世界的完整定义位于 projects/vehicles/worlds/highway.wbt约 2000 行、.wbt世界文件头部声明#VRML_SIM R2025a utf8即面向 Webots R2025a 版本。它没有依赖任何自定义建模资产而是完全由projects/objects/road/protos/与projects/objects/traffic/protos/下的参数化 PROTO 节点拼装而成——这正是原文档强调易于创建的底层原因。世界文件整体结构从 EXTERNPROTO 看依赖打开highway.wbt前 34 行可以看到本场景的全部外部依赖EXTERNPROTO / IMPORTABLE EXTERNPROTO声明这本身就是一张技术清单道路与路面Floor、StraightRoadSegment、CurvedRoadSegment、LaneSeparation、AddLanesRoadSegment、Road、RoadPillars、Crossroad、RoadLine交通设施ExitSign、OrderSign/OrderPanel、SpeedLimitSign/SpeedLimitPanel、CautionSign/CautionPanel、HighwayPole/HighwaySign、DivergentIndicator环境TexturedBackground、TexturedBackgroundLight交通流与车辆SumoInterface以及以IMPORTABLE EXTERNPROTO形式可选导入的车模型——BmwX5Simple、CitroenCZeroSimple、ToyotaPriusSimple、RangeRoverSportSVRSimple、LincolnMKZSimple、TeslaModel3Simple、MercedesBenzSprinterSimple其中IMPORTABLE可导入型EXTERNPROTO 值得注意它表示这些简单车模型并非场景初始必需而是留给 SUMO 接口按需实例化的候补车型池用于在运行期为高速公路注入车流。场景主体则按逻辑组织为若干Solid容器Solid 容器内容WEST_LOWER_LOOP/EST_LOWER_LOOP西、东两侧下层环路直线段 弯道段 车道分离/增减段构成双向互通SOUTH_UPPER_*/NORTH_UPPER_*南、北四个匝道含带wayPoints的坡道Road 弯道段SOUTH_UPPER_LOOP/NORTH_UPPER_LOOP距地 5 米的上层立交环路bottom TRUE 高架支撑SOUTH_RoadPillars/NORTH_RoadPillars上层高架路的桥墩阵列SIGNS全部交通标志、指路牌、龙门架WEBOTS_VEHICLE0初始放置的一辆宝马 X5 自动驾驶车辆高速公路的乐高积木预定义道路段 PROTO 详解原文档指出本场景的核心价值在于用预定义道路段快速拼场景。下面结合highway.wbt中的实际用法与projects/objects/road/protos/下的 PROTO 定义逐一说明每种积木的作用。直线段 StraightRoadSegmentStraightRoadSegment { translation 5.82 -53.6 0 rotation 0 0 1 -1.5707926535897934 id INWJUN2 # 唯一标识供其他节点通过 id 引用 startJunction c10 # 起点交叉口 endJunction c9 # 终点交叉口 numberOfForwardLanes 0 # 前向车道数0 表示当前行驶方向相反用于对向车道段 length 56.4 # 段长度米 rightBorderBoundingObject TRUE leftBorderBoundingObject TRUE }该节点的核心字段包括id、startJunction/endJunction与Crossroad的id对应形成路网拓扑、numberOfForwardLanes、length与可选width。可以看到本例中numberOfForwardLanes既有2本向两车道也有0对向车道作为道路另一半这正是一整条道路拆成两段反向直线段的建模手法。弯道段 CurvedRoadSegmentCurvedRoadSegment { id INWJUN3 numberOfForwardLanes 2 lines [ RoadLine { type continuous } ] # 车道标线 curvatureRadius 38 # 曲率半径米 totalAngle 3.14151 # 总弯转角弧度约 180° subdivision 32 # 曲面细分段数影响网格平滑度 }在高架匝道中它还会配合tilt 0.3横向倾斜使用例如SOUTH_UPPER_LOOP中半径 90 米、总角 180°、subdivision 32、tilt 0.3的弯道段用以平滑衔接上层立交。车道分离段 LaneSeparation车道分离段用于把一条路分叉为两条路或反之合流是入口/出口的关键LaneSeparation { id INWJUN4 connectedRoadIDs [ INtoOutW, INWJUN3, OUTSW ] # 相连的三条路段 id length 25 # 分叉段长度 newLaneLeft FALSE # 新车道是否位于左侧 centralBorderBoundingObject TRUE # 分叉带中央隔离带碰撞体 }connectedRoadIDs列出参与该分叉的全部路段id从而实现三岔拓扑主线继续直行、一支转入匝道。配合newLaneLeft控制新增车道出现在中央分隔带的哪一侧。车道增减段 AddLanesRoadSegmentAddLanesRoadSegment { id OUTSW1 connectedRoadIDs [ INWJUN4, INtoOutW ] width 10.5 # 总宽度米 length 60 numberOfLanes 3 # 车道总数 numberOfNewLanes 1 # 本段新增的车道数用于汇入/驶离车道 newLaneLeft FALSE }它表达在路段行进方向上增加/减少一条车道的渐变区域是加速车道入口匝道汇入与减速车道出口匝道驶离的标准形态。通用道路 Road坡道Road { id OUTWJUN3 numberOfForwardLanes 0 bottom TRUE # 生成路面底面高架路需要 wayPoints [ 0 0 -5, -3 0 -4.95, -8 0 -4.5, -29 0 -0.5, -35 0 -0.05, -41.2 0 0 ] roadBoundingObject TRUE rightBorderBoundingObject TRUE leftBorderBoundingObject TRUE castShadows TRUE }wayPoints给出沿路中心线的三维关键点序列z坐标从-5渐变到0即一条从地下-5 米爬升到地面的入地/出地坡道——这正是下层环路与上层立交之间的竖向联系通道。交叉口 Crossroad 与桥墩 RoadPillarsCrossroad节点本身没有几何外观shape []只作为路网拓扑锚点存在Crossroad { id c9 connectedRoadIDs [ INWJUN2, INWJUN3 ] # 该交叉口连接的路段 }全部交叉口c0–c15通过connectedRoadIDs把直线段、弯道段、分离段串成完整路网这正是 SUMO 接口识别道路拓扑的依据。RoadPillars则为上层立交提供桥墩参数width、pylonsDistance桥墩间距与upperTilt随弯道外侧抬升的立柱倾角在上层环路的弧形区段被逐一调整支撑起高架结构。交通设施标志、龙门架与指示牌SIGNS容器集中放置了全套交通设施展示预定义 traffic PROTO 的用法ExitSign / DivergentIndicator出口预告标志与车道分流指示牌布置在出入口分叉处如translation -86.9 85.25的DivergentIndicator。SpeedLimitSign SpeedLimitPanel限速标志贴图引用webots://projects/objects/traffic/protos/textures/signs/us/speed_limit_40.jpg40 英里/小时限速对应美国风格标牌。CautionSign CautionPanel注意/警告标志贴图us/turn_right.jpg放置在弯道与分叉前提示转弯。OrderSign OrderPanel禁令标志no_u_turn.jpg禁止掉头设置在高架起坡处防止误入对向车道。HighwayPole HighwaySign横跨高速的龙门架参数如stand 2柱式、height 12、length 33、thickness 0.4、curveRadius 0.8可同时挂载rightHorizontalSigns、leftHorizontalSigns、rightVerticalSigns、leftVerticalSigns四组HighwaySign含指向城市名的纹理如highway_sign_sebastian.jpg、highway_sign_la_ciotat.jpg、highway_sign_bayonne.jpg。这些节点都来自 projects/objects/traffic/protos与道路段 PROTO 一样是纯参数化组件可在其他世界直接复用。车辆与控制器谁来在高速上跑世界末尾放置了初始车辆BmwX5 { translation -7.53 78.7 0.4 rotation 0 0 1 -1.5708 controller autonomous_vehicle }车模来自 projects/vehicles/protos/bmw/BmwX5.proto一个带轮子材质BmwX5轮面在WorldInfo.contactProperties中对应了coulombFriction 8的高附着摩擦配置的完整车辆 PROTO。控制器指向autonomous_vehicle即 projects/vehicles/controllers 下的自动驾驶示例控制器负责沿路网行驶、遵守交通规则。WorldInfo中还定义了basicTimeStep 10毫秒、ERP 0.6、lineScale 5并为各车型轮子CitroenCZeroWheels、ToyotaPriusWheels、LincolnMKZWheels、RangeRoverSportSVRWheels、TruckWheels统一设置了摩擦与softCFM 1e-05接触参数保证高速行驶的物理稳定性。SUMO 接口为高速注入动态车流SumoInterface { enableHeight TRUE # 启用三维高度适配高架/坡道路网 }SumoInterfacePROTO 位于 projects/default/protos/SumoInterface.proto负责把 SUMO开源交通仿真器与 Webots 世界对接SUMO 负责宏观交通流决策Webots 负责每辆车的物理与传感仿真。enableHeight TRUE表示本世界的路网具有高度维度地下坡道与 5 米高架SUMO 网络需在三维上与之对齐。与之配套的正是前文提到的IMPORTABLE EXTERNPROTO简单车模型池——SUMO 接口运行时按需实例化这些车辆。对 SUMO 工作流感兴趣的读者可进一步阅读 SUMO 接口文档 与 SUMO 接口示例世界。环境与视角设置场景的氛围配置集中在文件前部地面1000×1000 米的Floor1 米平铺使用草地纹理webots://projects/vehicles/worlds/textures/ground_grass.jpgroughness 1、metalness 0的 PBRAppearance。雾Fog { color 0.396 0.396 0.396, visibilityRange 700 }灰色雾使 700 米外的远景淡出增强高速视觉纵深感。视角Viewpoint的follow vehicle让摄像机自动跟随主控车辆near 1并开启LensFlare初始位置位于路网上方约 123 米高处便于俯视全景。如何运行与继续研究运行方式在 Webots 中直接打开 projects/vehicles/worlds/highway.wbtFile Open World点击运行即可看到车辆沿高速公路行驶若已配置 SUMO 可进一步启用交通流。由于该世界完全由参数化 PROTO 拼装改动某个StraightRoadSegment的length、调整AddLanesRoadSegment的numberOfNewLanes、或替换SpeedLimitSign的贴图即可生成自己的高速公路变体。想更深入理解这些积木的字段默认值请直接阅读 projects/objects/road/protos/StraightRoadSegment.proto、CurvedRoadSegment.proto、LaneSeparation.proto、AddLanesRoadSegment.proto 等 PROTO 源码。仓库中还提供了 Highway Overtake 世界4 车道直道 SUMO 密集车流 距离传感器超车演示对应世界文件 highway_overtake.wbt与 场景创建教程可作为下一步进阶方向。小结Highway 世界用一份约 2000 行的.wbt文件仅凭十余个预定义 PROTO 节点就拼出了包含双向主线、进出口匝道、车道分离/汇入渐变与 5 米高架立交的完整高速公路场景并叠加了全套交通标志、桥墩、雾效与 SUMO 交通流支持。它既是预定义道路段组件能力的直观证明也是研究自动驾驶循迹、交规遵守与 SUMO 联合仿真的开箱即用实验台。赞分享科研自动驾驶物理引擎【免费下载链接】webotsWebots Robot Simulator项目地址https://gitcode.com/gh_mirrors/web/webots点击查看免费下载相关推荐HighwayEnv项目详解高速公路自动驾驶仿真环境HighwayEnv项目详解高速公路自动驾驶仿真环境 环境概述 HighwayEnv是Farama Foundation提供的一个高速公路自动驾驶仿真环境专Webots 道路网络导出到 SUMO使用 sumo_exporter 生成可仿真的交通路网文件Webots 道路网络导出到 SUMO使用 sumo_exporter 生成可仿真的交通路网文件 导读 本文介绍 Webots 内置的 SUMO Export科研自动驾驶物理引擎k-skill 实战韩国高速公路实时路况与 CCTV 查询技能 highway-traffic-status 深度解析k skill 实战韩国高速公路实时路况与 CCTV 查询技能 highway traffic status 深度解析 本篇技术指南以 k skill 仓库中AI 技能/插件人工智能CLI上一篇Zappa Example 实战指南用 Zappa 将 Flask 应用与定时任务部署到 AWS Lambda下一篇Cat-Catch 资源嗅探完整指南两分钟装好一键拿下网页里的隐藏媒体创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表