继之前分享的一篇《Robotics Studio学习教程:第十八天——通过 Web Interface 控制DSS》, 我们将继续分享下一篇《Robotics Studio学习教程:第十九天——相扑机器人》,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。
[Robotics Studio] Sumo - 相扑机器人 -- Day 19
继续鬼混 -- 话说 RDS 安装完毕以后, 有个不错玩的范例 - Sumo (相扑机器人) , 就在安装目录的Samples\Simulation\Competitions\SimulatedSumoServices 下面.
你可以双点击该目录的 SumoCompetition.sln , 就会开启 VS 2008 (or VS 2008 express), 然后将SimulatedSumoReferee 设为预设执行的项目, 你就可以开始执行了, 你应该会看到 Simulated Sumo Referee 的对话框:
下拉 Select a Sumo Player, 点选 "http://schemas.tempuri.org/2007/02/sumoplayer.html" (那个 mysumo1.html 是我自己写的, 等下会介绍如何生出来...), 就会看到 Player 1 生出来了, 再做一次, 就会看到 Player 2 , 还有一个 Start the Match! 按钮:
当然, 此时你的 VSE 画面上就生出两只相扑机器人准备对战了:
按下 Start the Match!, 你的两只机器人就会对打...
然后有三回合, 三个回合以后, 就判出胜负啦:
好玩吧!
那我们要如何自己写一个虚拟相扑机器人的程序代码呢?
首先启动 DSS Command Prompt (在开始程序集, 安装的 MRDS 下面)
然后在命令窗口当中输入 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 方案当中, 然后建置它:
什么?! 三项错误...这不是你的 bug, 也不是我的 bug, 这是微软附上这个范例的 bug...
但是很简单就可以修正 (只是因为 DSSCategory 设错而已):
DSS Category 必须是 URI , 所以你必须到 mysumo.cs 当中修改 DSSCategory:
把 "SumoPlayer" 改为 "http://schemas.microsoft.com/robotics/2007/02/sumo/categories/sumoplayer.html"
就可以解决.
建置完成后, 你需要把 mysumo 改为预设项目, 执行它, 目的是让他去跟系统注册一下 (等到最后会停在 Service Started ..., 之后就可以中断了), 这样待会 SimulatedSumoReferee 才会找到它, 然后再切回 SimulatedSumoReferee 执行.
这次下拉选单你就会看到 mysumo 啰.
你可以拉一个 mysumo 跟 系统原本的 sumoplayer 对战...
(现在当然是一样的 code 拉...)
之后我们再来更改它...
让我们继续一下章教程:
《Robotics Studio学习教程:第二十天——开始动手写相扑机器人》