從頭開始學 Isaac Sim 04 -- 添加控制器 === ### 1 建立 Differential Controller 在前面,我們讓 SimpleRobot 能手動移動。不過這樣還需要我們自己去調參數,每一次模擬都要重新部屬,非常不方便。 所以在這節,要學會建立一個「差速控制器」(Differential Controller),讓機器人能透過控制訊號自動去移動。 ### 2 什麼是 Articulations(關節系統) 首先要先理解一個核心概念:Articulations。它的作用就是讓物理引擎能正確計算「機器人骨架與輪子」的運動關係。 可以把它想像成「骨架系統」:如果 Mesh(網格)是雕像的外表,Collider(碰撞體)是保護罩,那 Articulation 就像是「骨頭與關節」,讓你的機器人能真的動起來,而不是一個死板的模型。 ### 3 建立 Articulation Root 操作方式很簡單: 1. 在 Stage 視窗找到 SimpleRobot 的 xform 2. 右鍵 → Add → Physics → Articulation Root <p style="display:flex; align-items:center; justify-content:center;"> <img src="https://hackmd.io/_uploads/rJ_GYOpFgx.png" width="50%"> </p>> > 若想確認有無加入成功,到右下角的 Property 視窗中,檢查有無 Articulation Root 的區塊。 <p style="display:flex; align-items:center; justify-content:center;"> <img src="https://hackmd.io/_uploads/SyqS6_aFgg.png" width="50%"> </p>> **為什麼要先做這一步?** 因為控制器必須有「能夠驅動的骨架」,否則它不知道該怎麼去推動機器人。這就像你要開車,得先確定車子真的有輪子和引擎。 ### 4 加入 Differential Controller 接著我們要透過 OmniGraph 建立控制器,在 4.5 與 5.0 版本中操作如下: 1. 在上方選單 Tools → Robotics → OmniGraph Controllers → Differential Controller 2. 這時候會跳出一個設定視窗 <p style="display:flex; align-items:center; justify-content:center;"> <img src="https://hackmd.io/_uploads/Hyk4juTFge.png" width="50%"> </p>> 在這裡我們需要設定以下參數: * Robot Prim:加入 SimpleRobot * Wheel Radius(輪子半徑):假設直徑是 0.75,那半徑就是 0.375 * Wheel Distance(輪距):設定為 1.5 * Joints(控制關節):選擇後輪的兩個關節,因為我們要靠後輪來驅動 ### 5 認識 OmniGraph 節點 建立完成後,在 Stage 裡會多出一個 Graphs 資料夾,裡面有 differential\_controller。 <p style="display:flex; align-items:center; justify-content:center;"> <img src="https://hackmd.io/_uploads/HyW_JK6Fgx.png" width="50%"> </p>> 打開之後,你會看到四個節點: 1. On Playback Tick:每一幀(Frame)都會觸發後續節點,就像心臟跳動一樣。 2. Differential Controller:計算機器人移動的速度指令。左邊是輸入,右邊是輸出。 3. Articulation Controller:把速度指令轉換成輪子轉動,讓機器人真的跑起來。 4. MakeArray:用來放要控制的關節名稱,可以是一個,也可以是一組。 最後在 differential\_controller 上點擊右鍵,找到 Open Graph 就可以在下方的 Action Graph 畫面會看到 4 個方塊,彼此之間有連線,像是一條訊號流動的管線。 <div style="display:flex; align-items:center; justify-content:center; gap:20px;"> <img src="https://hackmd.io/_uploads/BJaEeY6txg.png" width="30%"> <img src="https://hackmd.io/_uploads/Sk15gKTFee.png" width="52%"> </div> ### 6 測試控制器 現在按下 Play,會發現機器人靜止不動,因為預設的 Desired Linear Velocity(期望線速度)是 0。 你可以打開 Differential Controller,把它調成: * Desired Linear Velocity = 1 → 向前移動 * Desired Linear Velocity = -1 → 後退 * Desired Angular Velocity = 1 → 旋轉 > Differential Controller 可以從 Action Graph 或是 Stage 直接打開。 ### 7 Summary 這一步我們成功讓 SimpleRobot 擁有「自動駕駛的基礎骨架」: * Articulations 負責讓物理正確運算 * Differential Controller 負責把指令轉換成運動 * OmniGraph 節點則把這整個流程串接起來 現在你的機器人已經能透過差速控制器移動,不再需要手動拖拉參數。下一步,我們會用鍵盤來操作,能夠更直覺地控制它的行走方向。 --- 希望我的內容對你有所幫助,想看到更多內容歡迎追蹤我的 IG、Threads 等平台。 Threads:[@minimalist_shine](https://www.threads.com/@minimalist_shine) IG:[@minimalist_shine](https://www.instagram.com/minimalist_shine/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up