MRDS学习二——机械车
准备机械车:
第一步:从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学习二——机械车的更多相关文章
- MRDS学习三——机械车的改良(Activity的介绍)
Activity:VPL中化繁为简的工具,可以使得真个VPL容易让人看懂,也能跟好的控制.它就很像把一堆比较复杂但相关的流程组合成一个自定义的Activity. 完成Activity的定义: 第一步: ...
- MRDS学习四——自动型机器车
由自己的所在开始,探索自己周围的简单机器车,假设车子的行走路径如下: 我们要把L型路径写成一个Activity,然后由外部输入这个L的大小,最后这个Activity要能够在完成行走路径时吐出更大的L大 ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Quartz学习--二 Hello Quartz! 和源码分析
Quartz学习--二 Hello Quartz! 和源码分析 三. Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...
随机推荐
- RabbitMQ服务安装配置
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...
- 每天一个linux命令(2):cd命令
1. 命令格式: cd [目录名] 2. 命令功能: 切换当前目录至dirName 3. 常用范例 3.1 例一:进入系统根目录 命令: cd / 输出: [root@localhost ~]# cd ...
- [译文]选择使用正确的 Markdown Parser
以下客座文章由Ray Villalobos提供.在这篇文章中Ray将要去探索很多种不同的Markdown语法.所有的这些MarkDown变种均提供了不同的特性,都超越传统的Markdown语法,却又相 ...
- 【2016-11-10】【坚持学习】【Day23】【Socket 编程初步了解】
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.
- Django 1.9 支持中文(转)
昨天Django1.9发布了,今天我才刚开始学习Django,然后有一个问题就卡住了——如何支持中文?上网上查了好多资料都不好使,最后我搜索Django文件夹才发现,在1.9版本里,简体中文代码是zh ...
- 第15章 LinkedList类(暂无)
第15章 LinkedList类 LinkedList类是
- kendo ui简介
Kendo UI Web包含所有创建高速HTML5 web app的必备元素:UI组件.数据源.验证.一个MVVM框架.主题.模板等等. 移动HTML5带UI的开发框架层出不穷,常见的有Sencha ...
- Spring源码分析——资源访问利器Resource之接口和抽象类分析
从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架——Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每 ...
- 物联网平台设计心得:你所不知道的CRC校验
在物联网平台设计过程中,我的中间件一方面需要处理来自于硬件端的包,另一方面需要处理来自于用户端的包,用户端包括web端和手机端等等.所以编写一个统一的CRC认证是非常必须要. 那么,在设计开始,CRC ...
- tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)
mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的.但是CNN层数要多一些,网络模型需要自己来构建. 程序比较复杂,我就分成几个部分来叙述. 首先,下载并加载数据: import ...