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

Robotics Studio学习教程:第七天——改良自走型机器车(续)

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

Microsoft Robotics Studio

继之前分享的一篇《Robotics Studio学习教程:第六天——改良自走型机器车》,我们将继续分享下一篇《Robotics Studio学习教程:第七天——改良自走型机器车(续)》,让我继续开始我们学习Visual Programming Language,以及使用Robotics Studio学习开发机器人应用的道路吧。

 

[Robotics Studio] 改良自走型机器车[III] -- Day7

恩, 昨天觉得机器车太慢, 今天来加快, 但是要如何加快呢, 一般我们开车时速度都是变化的, 在转弯前就要减速啦, 所以我们不能再用 DriveDistance 这个功能, 因为这个功能在结束时都是紧急煞车, 所以即使你用 DriveDistance 把要行走的距离切分为不同的 Power , 依然会看到车子一直紧急煞车.

目前想到的办法就是利用 SetDrivePower 或是 SetDriveSpeed 这样的功能才行, 随着要行走的距离减少而降低速度(或是马力).

先做刚刚想到的办法的其中一小块, 比较简单, 就是根据要行走距离以及已经行走的距离, 算出应该要给的速度, 这样一来, 等一下就可以拿来应用, 而且要改速度只要改这里, 一次就改好.

为了达到这个目的, 我们先拉一个 Activity , 取名叫 CalculateSpeed 来做.

将CalculateSpeed 的输出入设定如下:

clip_image002

里面的程序用看的就明了:

clip_image004

接着, 我们来设计该如何让车子走一段距离, 但一路上根据刚刚设定的 CalculateSpeed 来设定速度.

为了达到这个目的, 再弄一个 Acitivity 取名为 RunSmoothLength, 设定输入只需要一个 Length, 基本上就要有三个状态值, 应该就是目前的速度 (CurrentSpeed), 已经行走的距离 (StageRunned) , 以及我们设定应该行走的距离 (LengthSetting).

然后一开始流程就把 LengthSetting 设定为 Length, 再根据 Length 是否为 -1 来决定要不要通知结束, 大于 0 的我们就把 StageRunned 设为 0, 启动 CalculateSpeed 去计算速度后再把值喂给 CurrentSpeed 以及 GenericDifferentialDrive 的 SetDriveSpeed.

最后, 我们设定一个 Timer , 使用 SetTimer, 值设为 100 (表示 0.1 秒后启动 TimerComplete 通知) 交给 Timer 来驱动下一次 CalculateSpeed, 如下:

clip_image006

那我们应该如何收到 Timer 后续的行为呢?

当然是到 Start 这个 Action 里面去做 Timer 通知, 将该 Timer 复制到 Start 以后,  接受 Timer 的 TimerComplete后, 先做一些判断, 如果  LengthSetting 大于 0, 我们可以继续下去,  不然就结束...千言万语不如一张图:

clip_image008

对啦, 就是这样, 再把 RunL 作如下的修改:

clip_image010

而 RunL 的 Start 改为这样:

clip_image012

终于就大功告成..

现在我们主要 Diagram 的程序如下:

clip_image014

当然一开始的值可以任意设定, 这样你很快就会看到车子撞到停下来.

这回车子跑起来象样多了...

这回因为简化过多文字 (这样大家也比较不会看的累), 如果大家对程序有疑问, 可以下载原始码来看看:

Day 7 code download

 

让我们继续一下章教程:

《Robotics Studio学习教程:第八天——Hello World Again! (DSS Service version)》

fgx

分享到:

Wopus问答

×