
Robotics Studio学习教程
继之前分享的一篇《Robotics Studio学习教程:第二十七天——在VSE中使用CameraSprite》, 我们将继续分享下一篇《Robotics Studio学习教程:第二十八天——Pursuit Camera》,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。
[Robotics Studio] Pursuit Camera -- Day28
之前在玩迷宫机器人的时候, 常常要一边移动机器人, 一边移动摄影机 (Camera) 画面, 很是累人...
尤其是建造了那么复杂的迷宫之后, 移动摄影机就更是累人了...
在解决问题之前, 先看看 Robotics Developer Studio 原本就提供的范例, 这样我们就知道有甚么好的解决办法了.
打开 VPL (Visual Programming Lanaguage), 点选 File, Open, 找到 RDS 安装目录下的samples\VplExamples\DriveSimFourByFour 下面, 打开这个项目:
你应该会看到:
执行它, 你会看到一个操控面板让你操控车子:
但更重要的是, 你可以在 VSE (Visual Simulation Environment) 当中找到 Camera - PursuitCamera
切换到 PursuitCamera, 然后移动车子...看到了吗, 这就是我们想要的,
我不是指翻车啦, 是摄影机会追着车子跑...这种摄影机就是我们玩游戏常看的摄影机, 这样才象样嘛...
ok, 打完收工, 那个 4x4 的车子已经领便当了...
甚么? 你说问题还没解决?
这就是我看那个 MsrsUserGuideExpress.chm 讨厌的地方, 问题都没解决就结束了..
最后只有这段话 :
"The Pursuit Camera consists of two components: a simulation entity and a service. You do not need to start the service to use the camera in the Simulator, but your application must programmatically add a Pursuit Camera entity.
...
By default, the camera entity name is PursuitCamera"
意思就是叫你自己生一个 PursuitCamera Entity 就好了...
还误导我一句, 有个预设名称叫做 PursuitCamera ...
(事实上我最后只能这样解释: 他是说这个范例里面的 PursuitCamera 默认值...)
好吧, 让我告诉各位我是怎么做的:
1. 在建造迷宫以及机器人那个项目当中, 参考 PursuitCamera.Y2008.M04.dll (在 RDS 安装目录的 bin 下面)
2. using 加上 using pursuitcamera = Microsoft.Robotics.Entities.PursuitCamera;
3. 产生机器人以后, 改一下函式, 把机器人的名称传回来, 然后加上下面的 code :
- string robotname = AddPioneer3DX(new Vector3(1.5f, 0.1f, 0f), -90);
- pursuitcamera.PursuitCameraEntity pcamera = new pursuitcamera.PursuitCameraEntity(robotname);
- pcamera.State.Name = "PursuitCameraEntity";
- SimulationEngine.GlobalInstancePort.Insert(pcamera);
这个 code 就是产生一个 PursuitCameraEntity (给他机器人的名称, 它就会开始追踪该机器人), 讨厌的地方就是它根本没有预设名称啊, 所以你要给一个名称, 不然会没办法加入 VSE 当中的...
那么, 加了这样的 code , 我们的 VSE 也就出现一个 PursuitCameraEntity 啰.
点选 PursuitCameraEntity , 你的摄影机就会跟着机器人跑啰:
这样就不算太混了吧?!
让我们继续一下章教程:
《Robotics Studio学习教程:第二十九天——使用XSLT来显示DDS Service State》