[Robotics Studio] Sumo - 相撲機器人 -- Day 19

  • 8303
  • 0
  • 2009-02-17

[Robotics Studio] Sumo - 相撲機器人 -- Day 19

繼續鬼混 -- 話說 RDS 安裝完畢以後, 有個不錯玩的範例 - Sumo (相撲機器人)
就在安裝目錄的  Samples\Simulation\Competitions\SimulatedSumoServices 下面.

你可以雙點擊該目錄的 SumoCompetition.sln , 就會開啟 VS 2008 (or VS 2008 express)
然後將 SimulatedSumoReferee 設為預設執行的專案, 你就可以開始執行了,
你應該會看到 Simulated Sumo Referee 的對話框:

image

下拉 Select a Sumo Player, 點選 "http://schemas.tempuri.org/2007/02/sumoplayer.html"
(那個 mysumo1.html 是我自己寫的, 等下會介紹如何生出來...)
就會看到 Player 1 生出來了, 再做一次, 就會看到 Player 2 , 還有一個 Start the Match! 按鈕:

image

當然, 此時你的 VSE 畫面上就生出兩隻相撲機器人準備對戰了:

image

按下 Start the Match!, 你的兩隻機器人就會對打...

image

然後有三回合, 三個回合以後, 就判出勝負啦:

image

好玩吧!

那我們要如何自己寫一個虛擬相撲機器人的程式碼呢?

首先啟動 DSS Command Prompt (在開始程式集, 安裝的 MRDS 下面)

image

然後在命令視窗當中輸入 MakeSumoPlayer /name:"mysumo" /force:true
(name 後面的名字你可以自己定, 我用 mysumo 當範例, 如果你自己定義, 記得下面的範例自己替換一下名稱就可以)

之後就會輸出像這樣的:

*   The new sumo player project is in: C:\Users\lane\Microsoft Robotics Dev
    Studio 2008
    Express\samples\simulation\competitions\simulatedsumoservices\mysumo
*   Total time: 0.4 seconds.

然後你可以用新增現有專案, 把剛剛生出來的專案加入原本的 SumoCompetition 方案當中, 然後建置它:

image

什麼?! 三項錯誤...這不是你的 bug, 也不是我的 bug, 這是微軟附上這個範例的 bug...
但是很簡單就可以修正 (只是因為 DSSCategory 設錯而已):
DSS Category 必須是 URI , 所以你必須到 mysumo.cs 當中修改 DSSCategory:

image

把 "SumoPlayer" 改為 "http://schemas.microsoft.com/robotics/2007/02/sumo/categories/sumoplayer.html"

就可以解決.

建置完成後, 你需要把 mysumo 改為預設專案, 執行它, 目的是讓他去跟系統註冊一下 (等到最後會停在 Service Started ..., 之後就可以中斷了), 這樣待會 SimulatedSumoReferee 才會找到它, 然後再切回 SimulatedSumoReferee 執行.
這次下拉選單你就會看到 mysumo 囉.

image

你可以拉一個 mysumo 跟 系統原本的 sumoplayer 對戰...
(現在當然是一樣的 code 拉...)
之後我們再來更改它...