Activity:VPL中化繁为简的工具,可以使得真个VPL容易让人看懂,也能跟好的控制。它就很像把一堆比较复杂但相关的流程组合成一个自定义的Activity。
完成Activity的定义:
第一步:复制MRDS学习二的VPL到Diagram中。
第二步:从Basic Activity中拖动一个Activity到Diagram中,右边Properties属性表中修改元件属性如下:(目前只能英文)
第三步:对自定义的 Activity双击进入编辑画面,然后把学习二中的元件复制过来如下:
第四步:(忽略红色叹号)接着要定义这个活动的输出以及输入:点击上方红色编辑器或使用下拉选单的Edit/Actions and Notifications,看到如下对话框:
(主要分为两大区块:Actions是指需要输入一个讯息,然后该Activity会经过一些处理以后输出一个讯息,而Notifications则是无需输入自发输出讯息,所以通常一个流程的最前面元件往后输出讯息的都是Notifications)
(Actions:从左到右三个板块分别代表定义的Actions、输入的讯息组合内容、输出的讯息组合内容)
定义Action,取名ControlDirection如下图:
第五步:把左边的输入拉到原本的Calculate。为了统一输出,把“Stop”,“Fowards”,“Backwords”产生出来的讯息经由Merge后再一次Join:
最后连接如下图所示:
第六步:指定输出的LeftDriverPower和RightDriverPower:在跳出的Data Connections对话框中,(透过Merge,系统无法计算出正确的下拉选单给你)输入如下图(勾选Edit Values Directly):
补充完整机械车的步骤:
第一步:回到原来的Diagram,用Activity替代哪些复制到其的元件,把DirectionDialog的Notifications拖到RobotControl时,出现Connections对话框【From】中选择ButtonPress。接着出现的Data Connections对话框【Value】中选择value.name。
第二步:把RobotControl的输出交给Generic Differential Drive 时,出现Connections对话框【To】中选择setDriverPower,接着出现的Data Connections对话框【Value】中选择LeftDriverPower和RightDriverPower。
整个元件流程如下所示:
第三步:补充功能:松开按钮就停止事件。
复制DirectionDialog(另一个的分身,即为同一个),把Notifications拖到Generic Differential Drive 时,出现Connections对话框中选择ButtonRelease交给SetDrivePower。接着出现的Data Connections对话框【Value】中都设为0。
第四步:保存并运行。
这样的机械车就不会那么容易翻车了,操作起来较为稳定O(∩_∩)O~
不过一直弄不懂它的方向盘为什么是这样:(懂把它变正常的朋友可以告诉我)
(挨踢狗经验:如果你复制拷贝的Generic Differential Drive 没有如学习二中配置好,会出现错误。)
2016-03-27
(资料整理于百度文库的《Microsoft_Robotics_Developer_Studio中文教程》)