现在的位置: 首页 > 专题 > 机器人 > Robotics Studio > 设计中心 > 文档 > 专题 > 机器人 > 正文

Robotics Studio学习教程:第二天——开始玩机器人啦!

2014年04月18日 Robotics Studio, 文档, 机器人 ⁄ 转载:原文链接 ⁄ 共 3381字 ⁄ 字号 暂无评论 ⁄ 阅读 1,210 次
Microsoft Robotics Studio

Microsoft Robotics Studio

继之前分享的一篇《Robotics Studio学习教程:第一天——Hello World》,我们将继续分享下一篇《Robotics Studio学习教程:第二天——开始玩机器人啦!》,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。

 

[Robotics Studio] 開始玩機器人啦 -- Day2

有没有说错, 第二天就开始玩机器人啦?

因为 VPL 蛮简单的, 所以我们第二天就可以看见机器人(严格说应该是车子吧?)啦...

从新的 VPL 项目开始, 为了要看见车子, 我们从 service 选一个 Generic Differential Drive 放到 Diagram 上,

(Generic Differential Drive 意思就是通用差速驱动, 关于差速的说明, 可以参考 Wiki 的 差速器 , 基本上就是同一轴的左右轮胎可以转不同的速度的车子)

clip_image002[6]

对 GenericDifferentialDrive 点选右键, 选 Set Configuration

clip_image004[6]

会跳到 GenericDifferentialDrive 的设定画面, 我们选 Use a manifest

clip_image006[6]

所谓的 manifest, 在这里指的是一整个拖拉库的服务全部都包起来啦...

现在当然还没能力创建一个 manifest, 就直接汇入现有的.

clip_image008[5]

然后选这次的活动奖品(目前只有虚拟宝物), LEGO.NXT.Tribot.Simulation.manifest.xml

clip_image010[6]

Okay, 现在你的设定应该是如下图

clip_image012[6]

现在你可以存盘, 开始执行看看会不会有机器车子跑出来了...

什么? 你说你等了好久都没看到, 又发现跳出 Browser 跟你讲 ERROR ??

你该不会是用 Vista, 又跟我一样把 Visual Programming Language Express Edtion 装在那个 Program Files 目录当中吧?? 如果是, 恭喜你, 请把 Visual Programming Language Expression Editon 改用系统管理员身分执行吧, 请在开始选单上面对 Visual Programming Language Expression Edtion 点选右键, 选"以系统管理员身分执行" , 这样才不会有权限上的问题欧...

解决了权限, 再执行一次就应该可以看到如下画面啦.

clip_image014[6]

啊...这样能干嘛...

因为我们什么也还没开始写啊, 所以现在就只能移动摄影机, 看看画面这样而已, 可以用上下左右跟鼠标操作摄影机移动.

那我们赶快来写点程序来玩它吧^ ^

为了能够操控里头的那个虚拟宝物(机器车子), 我们先从 service 拖一个 Direction Dialog 到 Diagram 上, 这个 Direction Dialog 会在系统中产生一个有上下左右以及 Stop 的五键, 好让我们可以操控虚拟画面里面的车子,

现在你的 Diagram 里面应该有两个 service 啦.

clip_image016[6]

接 着要介绍 Calculate 这个 Basic Activities, 这个 Calculate 活动呢, 除了可以做算式运算, 也可以负责拆解讯息, 在 VPL 里面, 讯息可以透过 Join 活动组合起来, 也可以透过 Calculate 活动拆开, 你可以把讯息想成是某个 Class 的对象, 而 Calculate 就是负责调用该对象的属性, Join 就像是把多个属性合并成为一个新的 Class.

当然 Class 的说明是为了让那些习惯写 Code 的人来了解的, 事实上, VPL 内部的讯息就是讯息, 可以透过 Join 任意组合以及透过 Calculate 任意拆解或运算其中的子讯息.

写了一堆, 还是不如直接操作比较容易了解.

把 Calculate 拉到 Diagram 当中之后, 我们把 DirectionDialog 的 Notification (右下方的红圈) 拉到 Calculate , 表示把 DirectionDialog 的通知喂给 Calculate, 你会看到 Connections 对话框弹出来:

clip_image018[6]

这 个对话框问我们要把 DirectionDialog 的三种通知 (ButtonPress : 表示按键被按下了, ButtonRelease 表示按键被放开了, DialogStateChange 表示对话框的状态改变了) 哪一种喂给 Calculate 呢, 我们选 ButtonPress.

然后 DirectionDialog 就跟 Calculate 连上了, 接着我们要选 Calculate 中间的输入, 会有提示下拉, 我们选 Name, 表示要从 ButtonPress 讯息当中, 拆解出 Name 这个讯息 (被按下的按钮名称) , 这个被按下的按钮名称将会被输出到 Calculate 的右端.

clip_image020[7]

接着, 我们再从 Basic Activites 当中拉一个 Switch 活动,

这 个 Switch 活动, 就像是 C++ 当中的 Switch, 代表根据多个不同的讯息, 我们要采取多个不同的输出, Switch 左下方有一个 "+", 表示你可以新增加一个讯息分岔点, 我们一共要五个 (因为有五个按钮) , 这五个按钮的名称分别为 "Stop", "Forwards", "Backwards", "Left", "Right" , 新增五个后通通给它填好,然后把刚刚 Calculate 的右边讯息喂给 Switch, 现在应该如下图:

clip_image022

接 下来要弄 VPL 当中最辛苦的数据设定 (相较于写 Code 设定数据而言), 请从 Basic Activities 当中拖拉 7 个 Data 活动, 型态都是 double , 值分别设定为  0, 0.8, -0.8, 0.6,-0.6, 0.6, -0.6 (你可以用复制贴上来加速动作), 然后一一设定联机, 我们把 "Stop" 连到 0, "Forwards" 连到 0.8, "Backwards" 连到 -0.8 , "Left" 连到 0.6,-0.6 两个 Data, "Right" 则是连到另一组 0.6,-0.6 Data , 如下图:

clip_image024

现在我们要开始 Join, Merge 这些数据输出了, Join 刚刚介绍了, 是负责把多个讯息合并成为一个, Merge 也是, 但不同点在于, Join 是把多个讯息组合成为子讯息, 一起输出, Merge 则是左边进来右边出去, 没有任何改变.

请把 0, 0.8, -0.8 三个讯息 Merge, 把 0.6, -0.6 两组讯息 join, 然后分别填上 left, right, 如下图: (请注意, "Left" 那一组的 Data 输出 刚好跟 "Right" 这一组的 Data 输出, 采取不同的 left, right join 方式)

clip_image026

让我们先解决上面的 Merge, 把它的输出喂给一开始的 GenericDifferentialDrive , 你会看到对话框弹出来, 我们要把 Merge 的输出对应到车子的油门 (SetDrivePower)

clip_image028

按下 OK, 你会看到另一个对话框, 分别指定左边轮子的油门跟右边轮子的油门, 我们通通设为 value.

clip_image030

这样我们就完成了前进, 后退, 以及停止啦, 等不及的人可以先按 F5 (Run 选单下面的 Start) 玩玩看会不会前进后退.

紧接着赶快把 "Left", "Right" 设定好, 我们把这两组 Join 好的数据通过 Merge , 再输出给 GenericDifferentialDrive , 啊, 一个 GenericDifferentialDrive 不愿意吃两个输入耶, 没关系, VPL 当中, 对象可以有多个分身, 只要 Name 属性相同, 就表示是相同的对象. (那些没有 Name 属性的对象, 都是基本对象, 一定不同). 所以你可以复制一个分身, 或者再拖拉一次, 系统会问你是否要新增还是使用原来的对象. (当然是使用原来的).

复制好 GenericDifferentialDrive 的分身后, 把 "Left", "Right" 两组 Join 好的数据透过 Merge 再喂给它, 你又看到 Connections 的对话框了, 一样选 SetDrivePower, 接着 Data Connections 对话框要设定如下:

clip_image032

最后, 你的程序就如下图所示:

clip_image034

当当, 恭喜你完成可以操控机器车子的程序啰,

你可以试玩看看, 但是要常常 Stop 欧, 不然一定会像我一样翻车的

clip_image036

我可不知道翻车要怎么救...

明天我们再来改良吧^ ^

 

让我们继续一下章教程:

《Robotics Studio学习教程:第三天——Activity介绍》

fgx

分享到:

Wopus问答

×