准备机械车:

第一步:从Service中选择一个Generic Differential Drive (通用差速驱动:同一轴的左右轮胎可以转动不同速度的车子)放入Diagram中。

第二步:对其进行配置:选中Generic Differential Drive右键选择Set Configuration。跳到其的设定界面,选择Use a manifest,并导入,选择LEGO.NXT.Tribot.Simulation.Manifest.xml。

第三步:保存并运行可以看到这样一个场景:

操控机械车:

第一步:为了能够操控机械车,我们从Service中拖一个Direction Dialog(它会在系统中产生一个上下左右及Stop五个键)到Diagram中。

第二步:(Basic  Activities中的Calculate:除了可以做算式运算,也可以负责拆解讯息。在VPL中,讯息可以通过Join活动组合起来,也可以通过Calculate活动拆开。如果把讯息看成某个class,Calculate就是负责调用该物件的属性,Join就是把多个属性合并成为一个新的class。)

把Calculate拉到Diagram中,再把Direction Dialog的Notification(右下方)拉到Calculate,表示把Direction Dialog的通知交给Calculate。出现Connections对话框,【From】选择ButtonPress,确定。

第三步:接着我们在Calculate中输入,选择Name,表示从ButtonPress这个讯息中拆解出Name这个讯息(被按下的按钮名称),这个被按下的按钮名称将会被输出到Calculate右端。

第四步:从Basic  Activities中拖一个Switch到Diagram中,利用Switch左下方一个“+”添加五个按钮“Stop”,“Forwards”,“Backwards”,“Left”,“Right”,并把Calculate右边讯息交给Switch。

第五步:接下来是VPL的资料设定,从Basic  Activities中拖七个Data到Diagram中,值的设定和连接如下图。

第六步:(Join负责把多个讯息合并成为一个,Merge也是。不同的是,Join是把多个讯息组合成为一个子讯息一起输出,而Merge则是左进右出无改变。)

从Basic  Activities中拖Join、Merge到Diagram中如下图。(“Left”和“Right”中Data的输出采取不同的Join方式)

(左右连接那里并不是很懂,明白的可以告诉我。)

第七步:把Merge交给一开始的Generic Differential Drive,弹出Connections,【To】中选择SetDrivePower(类似油门),确定。然后设定值都为value,确定。这样就完成了前进、后退和停止。

第八步:相似的,把两个Join资料交给又一个Merge,再复制一个Generic Differential Drive(VPL中,只要Name属性相同就是同一物件,这样就相当于连接到一个Generic Differential Drive中),把Merge交给它,弹出Connections,【To】中依旧选择SetDrivePower,确定。然后设定值为left和right,确定。这样就完成了机械车的运行。

第九步:保存运行。

(机械车的改良将在下一学习)

2016-03-26

(资料整理于百度文库的《Microsoft_Robotics_Developer_Studio中文教程》)

MRDS学习二——机械车的更多相关文章

  1. MRDS学习三——机械车的改良(Activity的介绍)

    Activity:VPL中化繁为简的工具,可以使得真个VPL容易让人看懂,也能跟好的控制.它就很像把一堆比较复杂但相关的流程组合成一个自定义的Activity. 完成Activity的定义: 第一步: ...

  2. MRDS学习四——自动型机器车

    由自己的所在开始,探索自己周围的简单机器车,假设车子的行走路径如下: 我们要把L型路径写成一个Activity,然后由外部输入这个L的大小,最后这个Activity要能够在完成行走路径时吐出更大的L大 ...

  3. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  4. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  5. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  6. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  7. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  8. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  9. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

随机推荐

  1. 利用varnish做Discuz论坛的缓存服务器

    实验背景:公司有一台BBS服务器,用的是LNMP的架构搭建的.正好手头有一台空闲的虚拟机,于是想着给BBS前端加一台缓存服务器.于是选定了varnish,搜了很多教程,跌跌撞撞的完成了配置.这其中很多 ...

  2. spring3.0+mybatis+spring快速入门

    一.首先奉上项目目录结构: 说明: dao,mapping,model包下的所有内容可以使用Generator工具自助生成. 具体用法,可以网上学习一下,比较简单,主要做以下工作: 1.提供相关的数据 ...

  3. 使用maven将代码到私服

    在上一节中,我们讲述了maven私服搭建 ,那么本章,我们讲述如何使用maven将代码打包并上传到maven私服上. 一.maven pom.xml关键配置信息. <distributionMa ...

  4. java设计模式之状态模式

    状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 状态模式UML图 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关 ...

  5. SpringMVC单元测试之MockMVC,模拟登入用户

    今天介绍一下springMVC的单元测试,可以参考spring官方文档进行 前提准备,springmvc的demo工程,这里就不做叙述了 pom.xml [html] view plain copy ...

  6. OrchardNoCMS vNext如何在VS2015下调试

    由于VS2015还没有出来正式版,ASP.NET 5也是没有出来正式版.所以在你下载了OrchardNoCMS vNext的代码后,需要配置一些东西,才能启动项目,开始调试. 需要注意以下几点: 1. ...

  7. React业务实践

    总结自:http://reactjs.cn/react/docs/thinking-in-react-zh-CN.html 当接到一个需求时,如何用react来实现? 以下几个步骤做参考. 第一步:把 ...

  8. 有利于SEO的DIV+CSS的命名规则

    搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面是目前流行的CSS+DIV的命名规则: 页头:header登录条:loginBar标志:logo ...

  9. Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站

    此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...

  10. __getattitem_ \__setattitem__\__delitem__

    class Foo: def __getitem__(self, item): print('getitem',item) return self.__dict__[item] def __setit ...