☰
Webots Realistic Village 世界解析:从 OSM 导入到写实乡村自动驾驶仿真场景
2026/10/4 2:00:30 网站建设 项目流程
  • 科研
  • 自动驾驶
  • 物理引擎

【免费下载链接】webots

Webots Robot Simulator

项目地址:https://gitcode.com/gh_mirrors/web/webots
点击查看免费下载

Realistic Village 是 Webots 机器人仿真器内置的写实乡村自动驾驶测试场景:它比基础版Village世界规模更小,但细节密度显著更高,用于验证基于车载相机、雷达等传感器的自动驾驶控制器在"窄路、多路口、复杂交通设施"条件下的表现。读完本文,你将掌握该世界的文件位置、场景构成、道路与交通设施的组织方式、车辆控制器接入方法,以及它与 Webots 其他村庄类世界的差异与选型依据。

一、世界定位:一个更小但更写实的村庄

依据官方文档 Realistic Village 的定义,Realistic Village 与基础版 Village 世界非常相似,都代表一个虚构的小村庄;两者的关键区别在于:

  • 规模更小:整体路网与建筑密度低于基础版 Village;
  • 细节更丰富:场景中加入了更多写实元素,使画面与物理环境更接近真实乡村。

Village 世界本身被官方文档描述为"具有非常高写实度的虚构小村庄"(Village),包含桥梁、人行横道、河流、树木、完整的交通标志以及动态交通信号灯。Realistic Village 则在更紧凑的范围内复现了同类要素。

从文档目录看,该世界属于 Webots 汽车模块(Automobile)Worlds 章节中 12 个开箱即用场景之一,与 City、City night、Highway、Village center、Village winter 等并列,共同覆盖城市、高速、村庄等多种自动驾驶测试场景。

二、从 OpenStreetMap 到 Webots:世界的生成方式

打开世界文件 village_realistic.wbt(共 4563 行),第一行注释即声明格式为#VRML_SIM R2025a utf8,表明该文件基于 Webots 2025a 版本文本格式编写。

WorldInfo节点的info字段提供了关键来源信息:

info [ "World generated using the Open Street Map to Webots importer" "Author: David Mansolino <david.mansolino@epfl.ch>" ]

这意味着整个路网、交叉口与部分道路设施并非手工摆放,而是由 Webots 的OpenStreetMap 导入器(官方教程见 openstreetmap-importer)根据真实地图数据自动生成,再辅以人工添加的细节对象。这也解释了场景中大量使用id编号、startJunction/endJunction引用的道路组织方式——这正是 OSM 导入器输出路网的标准形态。

三、场景构成清单:从地形到交通设施的完整分层

3.1 全局环境与地形

场景头部定义了基础环境:

  • TexturedBackground / TexturedBackgroundLight:天空与光照背景;
  • Fog:color 0.93 0.96 1(浅蓝白色),visibilityRange 2500,提供远景雾化以增强纵深感并帮助隐藏可见范围外的几何体;
  • Floor:800×800 的地面,使用 projects/vehicles/worlds/textures/ground.jpg 作为baseColorMap,roughness 1、metalness 0;
  • 多片不规则草地(GRASS / GRASS2 / GRASS3):使用 projects/default/worlds/textures/grass.jpg 配合IndexedFaceSet手工多边形,textureTransform以 40×40 缩放平铺,塑造非规则乡村地形边界。

3.2 物理参数:车辆与地面的接触属性

WorldInfo.contactProperties中定义了统一的轮胎-地面摩擦模型:coulombFriction 8、softCFM 1e-05,并针对 CitroenCZero、ToyotaPrius、LincolnMKZ、RangeRoverSportSVR、Truck 等车型的轮毂材质分别配置同名条目(material2分别匹配各车型的轮子材质名)。所有接触均关闭了 bump/roll/slide 音效(空字符串),避免仿真中出现碰撞噪音干扰。

3.3 道路网:OSM 导入的标准结构

场景道路全部使用 Road 系列 PROTO,辅以RoadIntersection、Roundabout、StraightRoadSegment、Crossroad,共约 26 段道路与至少 5 个交叉口节点,典型的道路定义如下:

Road { translation 365.368 -452.672 0 id "0" startJunction "39" speedLimit 13.89 # 约 50 km/h roadBorderHeight -1.7 wayPoints [ 0 0 2 3.98 8.68 1.5 11.12 24.58 0 27 35.88 0 49 24 0 ] startingAngle [ -1.131 ] splineSubdivision 8 pavementAppearance PBRAppearance { baseColorMap ImageTexture { url [ "webots://projects/default/worlds/textures/old_brick_wall.jpg" ] } roughness 0.8 metalness 0 } roadBoundingObject TRUE rightBorderBoundingObject TRUE leftBorderBoundingObject TRUE castShadows TRUE }

从中可以提炼出该世界路网的核心工程特征:

  • 限速统一:绝大多数道路speedLimit为13.89 m/s(约 50 km/h),符合村庄道路特征;
  • 样条平滑:splineSubdivision 8对wayPoints做 8 级样条细分,使弯道平滑;
  • 3D 起伏:wayPoints第三个分量携带高程信息(如桥面5、坡道2/3.5),配合roadBorderHeight(负数表示路缘相对于路面的高度差)塑造地形起伏;
  • 路面材质:多数道路使用old_brick_wall.jpg旧砖纹理作为路面贴图,营造乡村陈旧路面质感;
  • 车道与标线:部分路段通过numberOfLanes、lines(RoadLine,支持continuous实线与默认虚线)、startLine(road_line_dashed.png与road_line_triangle.png组合)细化车道组织。

交叉口通过RoadIntersection的connectedRoadIDs明确枚举各连接道路 ID,例如id "27"连接"14" "3" "17" "6"四条路;Roundabout(环形交叉口,id "31")则用于组织环岛车流。

3.4 交通设施:信号灯、标志与路边装置

场景中交通元素非常完整:

  • GenericTrafficLight:至少 6 个动态交通信号灯,分布于主要交叉口;
  • SpeedLimitSign + SpeedLimitPanel:至少 8 个限速标志,其中多个通过SpeedLimitPanel.signImage指定美式 35 mph 或 70 mph 纹理(如webots://projects/objects/traffic/protos/textures/signs/us/speed_limit_35.jpg);
  • SignPole + DirectionPanel:指路牌组合,前后两面分别使用panel_town_center、panel_lake、panel_forest纹理,指示镇中心、湖泊与森林方向;
  • HighwayPole + HighwaySign + AdvertisingBoard:大型悬臂式标志杆,其中部分AdvertisingBoard使用dead_end_road.jpg提示死路,另有独立的 Fanta、Coca-Cola、Cyberbotics 品牌广告牌(fanta_billboard.jpg、coca-cola_billboard.jpg、cyberbotics_billboard.jpg,纹理位于 projects/objects/advertising_board/protos/textures);
  • StreetLight:约 26 盏路灯,on FALSE表示默认关闭(夜间场景才启用);
  • TrafficCone:多组锥形交通筒,用于封闭或引导局部路段;
  • PedestrianCrossing、YieldSign/YieldPanel、CautionSign/CautionPanel:人行横道、让行与警示标志。

3.5 建筑物与街道设施

建筑覆盖了乡村生活的主要类型(对应 projects/objects/buildings/protos 与 projects/objects/street_furniture/protos 下的 PROTO):SimpleBuilding、Museum、BungalowStyleHouse(平房)、Auditorium(礼堂)、BuildingUnderConstruction(在建建筑)、CyberboticsTower、TheThreeTowers、ResidentialBuilding、ModernHouse、FastFoodRestaurant、PublicToilet、SimpleTwoFloorsHouse、BusStop(公交站)、StoneFountain(石喷泉)等,场景中该类节点共出现 70 处(含同名多次实例)。

街道设施还包括Fence(栅栏,部分沿地形起伏呈 3D 路径,配合Extrusion样条挤出)、Bench(长椅)、PublicBin/TrashBin(垃圾桶)、用SolidBox与Pavement外观构成的停车区底板、ParkingLines(划线停车位,如 9 个、7 个车位配置)以及FLOWERS花坛(紫色/黄色花卉纹理,flowers_purple.jpg、flowers_yellow.jpg)。

3.6 自然元素与植被

  • SimpleTree:约 15 棵单棵树木(SimpleTree.proto),高度统一为 6;
  • Forest:成片树林;
  • Fence + 地形贴图:沿河岸、路边布置的栅栏与草地多边形共同限定自然边界。

四、车辆与控制器接入:直接可跑的自动驾驶测试

4.1 场景内置车辆

Realistic Village 内放置了多种 Webots 车辆 PROTO 实例,涵盖轿车、公共交通与两轮车,总计 37 处引用:

  • CitroenCZeroSimple(雪铁龙 C-Zero 电动小车)
  • BmwX5Simple(宝马 X5 SUV)
  • ToyotaPriusSimple(丰田普锐斯)
  • BusSimple(公交车)
  • TruckSimple、TruckTrailerSimple(货车及拖挂车)
  • ScooterSimple、MotorbikeSimple(踏板车与摩托车)

这些 PROTO 位于 projects/vehicles/protos 下,均带物理属性(车轮材质已在前文接触属性中单独配置摩擦系数)。

4.2 如何运行与编写控制器

打开方式:在 Webots 中通过File > Open World选择 village_realistic.wbt,场景会自动加载全部 PROTO 与纹理。若要驾驶场景中的车辆,可以为车辆节点挂接controller字段指定的控制器(如默认的vehicle_driver或自建控制器),详见 car-and-driver-libraries 与 driver-library。

控制器编程上,Webots 汽车模块提供专用的 Car 与 Driver 库,可读取速度、转向、GPS、距离传感器并控制油门/刹车/转向;多语言绑定支持 C、C++、Java、Python,接口一致性说明见 cpp-java-and-python-wrappers-of-the-automobile-libraries。

4.3 车载感知的典型验证场景

结合村庄道路特性,Realistic Village 特别适合验证:

  • 限速标志识别与车速控制(8 个限速牌、统一 50 km/h 限速);
  • 交叉口通行策略(多交叉口 + 信号灯 + 环岛 + 让行标志的组合);
  • 行人/公交停靠避让(BusStop、PedestrianCrossing);
  • 窄路会车与路边停车(ParkingLines划线车位);
  • 基于路缘(roadBorderHeight)与护栏的循路边界检测。

五、与 Village 系列世界的差异与选型

Webots 的 Worlds 文档提供了三个"村庄"变体,Realistic Village 在其中定位如下:

世界规模核心特征适用场景
Village较大桥梁、人行横道、河流、树木、完整交通标志与动态信号灯,写实度高全要素乡村自动驾驶测试
Village winter较小雪景,道路上、建筑与树木覆雪;摩擦系数随积雪量变化恶劣天气下的感知与控制鲁棒性测试
Realistic Village(本文)更小细节密度更高的写实村庄,OSM 路网 + 完整交通设施高密度场景中的感知与导航测试
Village center小村庄中心,高写实度,使用 SUMO interface 管理交通流结合 SUMO 仿真的交通流测试

需要特别注意 Village winter 文档给出的提示:积雪/冰面与轮胎的摩擦现象非常复杂,该世界不应被当作"地面真值"(ground truth),只能作为粗略近似——这一原则同样适用于对 Realistic Village 物理摩擦模型(固定coulombFriction 8)的理解:它适合功能验证,而非精确的轮胎力学研究。

六、实战参考:可复用的工程要素

  • OSM 导入器工作流:如需生成自己的村庄场景,可参照 openstreetmap-importer 与 scenario-creation-tutorial,先导入真实地图,再按本世界的模式叠加建筑、植被与交通设施;
  • 接触参数模板:直接从 village_realistic.wbt 的WorldInfo.contactProperties复制轮胎摩擦配置(coulombFriction 8、softCFM 1e-05),可保证不同车型在场景中获得一致的抓地表现;
  • 道路标线与限速:RoadLine(实线/虚线)、SpeedLimitPanel.signImage的纹理替换方式可直接迁移到自定义路网;
  • 性能取舍:Realistic Village 以"更小规模 + 更多细节"为设计取向,相比 Village 更适合在硬件资源有限的环境下测试高细节场景;对需要夜间驾驶、交通流仿真或雪地场景的用例,则可分别选用 City night、Village center(SUMO)与 Village winter。
  • 科研
  • 自动驾驶
  • 物理引擎

【免费下载链接】webots

Webots Robot Simulator

项目地址:https://gitcode.com/gh_mirrors/web/webots
点击查看免费下载

相关推荐

上一篇:SlidingRootNav:Android侧滑导航库的终极指南与完整解析
下一篇:G-Helper笔记本风扇异常终极修复指南:5分钟快速解决散热问题

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询