Webots介绍
Webots介紹
- 1 介紹
- 1.1 概述
- 1.2 應用
- 1.3 入門要求
- 1.4 技術支持
- 1.5 仿真步驟
- 世界(webots定義)
- 控制器
- 超級控制器
- 1.6 平臺能力
- 三維建模能力
- 物理引擎
- 外設支持
- 2 軟件使用
- 啟動webots
- 用戶界面
- 文件菜單
- 編輯菜單
- 查看菜單
- 模擬菜單
- 構建菜單
- 疊加菜單
- 工具菜單
- 幫助菜單
- 主工具欄
- 3D 窗口
- 場景樹
- 控制臺
- 首選項
- 3 Webots 應用程序示例
- 演示
- 設備
- 環境
- 幾何圖形
- 行為
- 渲染
- 4 編程語言設置
- 控制器啟動
- C/C++
- ROS
- TCP/IP
- 5 開發環境
- 項目文件層次結構
- 控制器目錄
- 6 編程基礎
- 7 教程
- 8 機器人
- 9 單板計算機
- 10 執行器
- 11 傳感器
- 12 對象
- 參考
1 介紹
1.1 概述
- 授權協議:Apache-2.0
- 開發語言:C/C++ Python JavaScript
- 操作系統:跨平臺
Webots是一款由商業變為免費的機器人仿真軟件,擁有豐富的學習資源和社區。
Webots 是用于模擬機器人的開放源代碼和多平臺桌面應用程序。它提供了一個完整的開發環境來對機器人進行建模,編程和仿真。
它被設計用于專業用途,并且廣泛用于工業,教育和研究。自 1998 年以來,Cyber??botics Ltd. 一直將 Webots 作為其主要產品。
Webots 提供了一個完整的開發環境來對機器人、車輛和機械系統進行建模、編程和仿真。
Webots是一款專業的移動機器人仿真軟件包。它提供了一個快速原型制作環境,允許用戶創建具有物理屬性(例如質量、關節、摩擦系數等)的 3D 虛擬世界。用戶可以添加簡單的被動對象或稱為移動機器人的主動對象。這些機器人可以有不同的運動方案(輪式機器人、腿式機器人或飛行機器人)。此外,它們可能配備許多傳感器和執行器設備,例如距離傳感器、驅動輪、相機、電機、觸摸傳感器、發射器、接收器等。最后,用戶可以單獨對每個機器人進行編程以表現出所需的行為. Webots包含大量機器人模型和控制器程序示例,幫助用戶入門。
Webots 還包含許多與真實移動機器人的接口,因此一旦您的模擬機器人按預期運行,您就可以將其控制程序轉移到真實機器人,如 e-puck、DARwIn-OP、Nao 等。可以添加新接口通過相關系統。
1.2 應用
- 移動機器人原型制作(學術研究、汽車行業、航空、吸塵器行業、玩具行業、愛好者等)
- 機器人運動研究(有腿、類人、四足機器人等)
- 多智能體研究(群體智能、協作移動機器人群體等)
- 適應性行為研究(遺傳算法、神經網絡、人工智能等)。
- 機器人教學(機器人講座、C/C++/Java/Python編程講座等)
- 機器人競賽(例如 Robotstadium 或 Rat’s Life)
1.3 入門要求
要對自己的機器人控制器進行編程,需要具備 C、C++、Java、Python 或 MATLAB 編程語言的基本知識。然而,即使您不懂這些語言,您仍然可以使用稱為 BotStudio 的簡單圖形編程語言對 e-puck 和 Hemisson 機器人進行編程。
如果您不想使用 Webots 中提供的現有機器人模型,而是想創建自己的機器人模型,或在模擬環境中添加特殊對象,則需要 3D 計算機圖形學和 VRML97 描述語言的基本知識。這將允許您在 Webots 中創建 3D 模型或從 3D 建模軟件導入它們。
1.4 技術支持
- 付費支持:https://www.cyberbotics.com/#services
- stackexchange 的webots 板塊:https://robotics.stackexchange.com/questions/tagged/webots
- github 討論區:https://github.com/cyberbotics/webots/discussions
- Discord 中的 webots 社區
1.5 仿真步驟
1.定義一個或多個機器人及其環境的Webots世界文件 (.wbt)。.wbt 文件有時確實依賴于外部 PROTO 文件 (.proto) 和紋理。
2.上述機器人的一個或多個控制器程序(C/C++/Java/Python/MATLAB)。
3.一個可選的物理插件,可用于修改 Webots 常規物理行為(在 C/C++ 中)。
世界(webots定義)
在 Webots 中,世界是對機器人及其環境屬性的 3D 描述。它包含每個對象的描述:位置、方向、幾何形狀、外觀(如顏色或亮度)、物理屬性、對象類型等。
世界保存在“.wbt”文件中。“.wbt”文件存儲在每個Webots項目的“worlds”子目錄中。
控制器
控制器是控制世界文件中指定的機器人的計算機程序。控制器可以用 Webots 支持的任何編程語言編寫:C、C++、Java、Python 或 MATLAB。當模擬開始時,Webots 啟動指定的控制器,每個控制器作為一個單獨的進程,并將控制器進程與模擬的機器人關聯起來。請注意,多個機器人可以使用相同的控制器代碼,但是將為每個機器人啟動不同的進程。
一些編程語言需要編譯(C 和 C++),其他語言需要解釋(Python 和 MATLAB),還有一些需要編譯和解釋(Java)。例如,C 和 C++ 控制器被編譯為依賴于平臺的二進制可執行文件(例如 Windows 下的“.exe”)。Python 和 MATLAB 控制器由相應的運行時系統(必須安裝)解釋。Java 控制器需要編譯為字節代碼(“.class”文件或“.jar”),然后由 Java 虛擬機解釋。
每個控制器的源文件和二進制文件一起存儲在一個控制器目錄中。控制器目錄放置在每個 Webots 項目的“controllers”子目錄中。
超級控制器
Supervisor控制器是字段設置為 的Robot的控制器,它可以執行通常只能由人類操作員執行而不能由真實機器人執行的操作。Supervisor控制器可以用上述任何一種編程語言編寫。然而,與常規機器人控制器不同的是,主管控制器將有權訪問特權操作。特權操作包括模擬控制,例如,將機器人移動到隨機位置,對模擬進行視頻捕獲等。
1.6 平臺能力
三維建模能力
支持常見三維格式文件的導入
(.obj、.fbx、.blender、.stl …)
物理引擎
使用開源引擎 open dynamic engine
外設支持
感知側的傳感器(光電、雷達等)
執行側的電機
2 軟件使用
啟動webots
https://www.cyberbotics.com/doc/guide/starting-webots
用戶界面
Webots GUI 由四個主要窗口組成:
- 顯示并允許您與 3D 模擬交互的3D 窗口
- 作為當前世界分層表示的場景樹
- 允許您編輯源代碼的文本編輯器
- 顯示編譯和控制器輸出的控制臺。
GUI 有八個菜單:File, Edit, View, Simulation, Build, Overlays, Tools和Help。
https://www.cyberbotics.com/doc/guide/the-user-interface
文件菜單
- New
-
- New Project Directory…:創建項目目錄,項目目錄包含多個子目錄,用于存儲與特定Webots項目相關的文件,即世界文件、控制器文件、數據文件、插件等。
-
- New World File…:創建一個簡單的世界文件,其中可能包含一些可選組件,包括矩形競技場。
-
- New Robot Controller…:創建一個新的機器人控制器程序。首先系統會提示您在 C、C++、Java、Python 或MATLAB TM控制器之間進行選擇。如果您在 Windows 上選擇 C ??或 C++,Webots 將為您提供創建 Makefile / gcc 項目或 Visual Studio 項目的可能性。然后,Webots 會要求您輸入控制器的名稱,最后它會在您當前的項目目錄中創建所有必要的文件(包括模板源代碼文件)。
-
- New Physics Plugin…:創建新的物理插件。Webots 要求您選擇編程語言(C 或 C++)以及新物理插件的名稱。然后它會在當前項目中創建一個目錄、一個模板源代碼文件和一個 Makefile。
-
- New PROTO…:創建一個新的 PROTO。Webots 要求您為 PROTO 節點定義名稱、應包含的標簽(如果有)以及 PROTO 本身將從中繼承的基本節點。根據基本節點的選擇,Webots 將詢問您應該公開其哪些字段(即,從場景樹中可見),并相應地創建必要的參數。然后,Webots會建議您在文本編輯器中打開PROTO文件,以便您可以繼續編輯它。最后,您將能夠在場景樹中插入新原型的實例,就像插入任何其他原型一樣。
- Open World…:打開并選擇要加載的“.wbt”文件。
- Open Recent World:通過從子菜單中顯示的列表中選擇最近打開的“.wbt”文件來重新打開該文件。
- Open Sample World:打開一個對話框,列出所有可用的示例世界,可以通過在搜索字段中輸入文件名或其一部分來搜索要加載的特定“.wbt”文件。
- Save World:使用當前文件名(顯示在主窗口頂部的文件名)保存當前世界。
- Save World As…:另存為
- Reload World:重新加載當前世界
- Reset Simulation:可恢復模擬的初始狀態。
- New Text File:在文本編輯器中打開一個空文本文件。
- Open Text File…:選擇要加載的文本文件(例如“.java”文件)。
- Save Text File:保存當前文本文件。
- Save Text File As…:另存為
- Save All Text Files:
- Revert Text File:從保存的版本重新加載文本文件。
- Print Preview…:打開一個窗口,允許您管理頁面布局,以便從文本編輯器打印文件。
- Print…:打印文本編輯器的當前文件。
- Take Screenshot…:截取 Webots 中當前視圖的屏幕截圖。它會打開一個文件對話框,將當前視圖保存為 PNG 或 JPG 圖像。
- Make Movie…:創建 MPEG 電影(Linux 和 macOS)或 AVI 電影(Windows)。除了選擇電影的分辨率和壓縮質量外,還可以通過設置以加速模式或慢動作記錄模擬Video acceleration彈出對話框中的值。
- Share…:項目允許您將當前世界導出為交互式 3D 場景(本節中有關此主題的更多信息),或將模擬記錄為 3D 動畫并將其發布到 HTML5 網頁上。對于這兩種選項,都可以將結果保存在本地或自動上傳到webots.cloud,以便其他人可以輕松共享和查看。如果開始錄制動畫,則此項更改為Stop HTML5 Animation recording.可用于停止動畫錄制。您可以在本節中獲得有關動畫的更多信息。
- Quit:終止當前模擬并關閉 Webots。
編輯菜單
編輯菜單提供了常用的文本編輯功能來操作在文本編輯器中打開的文件,例如復制、粘貼、剪切等。
文本編輯器可以僅作閱讀使用,編輯過程可以放在notepad++、vscode等中。
查看菜單
-
Rendering:
-
Follow Object:在固定(靜態)視點和跟隨移動對象(通常是機器人)的視點之間切換。如果您希望視點跟隨某個對象,首先您需要使用鼠標選擇該對象,然后根據您想要的以下行為檢查子菜單的一項。
-
Restore Viewpoint:將視點的位置和方向恢復到加載或恢復文件時的初始設置。當您在場景中迷路并想要返回原始視點時,此功能非常方便。
-
Move viewpoint to object:將視點移動到所選節點的中心并進行縮放。如果所選項目是字段,則將定位上層父節點。該對象將位于 3D 視圖的中心并且完全可見。
-
Align View to Object:移動并旋轉視點,使選定節點居中,并將視點對齊到六個對象對齊軸中的任意一個上
-
Change View:移動視點以將其對齊到圍繞選定對象的六個世界對齊軸中的任何一個。如果未選擇任何對象,視點將以世界原點為中心。
-
Fullscreen:全屏
-
Virtual Reality Headset:使用 HTC Vive 或 Oculus Rift 等虛擬現實耳機來查看模擬
-
Perspective Projection:透視投影(默認),透視模式對應于自然投影:其中物體距離觀察者越遠,它在圖像中出現的越小。
-
Orthographic Projection:正交投影,在正交投影中,距觀察者的距離不會影響物體的顯示大小。此外,在正交模式下,模型中平行的線會在屏幕上平行繪制,因此這種投影有時在建模階段很有用。在正交模式下不渲染陰影。
-
Plain Rendering:普通渲染(默認)
-
Wireframe Rendering:線框模式,普通渲染模式下,對象以其幾何面、材質、顏色和紋理進行渲染,就像眼睛或相機通常看到的一樣。線框渲染模式下,僅渲染可渲染圖元的片段。此模式對于調試網格體很有用。如果同時激活線框渲染模式和切換按鈕,則僅繪制邊界對象(而不是可渲染圖元)。View / Optional Rendering / Show All Bounding Objects這可用于調試碰撞檢測的問題。
-
Optional Rendering:可選渲染子菜單允許您顯示或隱藏補充信息。這些渲染僅在主渲染中顯示并隱藏在機器人相機中。它們用于更好地理解模擬的行為:
-
- Show Coordinate System:顯示坐標系,在 3D 窗口右下角顯示或隱藏全局坐標系,紅色、綠色和藍色箭頭分別代表 x、y 和 z 軸。
-
- Show All Bounding Objects:顯示所有邊界對象允許您顯示或隱藏所有邊界對象(在每個Solid節點的boundingObject字段中定義)。邊界對象由白線表示。這些線在碰撞發生時變為玫瑰色,而在實體空閑時變為藍色,即它停止并且不與任何其他活動實體相互作用。
-
- Show Contact Points:顯示或隱藏碰撞檢測引擎生成的接觸點。未顯示不產生相應接觸力的接觸點。僅針對使用物理模擬的對象生成接觸力(需要物理節點)。
-
- Show Connector Axes:顯示連接器軸允許您顯示或隱藏連接器軸。旋轉對齊用黑色表示,而 y 軸和 z 軸分別用綠色和藍色表示。
-
- Show Joint Axes:顯示關節軸允許您顯示或隱藏關節軸。關節軸由黑線表示。
-
- Show RangeFinder Frustums:使用黃色線框顯示或隱藏場景中每個測距儀的 OpenGL 剔除視錐體和記錄圖像。如果測距儀被禁用或第一張圖像不可用,則平截頭體將以灰色繪制。OpenGL 剔除截錐體是一個截頂金字塔,對應于測距儀的視野。記錄的圖像顯示在平截頭體描述的平面上,距離對應于距離設備中心的測距儀的最小范圍。有關此概念的更多信息可在 OpenGL 文檔中找到。
-
- Show Lidar Rays Paths:顯示激光雷達射線路徑允許您使用青色線框顯示或隱藏場景中每個激光雷達的層(激光射線路徑)。如果激光雷達設備已禁用或第一次測量尚不可用,則圖層將以灰色繪制。
-
- Show Lidar Point Cloud:顯示激光雷達點云允許您顯示或隱藏場景中以點云模式啟用的每個激光雷達的點云。點云由點本身的位置以及從激光雷達原點到點的光線表示,使用從藍色(頂層)到紅色(底層)的漸變。這種可選渲染的計算成本很高,因此會顯著降低模擬速度。請注意,如果點云包含超過 2500 個點,則不會顯示從激光雷達原點到該點的光線。
-
- Show Camera Frustums:使用洋紅色線框顯示或隱藏場景中每個相機的 OpenGL 剔除平截頭體和記錄的圖像。如果相機設備被禁用或第一張圖像尚不可用,則視錐體將以灰色繪制。
-
- Show DistanceSensor Rays:顯示距離傳感器光線允許您顯示或隱藏距離傳感器設備投射的光線。這些光線被繪制為紅線(超出碰撞點時變為綠色)。它們的長度對應于設備的最大范圍。如果距離傳感器設備被禁用或第一次測量尚不可用,則光線將以灰色繪制。
-
- Show LightSensor Rays:顯示光傳感器光線允許您顯示或隱藏光傳感器設備投射的光線。這些光線被繪制為黃線。如果光傳感器設備被禁用或第一次測量尚不可用,光線將以灰色繪制。
-
- Show Light Positions:顯示或隱藏PointLight和SpotLight燈的位置。 未表示 DirectionalLight節點。PointLight和SpotLight節點由一個被光暈包圍的彩色圓圈表示。
-
- Show Pen Painting Rays:顯示或隱藏筆設備繪畫的光線。如果啟用繪畫,這些光線將繪制為紫色線,否則繪制為灰色線。
-
- Show Normals:顯示或隱藏IndexedFaceSet和Mesh節點的法線。如果未使用 IndexedFaceSet 折痕, creaseAngle法線的顏色為洋紅色,否則為黃色。法線表示的長度與WorldInfo lineScale參數成正比。
-
- Show Radar Frustums:顯示雷達截錐體允許您顯示或隱藏雷達截錐體。如果雷達設備啟用,則視錐體繪制為藍色,否則,如果雷達禁用或第一次測量尚不可用,則視錐體繪制為灰色。雷達截錐表示雷達可以檢測到目標的體積。
-
- Show Center Of Mass:顯示或隱藏具有非 NULL Physics節點的選定實體的全局質量中心。質心呈現為深藍色。
-
- Show Center Of Buoyancy:顯示浮力中心允許您顯示或隱藏具有非 NULL物理節點的選定實體的全局浮力中心。浮力中心呈現為紫色。
-
- Show Support Polygon:顯示支撐多邊形允許您顯示或隱藏具有非 NULL物理節點的選定實體的支撐多邊形。通過支撐多邊形,我們指的是實體接觸點的凸包在包含最低接觸點的水平面上的投影。此外,如果后一個平面中的質心投影位于支撐多邊形(靜態平衡)內,則該投影將呈現為綠色,否則呈現為紅色。只能對頂部沒有其他實體的實體激活此渲染選項。
-
Scene Interactions:“場景交互”,允許您禁用某些用戶與 3D 場景的交互,例如選擇或移動對象或移動視點。這些選項可用于通過禁用一些不需要的功能來改善與 3D 場景的交互,或者阻止某些交互,例如在通過網絡傳輸模擬時。
-
- Lock Viewpoint:鎖定視點,防止您在 3D 窗口上拖動鼠標或移動鼠標滾輪時更改視點節點的位置和方向。當您不想意外更改視點的位置和方向時,這特別有用。
-
- Disable Selection:禁用選擇,阻止您在單擊 3D 窗口時更改選定的實體節點。這在建模階段特別有用,當您想要更改視點而不修改場景樹中的可見字段和選定字段時。
-
- Disable 3D View Context Menu:禁用3D 視圖上下文菜單,可防止在 3D 窗口上單擊鼠標右鍵時打開節點上下文菜單。但右鍵單擊場景樹中的節點仍然可以打開上下文菜單。這在 Web 流傳輸期間特別有用,其中上下文菜單直接在客戶端 Web 界面上打開,不需要在 Webots 服務器實例上打開。
-
- Disable Object Move:禁用對象移動,可防止使用平移和旋轉手柄或方法從 3D 窗口移動對象SHIFT + mouse drag/mouse wheel。仍然可以通過更改場景樹中的平移和旋轉字段來移動對象。這在在線比賽中特別有用,用戶應該在不作弊和手動移動物體或機器人的情況下完成任務。
-
- Disable Force and Torque:禁用力和扭矩,可防止從 3D 窗口向對象施加力或扭矩。這在在線比賽中特別有用,用戶應該在不作弊和手動移動物體或機器人的情況下完成任務。
-
- Disable Fast Mode:禁用快速模式,可防止在快速模式下運行模擬。此選項在網絡流傳輸的情況下非常有用,可以節省服務器端的計算機電量,并且僅使客戶端可以使用停止、步進和實時模式。
模擬菜單
- Pause:暫停菜單項,可暫停模擬。
- Step:單步菜單項,執行模擬的一個基本時間步長。此步驟的持續時間在WorldInfo節點的basicTimeStep字段中定義,并且可以在場景樹窗口中調整以滿足您的需要。
- Real-time:實時菜單項實時運行模擬,直到被Pause或中斷Step。在快速模式下,場景的 3D 顯示每n 個基本時間步刷新一次,其中n在WorldInfodisplayRefresh節點的字段中定義。
- Fast:快速菜單項類似于Real-time,只是它以盡可能快的速度運行。
- Rendering:渲染菜單項禁用或啟用圖形渲染。禁用(黑屏)圖形渲染可以實現更快的模擬,因此非常適合 CPU 密集型模擬(遺傳算法、視覺、學習等)。
構建菜單
構建菜單提供編譯(或交叉編譯)控制器代碼的功能。
疊加菜單
Overlays菜單提供特定于渲染設備覆蓋(Camera 、Display、 Rangefinder)的操作。僅當在 3D 窗口中選擇機器人時,此菜單的某些操作才會激活:
- Hide All Camera Overlays:隱藏 3D 視圖中的所有相機設備覆蓋,獨立于Camera Devices子菜單中設置的特定機器人設備選項。
- Hide All RangeFinder Overlays:隱藏 3D 視圖中的所有相機設備覆蓋,獨立于RangeFinder Devices子菜單中設置的特定機器人設備選項。
- Hide All Display Overlays:隱藏 3D 視圖中的所有顯示設備覆蓋,獨立于Display Devices子菜單中設置的特定機器人的設備選項。
工具菜單
- 3D View:3D視圖菜單項顯示或隱藏 3D 窗口,并允許您與 3D 模擬進行交互。
- Scene Tree:場景樹菜單項打開一個Scene Tree窗口,您可以在其中編輯虛擬世界。或者,也可以雙擊主窗口中的某些對象:這會自動打開場景樹并選擇相應的對象。
- Text Editor:文本編輯器菜單項可打開 Webots 文本編輯器。該編輯器可用于編輯和編譯控制器源代碼。
- Documentation:文檔菜單項顯示或隱藏離線 Webots 文檔窗口。
- Restore Layout:恢復布局菜單項恢復主窗口面板的出廠布局。
- Clear All Consoles:清除所有控制臺菜單項可清除所有打開的控制臺的內容。
- New Console:新控制臺菜單項打開一個新控制臺,默認情況下顯示所有日志。
- Edit Physics Plugin: 編輯物理插件菜單項在文本編輯器中打開物理插件的源代碼。
- Preferences:首選項項會彈出本節中描述的窗口。
幫助菜單
通過“幫助”菜單可以更輕松地訪問文檔、支持和一般信息。
- About…:打開顯示許可證信息的窗口。
- Webots Guided Tour…:啟動了一個通過一系列示例演示 Webots 功能的導覽。
- Check for updates…:彈出一個窗口,通知正在使用的 Webots 版本是否是最新版本,并提供下載最新版本的鏈接(如果需要)。
- OpenGL Information…:提供有關當前 OpenGL 硬件和驅動程序的信息。它可用于診斷渲染問題。
其余的菜單項以 HTML 頁面、PDF 文檔等形式顯示各種信息。
主工具欄
- Hide/Show Scene Tree:顯示或隱藏場景樹并相應地調整 3D 窗口的大小。
- Add: 添加節點或對象。
3D 窗口
https://www.cyberbotics.com/doc/guide/the-3d-window
場景樹
https://www.cyberbotics.com/doc/guide/the-scene-tree
控制臺
Webots 控制臺顯示來自 Webots 的日志(例如打開世界時的解析警告或錯誤、編譯輸出、ODE 警告等)和控制器的輸出。
https://www.cyberbotics.com/doc/guide/the-console
首選項
https://www.cyberbotics.com/doc/guide/preferences
3 Webots 應用程序示例
Webots 包提供的示例世界可以輕松測試;“.wbt”文件位于“ WEBOTS_HOME/projects ”目錄的各個“worlds”目錄中,可以使用菜單Open Sample World中的項目直接從Webots打開File。控制器代碼位于相應的“controllers”目錄中。
演示
在“ WEBOTS_HOME/projects/samples/demos/worlds ”目錄中找到相應的“.wbt”文件;
在“ WEBOTS_HOME/projects/samples/demos/controllers ”目錄中找到它們的控制器源代碼。
anaglyph.wbt(浮雕)
gantry.wbt(龍門)
hexapod.wbt(六足)
moon.wbt(月亮)
soccer.wbt(足球)
stewart_platform.wbt(Stewart 并聯機械臂)
設備
世界文件位于“ WEBOTS_HOME/projects/samples/devices/worlds ”目錄中;
其控制器位于“ WEBOTS_HOME/projects/samples/devices/controllers ”目錄中。
accelerometer.wbt(加速度計)
altimeter.wbt(高度計)
battery.wbt(電池)
brake.wbt(剎車)
bumper.wbt(保險杠)
camera.wbt(相機)
camera_auto_focus.wbt(相機自動對焦)
camera_motion_blur.wbt(相機運動模糊)
camera_noise_mask.wbt(相機降噪)
camera_recognition.wbt(相機識別)
camera_segmentation.wbt(相機分割)
compass.wbt(指南針)
connector.wbt(連接器)
coupled_motors.wbt(耦合電機)
display.wbt(顯示)
distance_sensor.wbt(距離傳感器)
emitter_receiver.wbt(發射器-接收器)
encoders.wbt(編碼器)
force_sensor.wbt(力傳感器)
force3d_sensor.wbt(三維力傳感器)
gps.wbt(gps)
gps_lat_long.wbt(gps 經緯度)
gyro.wbt(陀螺儀)
hinge_joint_with_backlash.wbt(帶隙鉸鏈接頭)
hinge_2_joint_with_backlash.wbt(鉸2接頭帶隙)
hokuyo.wbt(北洋)
imu.wbt(imu)
inertial_unit.wbt(慣性單元)
laser_pointer.wbt(光電傳感器)
led.wbt(LED)
lidar.wbt(雷達)
light_sensor.wbt(光傳暗器)
linear_motor.wbt(線性電機)
motor.wbt(電機)
motor2.wbt(電機2)
motor3.wbt(電機3)
pen.wbt(筆)
position_sensor.wbt(位置傳感器)
propeller.wbt(螺旋槳)
radar.wbt(雷達)
range_finder.wbt(測距儀)
receiver_noise.wbt(接收器噪聲)
sick.wbt(sick)
sick_point_cloud.wbt(sick 點云)
skin.wbt(使用Skin設備制作人體操縱模型的動畫)
speaker.wbt(揚聲器)
speaker_text_to_speech.wbt(揚聲器_文本到語音)
spherical_camera.wbt(球形相機)
supervisor.wbt(supervisor)
track.wbt(軌道)
環境
Webots 對象是模塊化且可參數化的,因此可以從這些示例開始簡單地創建其他環境。
這些示例的世界文件位于“ WEBOTS_HOME/projects/sample/environments/ ”目錄中。
室外和城市環境位于“ WEBOTS_HOME/projects/vehicles/worlds ”中。
apartment.wbt(公寓)
break_room.wbt(休息室)
complete_apartment.wbt(完整公寓)
factory.wbt(工廠)
hall.wbt(大廳)
kitchen.wbt(廚房)
幾何圖形
Webots 中可用的幾何圖元,對應示例的世界文件位于“ WEBOTS_HOME/sample/geometries/worlds ”目錄中。
extended_solids.wbt(擴展實體)
extrusion.wbt(擠壓)
floating_geometries.wbt(浮動幾何體)
geometric_primitives.wbt(幾何基元)
high_resolution_indexedfaceset.wbt(高分辨率索引面集)
muscle.wbt(肌肉)
physics_primitives.wbt(物理基元)
polygons.wbt(多邊形)
textured_boxes.wbt(紋理框)
textured_proto_shapes.wbt(紋理原型形狀)
textured_shapes.wbt(紋理形狀)
webots_box.wbt(webots盒子)
行為
復雜行為和/或功能的各種示例。這些示例位于“ WEBOTS_HOME/projects/samples/howto/ ”中。每個示例都有自己的控制器和世界目錄。
asymmetric_friction1.wbt(非對稱摩擦1)
asymmetric_friction2.wbt(非對稱摩擦2)
binocular.wbt(雙目)
biped.wbt(雙足)
center_of_mass.wbt(質量中心)
console.wbt(控制臺)
custom_robot_window_simple.wbt(定制機器人窗口簡單)
custom_robot_window.wbt(定制機器人窗口)
cylinder_stack.wbt(氣缸堆棧)
force_control.wbt(力控制)
four_wheels.wbt(四輪)
gears.wbt(齒輪)
inverted_pendulum.wbt(倒立擺)
mouse_events.wbt(鼠標事件)
omni_wheels.wbt(全向車輪模型)
openai_gym.wbt(OpenAI Gym)
passive_dynamic_walker.wbt(被動動態步行機器人)
pedal_racer.wbt(踏板賽車)
physics.wbt(物理插件下機器人)
rolling_friction.wbt(滾動摩擦)
rope.wbt(繩索)
sick_terrain_scanning.wbt(sick地形掃描)
spinning_top.wbt(旋轉的陀螺)
supervisor_draw_trail.wbt(supervisor繪制軌跡)
texture_change.wbt(紋理變化)
url.wbt(URL形式引用資源)
vision.wbt(視覺)
ziegler_nichols.wbt(電機 PID參數)
渲染
Webots 的高級 3D 渲染功能。此處提供的示例可用作使用高級渲染技術創建您自己的模擬的起點。這些示例的世界文件位于“ WEBOTS_HOME/projects/samples/rendering/worlds ”目錄中。
animated_skin.wbt(動畫皮膚)
physically_based_rendering.wbt(基于物理渲染)
sponza.wbt()
4 編程語言設置
Webbot 可以執行用編譯語言(C/C++、Java)或解釋語言(Python、MATLAB)編寫的控制器。編譯或解釋過程需要額外的軟件,這些軟件通常必須單獨安裝。僅在Windows平臺上使用C/C++時不需要安裝單獨的C/C++編譯器;在此平臺上,Webots 附帶預安裝和預配置的 MinGW C/C++ 編譯器副本。對于任何其他語言或平臺,必須單獨安裝軟件開發工具。請注意,Webots 使用非常標準的工具,這些工具可能已經存在于標準安裝中。否則,本章中的說明將為您提供有關軟件開發工具安裝的建議。
控制器啟動
.wbt 文件包含需要為每個機器人啟動的控制器的名稱。控制器名稱是一個獨立于平臺和語言的字段;例如,當控制器名稱在 .wbt 文件中指定為“xyz_controller”時,這并沒有說明控制器的編程語言或平臺。這樣做是為了確保.wbt文件獨立于平臺和編程語言。
當 Webots 嘗試啟動控制器時,它必須首先確定該控制器使用的編程語言。因此,Webots 在項目的控制器目錄中查找與控制器名稱匹配的子目錄。然后,在此控制器目錄中,它會查找與控制器名稱相匹配的文件。例如,如果控制器的名稱是“xyz_controller”,則 Webots 會在“PROJECT_DIRECTORY/controllers/xyz_controller”目錄中按指定順序查找這些文件。
- “xyz_controller[.exe]”(二進制可執行文件)
- “xyz_controller.class”(Java 字節碼類)
- “xyz_controller.jar”(Java .jar 文件)
- “xyz_controller.bsg”(Webots/BotStudio 文件)
- “xyz_controller.py”(Python 腳本)
- “xyz_controller.m”(MATLAB 腳本)
C/C++
Windows 版本的 Webots 預裝了 MinGW C/C++ 編譯器,因此通常無需安裝單獨的編譯器。
Webots 版本中提供了 C++ API 的源代碼。您可能有興趣查看包含頭文件的目錄(“include/controllers/cpp”)以獲得每個類和函數的精確定義,盡管參考指南提供了對公共函數的清晰描述。
ROS
https://www.cyberbotics.com/doc/guide/using-ros
TCP/IP
https://www.cyberbotics.com/doc/guide/interfacing-webots-to-third-party-software-with-tcp-ip
5 開發環境
https://www.cyberbotics.com/doc/guide/development-environments
Webots源代碼編輯器是一個多標簽文本編輯器,專門用于開發Webots控制器。通常建議使用此編輯器,因為它使編譯變得簡單。該編輯器具有 Webots 支持的語言(C/C++、Java、Python 和MATLAB TM )的語法突出顯示和 Webots C API 的自動完成功能。
項目文件層次結構
項目的根目錄至少包含一個名為“worlds”的目錄,其中包含一個世界文件。但通常還需要其他幾個目錄:
- “controllers”:此目錄包含當前項目的每個世界文件中可用的控制器。世界文件和這個目錄之間的鏈接是通過機器人節點的控制器字段完成的。有關此目錄的更多信息,請參見以下小節。
- “protos”:該目錄包含當前項目所有世界文件可用的PROTO文件。
- “plugins”:此目錄包含當前項目中可用的插件。世界文件和這個目錄之間的鏈接是通過WordInfo節點的物理場完成的。
- “worlds”:此目錄包含世界文件、項目文件(見下文)和紋理(通常位于名為“textures”的子目錄中)。
控制器目錄
該目錄包含控制器。每個控制器都在一個目錄中定義。控制器由目錄名稱引用。這是控制器目錄的示例,其中包含一個用 C 語言編寫的可以編輯和執行的簡單控制器。
controllers/ controllers/simple_controller/ controllers/simple_controller/Makefile controllers/simple_controller/simple_controller.c controllers/simple_controller/simple_controller[.exe]6 編程基礎
https://www.cyberbotics.com/doc/guide/programming-fundamentals
7 教程
https://www.cyberbotics.com/doc/guide/tutorials
8 機器人
https://www.cyberbotics.com/doc/guide/robots
Webots 中包含的所有機器人模型都列在這里。用戶還可以添加自己的自定義模型。
9 單板計算機
https://www.cyberbotics.com/doc/guide/single-board-computers
NVIDIA Jetson Nano
10 執行器
https://www.cyberbotics.com/doc/guide/actuators
11 傳感器
https://www.cyberbotics.com/doc/guide/sensors
12 對象
https://www.cyberbotics.com/doc/guide/objects
參考
1、官網–cyberbotics
2、從零開始的Webots入門教程與實戰
3、github–webots
4、Webots教程(根據官網教程)
5、【webots教程】編寫你的第一個控制器
6、Webots 舵輪底盤小教程
總結
- 上一篇: 汽车座舱域控制器
- 下一篇: tensorRT-lenet C++代码