Microsoft Robotics Studio (MSRS) 雖然名為機器人開發工具,但其功能遠超機器人控制。這個約兩年前由 Microsoft Research 推出的工具包,提供了基於服務導向架構的運行庫、視覺化編程語言 (VPL) 以及視覺模擬環境 (VSE),讓開發者無需昂貴硬體即可構建複雜的機器人模擬應用。
MSRS 運行庫建立在 CLR 2.0 之上,包含兩大核心組件:
安裝 MSRS 後需確認顯示卡支援 DirectX 9.0、頂點著色器 VS_2_0 及像素著色器 PS_2_0 以上版本。物理引擎採用 AGEIA PhysX,無需額外購買物理加速卡即可運作。
啟動「基本模擬環境」可看到地球儀與箱狀物體,實際場景還包含主攝影機、地面、天空與太陽等實體。透過「模式」→「編輯」可檢視並修改所有實體屬性,包括位置、渲染方式等。
圖 1 基本模擬環境
圖 2 編輯模式下的實體屬性面板
實體類型是建立實體的模板。VSE 中透過「實體」→「新建」對話框可添加預設實體類型(如 iRobot Create)。但若要模擬不在預設清單中的機器人(如 Parallax Boe-Bot),需自行建立實體類別。
圖 3 新建實體對話框
使用 Visual Studio 建立「Simple Dss Service (1.5)」專案,需引用以下組件:
圖 4 新建 DSS 服務專案
核心命名空間引用:
using Microsoft.Robotics.Simulation;
using Microsoft.Robotics.Simulation.Engine;
using engineproxy = Microsoft.Robotics.Simulation.Engine.Proxy;
using Microsoft.Robotics.Simulation.Physics;
using Microsoft.Robotics.PhysicalModel;
Boe-Bot 採用差速驅動系統,因此繼承 DifferentialDriveEntity 可重用移動邏輯。建構函數中需設定質量、底盤尺寸、輪子參數等物理特性,並指定網格模型檔案 (boe-bot.bos)。
圖 5 BoeBot 實體類別程式碼
使用 SoftImage 等 3D 工具建立 .obj 格式模型,再透過 MSRS 提供的 Obj2bos.exe 轉換為優化的 .bos 二進位格式:
Obj2bos.exe /i:"store\media\Boe-bot.obj"
圖 6 SoftImage 中的 Boe-Bot 網格模型
在服務的 Start() 方法中呼叫 PopulateWorld() 添加實體:
private void PopulateWorld() {
AddSky();
AddGround();
AddBoeBot(new Vector3(1, 0, 1));
AddBox(new Vector3(2, 1, 1));
}
AddSky() 建立天空穹頂與方向光源;AddGround() 使用高度場實體建立地面;AddBoeBot() 實例化機器人並啟動模擬驅動服務;AddBox() 添加障礙物。
圖 7 添加天空與光源
圖 8 建立箱狀障礙物
使用 DSS Manifest Editor 設定服務合作夥伴,加入 SimpleDashboard 作為控制面板。執行專案後,在 SimpleDashboard 中輸入 localhost 連接,即可使用虛擬搖桿控制 Boe-Bot 在場景中移動並與障礙物碰撞。
圖 9 DSS 清單編輯器最終配置
圖 10 SimpleDashboard 控制介面
圖 11 虛擬環境中操控 Boe-Bot
若需模擬三輪驅動等其他系統,需自行實作對應的驅動類別。MSRS 的可擴充架構支援任意硬體平台,這正是其在學術研究中的核心價值。
模擬雖無法完全複製真實世界的干擾因素,但提供了低成本、高安全性的驗證平台,尤其適合資源有限的教學與研發環境。