
科研自動駕駛物理引擎【免費下載鏈接】webotsWebots Robot Simulator項目地址https://gitcode.com/gh_mirrors/web/webots點擊查看免費下載本篇指南以 Webots 開源倉庫中docs/automobile/worlds.md為主線系統(tǒng)梳理隨 Webots 一并分發(fā)的 12 個汽車仿真預置世界World涵蓋城市、高速、村莊、真實地圖導入與 SUMO 交通流仿真等典型場景。讀完本文你將掌握每個世界的文件位置、場景構(gòu)成、配套控制器與傳感器配置并能快速選擇或改造適合自己自動駕駛算法測試的仿真環(huán)境。預置世界總覽開箱即用的多樣化場景庫Webots 在安裝包中隨附了一批可直接運行的汽車仿真世界覆蓋了從簡單直線路段到完整城市中心的各種駕駛場景。這些世界統(tǒng)一存放在 projects/vehicles/worlds 目錄下全部基于 projects/vehicles 項目中的道路分段Road Segment、車輛 PROTO 和工具構(gòu)建而成其對應的文檔說明位于 docs/automobile 章節(jié)。worlds.md列出的 12 個世界及其對應文件如下世界對應 .wbt 文件場景特點City城市city.wbt小型城市街區(qū)、交通標志、受控路口、黃色中線City night城市夜景city_night.wbt夜間光照、路燈含一盞閃爍故障燈、車前燈City traffic城市交通city_traffic.wbt城市道路擴展 SUMO 生成車流CH MorgesCH_Morges.wbt基于 OpenStreetMap 導入的瑞士小城CH VensCH_Vens.wbt阿爾卑斯山區(qū)村莊ElevationGrid 起伏地形Highway高速highway.wbt帶出入口的簡單高速場景Highway overtake高速超車highway_overtake.wbt四車道高速 SUMO 密集車流 超車與雷達SUMO interface exampleSUMO 接口示例sumo_interface_example.wbt四路交叉口 信號燈 SUMO 聯(lián)動Village村莊village.wbt高寫實虛構(gòu)村莊Village center村莊中心village_center.wbt村莊中心區(qū)域SUMO 管理交通Village winter冬季村莊village_winter.wbt雪地場景隨積雪量變化的摩擦系數(shù)Realistic village寫實村莊village_realistic.wbt更小但細節(jié)更豐富的寫實村莊說明以_net結(jié)尾的同名目錄如city_net/、highway_net/是與對應世界配套的 SUMO 路網(wǎng)文件目錄只有使用了 SUMO 接口的世界才需要它們。城市系列從基礎車道保持到夜間與密集車流City基礎車道保持基準city.wbt呈現(xiàn)城市的一小部分區(qū)域包含若干大型建筑、交通標志和一個受信號燈控制的路口。它最顯著的設計特征是道路中央線為黃色這是為了方便基于車載攝像頭做車道保持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 傳感器避開障礙物對應的控制器實現(xiàn)位于 projects/vehicles/controllers/autonomous_vehicle。因此該世界非常適合作為攝像頭視覺車道保持算法的入門測試環(huán)境障礙物避讓SICK 距離傳感器算法的驗證場景城市低速駕駛的基礎對照基準。City night夜間魯棒性測試city_night.wbt與city場景結(jié)構(gòu)類似但模擬夜間光照條件太陽光被移除新增了若干路燈其中特意包含一盞閃爍的故障路燈同時啟用了車輛前部的 SpotLights 車前燈。閃爍路燈會對視覺算法形成擾動因此這個世界的定位非常明確——測試駕駛控制算法在夜間光照下的魯棒性。它可以與city世界形成晝夜對照實驗用于量化光照變化對視覺感知的影響。City trafficSUMO 車流擴展city_traffic.wbt是city世界的擴展道路網(wǎng)絡被加長并補充了更多樹木和建筑。與city世界一樣一輛車輛通過車載攝像頭自主跟隨道路中線行駛控制器同樣為autonomous_vehicle見 city_traffic.wbt在此基礎上SUMO 被用來在道路網(wǎng)絡上生成額外的交通流使場景同時具備本車自主駕駛 他車動態(tài)車流兩個要素。其配套路網(wǎng)目錄 city_traffic_net 提供了sumo.net.xml、sumo.rou.xml等 SUMO 文件詳見后文 SUMO 接口章節(jié)。真實地圖世界基于 OpenStreetMap 的瑞士城市場景CH Morges完整導入的瑞士湖畔小城Morges 是瑞士日內(nèi)瓦湖畔的一座中型城市。CH_Morges.wbt使用 OpenStreetMap importer 工具對整個城市中心進行了建模包含約 400 條道路、超過 1000 棟建筑以及若干小片森林、河流與湖泊等自然要素。這是倉庫中體量最大的真實地圖世界之一適合需要大規(guī)模、高密度城市環(huán)境的大規(guī)模仿真如車流調(diào)度、路徑規(guī)劃研究。CH Vens山地村莊與起伏地形Vens 是阿爾卑斯山中的一個小山村同樣由 OpenStreetMap importer 建模。它有兩個與眾不同的技術點使用 ElevationGrid 定義起伏不平的地面從而生成坡度不平的道路有一條從谷底通往村莊、并繼續(xù)延伸到山頂?shù)牡缆氛麠l道路和村莊都被森林環(huán)繞。村莊由約一百棟建筑組成。對于需要在帶坡度地形而非純平面上測試車輛動力學、爬坡能力或視覺地形的場景CH_Vens.wbt是一個現(xiàn)成選擇。從文件結(jié)構(gòu)看CH_Morges.wbt與CH_Vens.wbt均位于 projects/vehicles/worlds 下且與forest/目錄中的森林資源共用。高速系列路網(wǎng)拼裝與 SUMO 密集車流Highway預定義道路分段的拼裝示范highway.wbt是一個帶有多個高速出入口的簡單高速場景。它的核心教學意義在于展示如何使用預定義道路分段快速搭建高速路網(wǎng)——從 highway.wbt 的源碼結(jié)構(gòu)看場景由CurvedRoadSegment彎道分段、StraightRoadSegment直道分段、AddLanesRoadSegment車道數(shù)變化分段、LaneSeparation車道分離以及Road、Pose、Box等節(jié)點組合而成各分段通過connectedRoadIDs字段相互銜接。同時該世界頂部聲明了EXTERNPROTO webots://projects/default/protos/SumoInterface.proto并包含SumoInterface節(jié)點見 highway.wbt 與 L116說明高速車流由 SUMO 接口驅(qū)動。如果你需要快速搭建自己的高速出入口測試路網(wǎng)可以仿照該世界把直道 彎道 車道增減 車道分離幾種分段按順序擺放并設定連接關系即可在數(shù)分鐘內(nèi)得到一個結(jié)構(gòu)完整的互通式高速場景。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 窗口中顯示車輛前向雷達探測到的目標。該世界非常適合測試基于距離/雷達傳感器的自主超車決策邏輯并且由于雷達目標被可視化調(diào)試感知算法時能直觀看到雷達的探測范圍與目標關聯(lián)結(jié)果。世界標題為 Highway overtake、basicTimeStep為 10 ms見 highway_overtake.wbt。SUMO 接口Webots 世界與交通仿真的橋梁多個預置世界City traffic、Highway、Highway overtake、Village center、SUMO interface example 等都依賴 Webots 與 SUMO 節(jié)點用 Python 實現(xiàn)通過TraCI 協(xié)議與 SUMO 通信詳細說明見 sumo-interface.md。其核心價值在于能在仿真進行中實時生成大量車輛從而低成本地制造真實交通流。使用 SUMO 接口的前提條件要運行依賴 SUMO 的世界系統(tǒng)必須安裝 SUMO且環(huán)境變量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。路網(wǎng)文件與命名規(guī)則每個使用 SUMO 的世界其同級目錄下必須有名為worldName_net如sumo_interface_example_net的文件夾內(nèi)含 SUMO 定義路網(wǎng)的常規(guī)文件.edg.xml、.nod.xml、.rou.xml等以及.netccfg和.sumocfg配置。接口默認加載名為sumo.netccfg與sumo.sumocfg的配置文件若不存在則回退使用該目錄下任意其他名稱的配置不建議同目錄放置多份 SUMO/NETCONVERT 配置因為無法確定哪份會被使用。接口會在仿真開始時自動啟動 SUMO 并與 Webots 時間同步。每輛新進入 SUMO 仿真的車輛都會在 Webots 中創(chuàng)建其位置與朝向持續(xù)更新DEF 名被設置為SUMO_VEHICLEXX 為從 0 開始的車輛編號。反之若仿真中已存在 DEF 名為SUMO_VEHICLEX的車輛接口會優(yōu)先復用它們再創(chuàng)建新車可避免實時動態(tài)添加車輛造成的瞬時速度下降若 SUMO 車輛 ID 與場景中某車輛 DEF 名相同該車也會被自動關聯(lián)。若場景中存在 DEF 名為WEBOTS_VEHICLEX的車輛接口還會反向把它們的位姿注入 SUMO實現(xiàn)雙向閉環(huán)。車輛類型的映射規(guī)則為SUMO 車輛抽象類別為passenger默認時隨機選用一款汽車 PROTObus使用Busmotorbike在Motorbike與Scooter間隨機選擇trailer與truck分別選擇帶掛車與不帶掛車的TruckPROTO。SumoInterface PROTO 參數(shù)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 前先調(diào)用 NETCONVERT若已提供*.net文件應禁用enableTrafficLights是否啟用信號燈同步enableWheelsRotation車輛車輪是否旋轉(zhuǎn)旋轉(zhuǎn)更真實但會降低仿真速度maxVehicles從 SUMO 加入 Webots 的最大車輛數(shù)radius車輛可見半徑米車輛距視點超過該距離則不會加入 Webots負值表示加入全部車輛maximumLateralSpeed/maximumAngularSpeed車輛最大橫向速度m/s與最大角速度rad/slaneChangeDelay換道耗時秒此期間 Webots 與 SUMO 中車輛位置可能不同步enableHeight是否從邊edge名稱中提取高度信息實驗性stepSUMO 仿真步長毫秒應大于或等于世界步長portWebots 與 SUMO 通信端口seedSUMO 隨機數(shù)種子0表示基于時間的隨機種子等價于 SUMO 的--random選項networkFilesSUMO 路網(wǎng)文件所在目錄為空時默認使用世界文件同級的worldName_net目錄sumoArguments啟動 SUMO 時附加的參數(shù)display可選的SumoDisplay節(jié)點verbose是否在 Webots 控制臺打印 SUMO 輸出synchronization接口控制器是否與 Webots 同步children用于插入其他節(jié)點信號燈應加在該字段中。SumoDisplay 與信號燈同步如需在 Webots 內(nèi)部看到 SUMO 的 GUI 視圖例如模擬 GPS 視圖可在SumoInterface的display字段中放入SumoDisplay節(jié)點其字段為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節(jié)點名稱必須遵循trafficLightID_trafficLightIndex_r/y/g語法r紅、y黃、g綠接口才能把 SUMO 的信號燈狀態(tài)自動同步到 Webots??赏ㄟ^ Netedit 打開路網(wǎng)文件在交通燈模式下右鍵連接獲取trafficLightID與trafficLightIndex參考文檔中sumo_traffic_light配圖說明。插件機制除 PROTO 參數(shù)外接口還支持 Python 插件擴展插件需放在 SUMO 路網(wǎng)文件同一目錄實現(xiàn)SumoSupervisorPlugin類及兩個入口函數(shù)class SumoSupervisorPlugin: def __init__(self, supervisor, traci, net): # TODO def run(self, ms): # TODO__init__在接口初始化時調(diào)用參數(shù)依次為 Supervisor 本身、traci 類用于獲取 TraCI 上下文信息與 net 類用于獲取路網(wǎng)信息run在每次 SUMO 步進時調(diào)用參數(shù)為時間步長。該機制可用于在 SUMO 側(cè)修改信號燈狀態(tài)等自定義邏輯。倉庫中的 sumo_interface_example_net/plugin.py 即為真實插件示例。預置示例世界逐個剖析SUMO interface example接口最小演示sumo_interface_example.wbt是一個由信號燈控制的四路交叉口專門用于演示 SUMO 接口。其工作流程為仿真開始時 SUMO 以圖形模式啟動在horizontal水平道路上仿真若干車輛當一輛優(yōu)先車輛從vertical垂直道路駛來時車道傳感器會檢測到它隨后信號燈狀態(tài)發(fā)生改變。配套目錄 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 驅(qū)動的車輛在前部安裝了 Lidar 傳感器并顯示測量到的點云——其控制器為 projects/vehicles/controllers/enable_all_lidars見 sumo_interface_example.wbt世界步長basicTimeStep為 20 ms。這直觀展示了為 SUMO 控制的車輛采集傳感器數(shù)據(jù)的可行性只需按前文命名規(guī)則放置車輛、在傳感器插槽中添加傳感器并指定控制器即可。通用做法是在仿真中放入自己的車輛并設置合適的 DEF 名添加傳感器、指定控制器控制器即可啟用傳感器并把輸出記錄到文件或發(fā)送給外部進程。Village / Village center高寫實虛構(gòu)村莊village.wbt是一個小型虛構(gòu)村莊寫實度很高細節(jié)精心打磨包含橋梁、人行橫道、河流、樹木等所有路口都經(jīng)過精心設計并配有合適的道路標志全部交通標志齊全且配有動態(tài)信號燈。其 SUMO 路網(wǎng)目錄 village_net 表明該世界同樣接入 SUMO 車流。village_center.wbt則聚焦村莊中心區(qū)域?qū)憣嵍韧瑯雍芨卟⒚鞔_使用 SUMO 接口 管理交通配套目錄 village_center_net。這兩個世界適合需要美觀、寫實且元素完整的封閉村莊場景的視覺算法、行人避讓或基礎設施級仿真研究。Village winter積雪摩擦建模village_winter.wbt同樣是虛構(gòu)小村莊但處于冬季道路、建筑和樹木上覆蓋了不同厚度的積雪這會使車載攝像頭難以跟蹤道路更重要的是道路與輪胎之間的摩擦系數(shù)隨積雪量相應改變。從 village_winter.wbt 的WorldInfo.contactProperties結(jié)構(gòu)可以看到具體實現(xiàn)見 L25-L177定義了high_snow、medium_snow、low_snow三種接觸材質(zhì)并與車輛輪胎材質(zhì)如CitroenCZeroWheels、ToyotaPriusWheels組合成多組ContactProperties通過coulombFriction指定不同的庫侖摩擦系數(shù)道路表面則使用snowy_road系列 PBR 貼圖基礎色、粗糙度、法線、遮擋貼圖位于 projects/vehicles/worlds/textures/snowy_road建筑與地面覆雪使用snow.jpg紋理。需要特別注意的是雪/冰與輪胎間的摩擦現(xiàn)象非常復雜該世界不應被視為地面真值ground truth只能作為粗略近似。它適合用來測試算法在摩擦參數(shù)變化、視覺特征退化條件下的表現(xiàn)差異而不是用于標定真實物理參數(shù)。Realistic village細節(jié)增強版村莊realistic-village.md描述village_realistic.wbt與Village世界非常相似但規(guī)模更小、包含的細節(jié)多得多因此觀感更真實。配套目錄 village_realistic_net 表明它也接入 SUMO 車流。當場景規(guī)模不是瓶頸、而畫面真實度是關鍵例如生成合成訓練數(shù)據(jù)、視覺 SLAM 評測時優(yōu)先選擇這個世界。如何選擇與運行這些世界打開與運行在 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城市自主駕駛 動態(tài)車流City traffic大規(guī)模真實城市地圖CH Morges起伏地形 / 帶坡度道路CH Vens高速路網(wǎng)拼裝示范Highway密集車流下的超車決策與雷達調(diào)試Highway overtake理解 SUMO 接口機制SUMO interface example寫實村莊 動態(tài)信號燈Village / Village center雪地摩擦與低能見度測試Village winter高細節(jié)真實感場景Realistic village配套控制器一覽與這些世界配套的控制器全部位于 projects/vehicles/controllers包括autonomous_vehicle城市世界中的攝像頭 SICK 傳感器自動駕駛示例、highway_overtake高速超車控制、radar_target_tracker前向雷達目標可視化 supervisor、enable_all_lidars為 SUMO 車輛啟用全部激光雷達并顯示點云以及vehicle_driver/VehicleDriver、boomer、racing_wheel等車輛驅(qū)動相關控制器。閱讀這些控制器源碼可以完整復現(xiàn)預置場景中的自主駕駛行為??偨Y(jié)Webots 的 12 個汽車仿真預置世界構(gòu)成了一條從基礎車道保持到大規(guī)模真實城市 SUMO 車流的完整演進路徑。它們既可以直接用于算法驗證也可以作為搭建自定義場景的模板highway.wbt展示了如何用預定義道路分段拼裝路網(wǎng)city.wbt展示了如何組織自主車輛與傳感器sumo_interface_example.wbt與配套_net目錄則展示了如何接入 SUMO 實時車流并采集傳感器數(shù)據(jù)。結(jié)合 docs/automobile 章節(jié)中的工具如 OpenStreetMap importer與 SumoInterface 接口你可以基于這些預置世界快速構(gòu)建面向自動駕駛研究與教學的專業(yè)仿真環(huán)境。贊分享科研自動駕駛物理引擎【免費下載鏈接】webotsWebots Robot Simulator項目地址https://gitcode.com/gh_mirrors/web/webots點擊查看免費下載相關推薦從一句話到可復用的 AI 技能Refly 從零開始跑通實錄從一句話到可復用的 AI 技能Refly 從零開始跑通實錄 Refly 是一款開源的 AI 工作流與 Agent Skills 構(gòu)建工具你用一句自然語言描述科研自動駕駛物理引擎Webots 汽車仿真工具鏈從 OpenStreetMap 地圖生成世界到 SUMO 交通仿真的完整實戰(zhàn)指南Webots 汽車仿真工具鏈從 OpenStreetMap 地圖生成世界到 SUMO 交通仿真的完整實戰(zhàn)指南 Webots 為汽車仿真場景提供了一套完整的工具科研自動駕駛物理引擎Webots 汽車仿真 PROTO 節(jié)點全解析從 AckermannVehicle 底盤到完整整車模型Webots 汽車仿真 PROTO 節(jié)點全解析從 AckermannVehicle 底盤到完整整車模型 本文圍繞 Webots 開源機器人仿真器當前倉庫為科研自動駕駛物理引擎上一篇gogcli 群組成員管理實戰(zhàn)gog admin groups members remove 命令全面解析下一篇CesiumJS三維地球可視化終極指南從零構(gòu)建專業(yè)級WebGIS應用創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考