Stage1 <<
Previous Next >> Tutorial2
Tutorial1
導引課程
本章的目的是解說 Webots 的基本概念,這些概念是自行創建模擬場景 (.wbt) 時必須用到的。學習重點在於熟悉機器人及其環境的模型建構流程,以及機器人控制器 (controllers) 的程式設計。進而學習如何尋找額外的教學資料。
本章適合 Webots 的初學者。不過,仍然需要有程式設計 (Programming) 的背景。範例是用 Python 語言編寫的。如果您不熟悉 Python 語言,透過基本說明應該還是能夠理解本章的控制器寫法,因為下面的 Python 程式非常簡單。除了程式設計,您不需要任何特定的知識即可完成本章中的教程。然而,基本的機器人學 (Robotcs)、數學 (Mathematics)、模型建構 (Modeling) 和樹狀表示法 (Tree representation) 的背景知識可能會有所幫助。有經驗的 Webots 使用者可以跳過最初的教程。不過,我們建議至少能花點時間閱讀這些教程的介紹和結論。
本章的每個部分(除了第一和最後一部分)都是一個導引課程。每個導引課程都有一個明確的教育目標,並在第一段中進行解釋。獲得的概念隨後會在結論子部分中總結。每一個導引課程都被設計成一系列互動操作步驟。要繼續進行下一個教程,通常需要掌握前一個教學中獲得的知識。因此,我們強烈建議按照導引所安排的順序進行。此外,我們建議在繼續進一步之前,確保已經理解了導引課程中的所有概念。
最後一部分將提供一些解決本章未涉及問題的提示。
導引課程的解決方案位於 Webots 安裝目錄的 "WEBOTS_HOME/projects/samples/tutorials" 子目錄中。
導引課程 1:在 Webots 中進行首次模擬
目標
本導引課程的目標是讓您熟悉用戶界面和 Webots 的基本概念。您將創建一個包含簡單環境的首次模擬:一個帶有地板和牆壁的競技場、幾個箱子、一個 e-puck 機器人和一個使機器人移動的控制程式。
步驟
1. 啟動 Webots:在您的電腦上打開 Webots (假如使用協同產品設計課程的可攜套件,啟動後在命令列中輸入 webotsw 即可開啟 Webots, 若要同時啟動串流伺服器,則可輸入 webotsw --stream,之後可利用瀏覽器在伺服器的 IP 位址上以串流內建埠號 1234 連接觀看場警)。
實作 #1:通過雙點擊 Webots 圖標(或在終端中從命令行調用)來啟動 Webots。如果您是第一次在此電腦上運行 Webots,可能會提示您選擇圖形主題。您也可能被邀請參加 Webots 指導遊覽,請關閉指導遊覽。
2. 創建新世界:
- 轉到 File -> New World。
- 使用適當的名稱保存新世界文件,例如 my_first_simulation.wbt。
3. 添加競技場:
- 在場景樹中,右鍵點擊 root 並選擇 Add New -> Solid。
- 將新固體重命名為 arena 並為其添加 Shape。
- 將其幾何形狀設置為 Box,並設置適當的尺寸(例如,1m x 1m x 0.01m)來表示地板。
- 為形狀添加 Material 並設置其顏色。
實作 #2:通過點擊 3D 視圖的暫停按鈕來暫停當前模擬(請參閱用戶界面描述以找到按鈕)。如果主工具欄上的虛擬時間計數器停止,則模擬被暫停。從 File / New / New Project Directory... 菜單項創建一個新項目並按照說明進行:
1. 將項目目錄命名為 my_first_simulation,而不是建議的 my_project。
2. 將世界文件命名為 my_first_simulation.wbt,而不是建議的 empty.wbt。
3. 點擊所有選框,包括默認未選中的 "Add a rectangle arena"。
4. 添加牆壁:
- 重複該過程以在競技場周圍添加四面牆壁。
- 調整它們的位置和尺寸以適合地板周圍。
實作 #3:在場景樹中雙擊 RectangleArena 節點。這應該會打開該節點並顯示其字段。
1. 選擇 floorTileSize 字段並將其值設置為 0.25 0.25 而不是 0.5 0.5。您應該立即在 3D 視圖中看到效果。
2. 選擇 wallHeight 字段並將其值更改為 0.05 而不是 0.1。競技場的牆壁現在應該變得更低。
5. 添加箱子:
- 在競技場內添加幾個箱子作為障礙物。
- 根據您的喜好設置它們的位置和尺寸。
實作 #4:在場景樹中雙擊 RectangleArena 以將其關閉並選中它。點擊場景樹頂部的添加按鈕。在打開的對話框中,選擇 PROTO nodes (Webots Projects) / objects / factory / containers / WoodenBox (Solid)。一個大箱子應該會出現在競技場的中央。在場景樹中雙擊它以打開其字段。
1. 將其尺寸更改為 0.1 0.1 0.1 而不是 0.6 0.6 0.6。
2. 將其平移更改為 0 0 0.05 而不是 0 0 0.3。或者,您可以使用 3D 視圖中出現的藍色箭頭來調整其 translation.z 字段。
3. 現在按住 Shift 鍵並在 3D 視圖中拖動箱子,將其移動到競技場的某個角落。
4. 選擇箱子並按 ctrl-C,ctrl-V(Windows,Linux)或 ⌘ command-C,⌘ command-V(macOS)來複製和粘貼它。按住 Shift 鍵並拖動新箱子將其移動到某個不同的位置。以這種方式創建第三個箱子。
5. 移動箱子,使競技場中央沒有箱子。您也可以使用藍色旋轉箭頭沿垂直軸旋轉箱子。這也可以通過按住 Shift 鍵並用右鍵拖動來完成。或者,您可以更改場景樹中 WoodenBox 節點的旋轉字段的角度。
6. 一旦您對結果滿意,請使用保存按鈕保存世界。
6. 添加 e-puck 機器人:
- 在場景樹中,右鍵點擊 root 並選擇 Add New -> Robot。
- 從可用機器人列表中選擇 e-puck 機器人。
實作 #5:選擇場景樹視圖中的最後一個節點 WoodenBox。點擊場景樹視圖頂部的添加按鈕。在對話框中,選擇 PROTO nodes (Webots Projects) / robots / gctronic / e-puck / E-puck (Robot)。一個 e-puck 機器人應該會出現在競技場的中央。像移動和旋轉箱子一樣移動和旋轉這個機器人。保存模擬並按下實時運行按鈕。
7. 創建控制程式:
- 在場景樹中右鍵點擊 e-puck 並選擇 Add New -> Controller。
- 選擇以 Python 程式語法創建一個新的控制器文件(例如,epuck_controller.py)並編寫一個簡單的程式來使機器人移動。例如:
from controller import Robot, Motor # 從 controller 模組導入 Robot 和 Motor 類別
TIME_STEP = 64 # 設置時間步長為 64 毫秒
# 創建 Robot 實例
robot = Robot()
# 擷取電機設備
leftMotor = robot.getDevice('left wheel motor') # 獲取左側輪子電機設備
rightMotor = robot.getDevice('right wheel motor') # 獲取右側輪子電機設備
# 設置電機的目標位置
leftMotor.setPosition(10.0) # 設置左側輪子電機的目標位置為 10.0
rightMotor.setPosition(10.0) # 設置右側輪子電機的目標位置為 10.0
while robot.step(TIME_STEP) != -1: # 當機器人步進時間步長不等於 -1 時(模擬仍在運行)
pass # 什麼也不做,保持循環運行
8. 保存並運行模擬:
- 保存您的世界文件。
- 點擊 Play 按鈕運行模擬並觀察機器人移動。
結論
在本導引課程中,您已經學習了如何在 Webots 中創建一個簡單的模擬,包括添加競技場、牆壁、障礙物和 e-puck 機器人。您還創建了一個基本的控制程式來使機器人移動。本導引課程已經為您探索 Webots 更進階功能提供了充實的基礎。
Stage1 <<
Previous Next >> Tutorial2