微软机器人开发套件教程翻译
2006-06-28 14:48
316 查看
微软机器人开发套件教程翻译
Microsoft Robotics Studio Tutorials
教程1 访问服务
当你使用Microsoft Robotics Studio (MRS)编写机器人应用程序时,协调一组服务的输入输出是十分方便快捷的。服务体现了与提供特定功能的进程之间的交互,或代表了软件和硬件的接口。
在本教程中,你将学习如何使用一个基本服务,该服务接收一个简单的bumper(以下称为接触传感器)的输出,并将结果发送到另一个服务,以便在屏幕上显示。你将通过订阅事件通知来使用该传感器的输出信号(这就意味着你必须注册以便接收事件消息)。
在本教程中,你将会学到:
1,辨识需要使用的服务
2,订阅希望接收的传感器服务信号
3,编写针对传感器信号通知的处理,并在控制台应用程序中显示输出
在本教程中我们将使用接触传感器并输出结果文字到控制台,当然你也可以应用到其它类型的传感器。 我们将说明如何连接到一个接触传感器。
大体上,使用一个服务需要三个步骤
1,选择服务的代理DLL并添加到项目引用
2,添加using命令以引用该服务
3,最后,设置一个端口(port)以便和服务通讯,端口是服务之间消息通讯的机制
前提
硬件
本教程是基于以下机器人硬件平台的,SDK中提供了针对这些硬件的服务。你也可以使用提供了同等服务的硬件。
n LEGO® MINDSTORMS® RCX
n fischertechnik®
你需要一个微控制器(microcontroller,brick)和一个接触传感器。
要设置硬件以及这些硬件与PC的通讯,见前一节“硬件设置”。
软件
本教程使用C#, 你可以使用Visual Studio 2005简易版、标准版、专业版和团队版软件进行开发。
开始
在MRS中选择MS Robotics Studio Command Prompt,打开一个特殊的控制台命令提示窗口,其目录为MRS安装根目录
进入samples目录并启动dssnewservice创建第一个服务,这将帮助你创建一个服务模板。
[align=left] [/align]
[align=left] >cd Samples[/align]
[align=left] >dssnewservice /s:MyTutorial1 [/align]
[align=left] [/align]
[align=left] [/align]
打开C#编辑器,在MyTutorial1目录中选择Tutorial1解决方案
步骤1 添加引用
当你创建一个示例服务后,有几个机器人DLL将被缺省的添加到项目中。 在本教程中,我们将使用RoboticsCommon库以便使用接触传感器。在编辑器中添加项目引用如下:
[align=center]RoboticsCommon.Proxy.dll[/align]
在MyTutorial1.cs最上面,添加using命令,将通用ContactSensor契约(contract)作为接触传感器服务的基础。
步骤2 建立一个关联关系(Partner Relationship)
建立一个接触传感器关联关系,关联关系描述了两个服务之间的关系。将高亮部分代码插入MyTutorial私有操作部分(在建立工程时已经事先定义)
浏览项目时,你会发现一个描述文件(manifest file)Mytutorial1.manifest.xml。该描述文件决定了应用程序运行时哪些服务需要启动。为了将我们服务的关联关系绑定到硬件, 我们需要决定启用哪种服务契约(service contract)。这些服务契约可能因你使用的硬件不同而不同。
LEGO RCX, http://schemas.microsoft.com/robotics/2006/06/legorcxcontactsensor.html".
fischertechnik
"http://schemas.microsoft.com/2006/06/ftbumper.html".
[align=left]<?xmlversion="1.0" ?>[/align]
[align=left]<Manifest[/align]
[align=left] xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html"[/align]
[align=left] xmlns:wsap="http://schemas.microsoft.com/xw/2004/10/wsap.html"[/align]
[align=left] >[/align]
[align=left] <CreateServiceList>[/align]
[align=left] <ServiceRecordType>[/align]
[align=left] <wsap:Contract>http://schemas.microsoft.com/robotics/2006/06/roboticstutorial1.html</wsap:Contract>[/align]
[align=left] </ServiceRecordType>[/align]
[align=left] [/align]
[align=left] <!-- Start the Lego RCX Bumper with bumper default on port 1 -->[/align]
[align=left] <ServiceRecordType>[/align]
[align=left] <wsap:Contract>http://schemas.microsoft.com/robotics/2006/06/legorcxcontactsensor.html</wsap:Contract>[/align]
[align=left] </ServiceRecordType>[/align]
[align=left] [/align]
[align=left] </CreateServiceList>[/align]
[align=left]</Manifest>[/align]
步骤3 服务启动初始化
当服务启动时,每个服务都有一个启动流程。本教程的服务将在启动时订阅接触传感器服务。在启动流程中,插入SubscribeToBumpers函数以便订阅传感器服务
// Insert ourselves into the directory so that others can find us
// display HTTP service Uri
在启动流程中的其它函数是创建dssnewservice模板时加入的,在服务教程中你可以了解到更多。
步骤4 写订阅
在Start函数下加入SubscribeToBumpers函数,该函数流程内容如下,下面对其中几个功能进行分解讲解
// Create bumper notification port
// Subscribe to the bumper service, send notifications to bumperNotificationPort
// Start listening for Bumper Update notifications
1, 通过创建一个BumperServiceOperations实例建立一个事件通知端口,,该实例用于接收传感器的事件和通告
// Create notification port
2, 订阅_bumperPort,并要求发送通告到bimperNotificationPort
_bumperPort.Subscribe(bumperNotificationPort);
3, 最后使用Activate建立传感器事件的处理器(handler),Activate建立注册端口以及仲裁器(arbiters)之间关系的通用函数。此处使用的接收仲裁器将传感器的通知信号发送到处理器。
4,
// Start listening for Bumper Update notifications
到现在为止,接收到来自传感器的事件通知将调用BumperHandler进行处理
// Start listening for Bumper notifications
步骤5 建立处理器
在MyTutorial1.cs最后,加入一个事件处理器。在接收到传感器信号后,处理器将在屏幕上显示一个MessageBox
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Handle Bumper Notifications[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="notification"></param>[/align]
[align=left] private void BumperHandler(bumper.Update notification)[/align]
[align=left] {[/align]
[align=left] if (notification.Body.Pressed)[/align]
[align=left] LogConsole("Ouch - the bumper was pressed.");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]<end of file>[/align]
试试看
按F5编译运行该服务,按下接触传感器
如果一切正常,你将看到每次按传感器都有一个消息弹出
在/RoboticsTutorials目录下可以找到完整的代码,以便与你的代码进行比较。
总结
在该教程中,你应学到
n 建立一个新的应用程序(实际上也是一个服务)并与其它服务通讯
n 建立一个事件订阅以及一个事件处理器
LEGO and MINDSTORMS are trademarks of the LEGO Group. © 2006 The LEGO Group.
fischertechnik is the trademark of fischertechnik GmbH.
Microsoft Robotics Studio Tutorials
教程1 访问服务
当你使用Microsoft Robotics Studio (MRS)编写机器人应用程序时,协调一组服务的输入输出是十分方便快捷的。服务体现了与提供特定功能的进程之间的交互,或代表了软件和硬件的接口。
在本教程中,你将学习如何使用一个基本服务,该服务接收一个简单的bumper(以下称为接触传感器)的输出,并将结果发送到另一个服务,以便在屏幕上显示。你将通过订阅事件通知来使用该传感器的输出信号(这就意味着你必须注册以便接收事件消息)。
在本教程中,你将会学到:
1,辨识需要使用的服务
2,订阅希望接收的传感器服务信号
3,编写针对传感器信号通知的处理,并在控制台应用程序中显示输出
在本教程中我们将使用接触传感器并输出结果文字到控制台,当然你也可以应用到其它类型的传感器。 我们将说明如何连接到一个接触传感器。
大体上,使用一个服务需要三个步骤
1,选择服务的代理DLL并添加到项目引用
2,添加using命令以引用该服务
3,最后,设置一个端口(port)以便和服务通讯,端口是服务之间消息通讯的机制
前提
硬件
本教程是基于以下机器人硬件平台的,SDK中提供了针对这些硬件的服务。你也可以使用提供了同等服务的硬件。
n LEGO® MINDSTORMS® RCX
n fischertechnik®
你需要一个微控制器(microcontroller,brick)和一个接触传感器。
要设置硬件以及这些硬件与PC的通讯,见前一节“硬件设置”。
软件
本教程使用C#, 你可以使用Visual Studio 2005简易版、标准版、专业版和团队版软件进行开发。
开始
在MRS中选择MS Robotics Studio Command Prompt,打开一个特殊的控制台命令提示窗口,其目录为MRS安装根目录
进入samples目录并启动dssnewservice创建第一个服务,这将帮助你创建一个服务模板。
[align=left] [/align]
[align=left] >cd Samples[/align]
[align=left] >dssnewservice /s:MyTutorial1 [/align]
[align=left] [/align]
[align=left] [/align]
打开C#编辑器,在MyTutorial1目录中选择Tutorial1解决方案
步骤1 添加引用
当你创建一个示例服务后,有几个机器人DLL将被缺省的添加到项目中。 在本教程中,我们将使用RoboticsCommon库以便使用接触传感器。在编辑器中添加项目引用如下:
[align=center]RoboticsCommon.Proxy.dll[/align]
在MyTutorial1.cs最上面,添加using命令,将通用ContactSensor契约(contract)作为接触传感器服务的基础。
步骤2 建立一个关联关系(Partner Relationship)
建立一个接触传感器关联关系,关联关系描述了两个服务之间的关系。将高亮部分代码插入MyTutorial私有操作部分(在建立工程时已经事先定义)
[Partner("bumper", Contract = bumper.Contract.Namespace,
CreationPolicy = PartnerCreationPolicy.UseExisting)]
private bumper.ContactSensorArrayOperations _bumperPort = new bumper.ContactSensorArrayOperations();
浏览项目时,你会发现一个描述文件(manifest file)Mytutorial1.manifest.xml。该描述文件决定了应用程序运行时哪些服务需要启动。为了将我们服务的关联关系绑定到硬件, 我们需要决定启用哪种服务契约(service contract)。这些服务契约可能因你使用的硬件不同而不同。
LEGO RCX, http://schemas.microsoft.com/robotics/2006/06/legorcxcontactsensor.html".
fischertechnik
"http://schemas.microsoft.com/2006/06/ftbumper.html".
[align=left]<?xmlversion="1.0" ?>[/align]
[align=left]<Manifest[/align]
[align=left] xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html"[/align]
[align=left] xmlns:wsap="http://schemas.microsoft.com/xw/2004/10/wsap.html"[/align]
[align=left] >[/align]
[align=left] <CreateServiceList>[/align]
[align=left] <ServiceRecordType>[/align]
[align=left] <wsap:Contract>http://schemas.microsoft.com/robotics/2006/06/roboticstutorial1.html</wsap:Contract>[/align]
[align=left] </ServiceRecordType>[/align]
[align=left] [/align]
[align=left] <!-- Start the Lego RCX Bumper with bumper default on port 1 -->[/align]
[align=left] <ServiceRecordType>[/align]
[align=left] <wsap:Contract>http://schemas.microsoft.com/robotics/2006/06/legorcxcontactsensor.html</wsap:Contract>[/align]
[align=left] </ServiceRecordType>[/align]
[align=left] [/align]
[align=left] </CreateServiceList>[/align]
[align=left]</Manifest>[/align]
步骤3 服务启动初始化
当服务启动时,每个服务都有一个启动流程。本教程的服务将在启动时订阅接触传感器服务。在启动流程中,插入SubscribeToBumpers函数以便订阅传感器服务
// Start listening for bumpers
SubscribeToBumpers();
// Insert ourselves into the directory so that others can find us
// display HTTP service Uri
在启动流程中的其它函数是创建dssnewservice模板时加入的,在服务教程中你可以了解到更多。
步骤4 写订阅
在Start函数下加入SubscribeToBumpers函数,该函数流程内容如下,下面对其中几个功能进行分解讲解
void SubscribeToBumpers()
{
// Create bumper notification port
bumper.ContactSensorArrayOperations bumperNotificationPort = new bumper.ContactSensorArrayOperations();
// Subscribe to the bumper service, send notifications to bumperNotificationPort
_bumperPort.Subscribe(bumperNotificationPort);
// Start listening for Bumper Update notifications
Activate(
Arbiter.Receive<bumper.Update>
(true, bumperNotificationPort, BumperHandler));
}
1, 通过创建一个BumperServiceOperations实例建立一个事件通知端口,,该实例用于接收传感器的事件和通告
// Create notification port
2, 订阅_bumperPort,并要求发送通告到bimperNotificationPort
_bumperPort.Subscribe(bumperNotificationPort);
3, 最后使用Activate建立传感器事件的处理器(handler),Activate建立注册端口以及仲裁器(arbiters)之间关系的通用函数。此处使用的接收仲裁器将传感器的通知信号发送到处理器。
4,
// Start listening for Bumper Update notifications
Activate
Arbiter.Receive<
到现在为止,接收到来自传感器的事件通知将调用BumperHandler进行处理
// Start listening for Bumper notifications
BumperHandler
步骤5 建立处理器
在MyTutorial1.cs最后,加入一个事件处理器。在接收到传感器信号后,处理器将在屏幕上显示一个MessageBox
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Handle Bumper Notifications[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="notification"></param>[/align]
[align=left] private void BumperHandler(bumper.Update notification)[/align]
[align=left] {[/align]
[align=left] if (notification.Body.Pressed)[/align]
[align=left] LogConsole("Ouch - the bumper was pressed.");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]<end of file>[/align]
试试看
按F5编译运行该服务,按下接触传感器
如果一切正常,你将看到每次按传感器都有一个消息弹出
在/RoboticsTutorials目录下可以找到完整的代码,以便与你的代码进行比较。
总结
在该教程中,你应学到
n 建立一个新的应用程序(实际上也是一个服务)并与其它服务通讯
n 建立一个事件订阅以及一个事件处理器
LEGO and MINDSTORMS are trademarks of the LEGO Group. © 2006 The LEGO Group.
fischertechnik is the trademark of fischertechnik GmbH.
相关文章推荐
- 微软机器人开发套件教程翻译-教程2
- 微软机器人开发套件教程翻译3
- 微信公众帐号开发教程第17篇-应用实例之智能翻译
- [041] 微信公众帐号开发教程第17篇-应用实例之智能翻译
- 微信公众账号开发教程(三) 实例入门:机器人(附源码)(转)
- 翻译微软官方HoloLens开发课程 语音识别
- basic4android 开发教程翻译(九)使用GPS
- [翻译]WP 平衡球游戏开发教程(一) -初识 XNA Farseer Magic
- enyo官方开发入门教程翻译一Key Concepts之Object Lifecycle
- 微信公众帐号开发教程第17篇-应用实例之智能翻译
- 微软官方windows phone开发视频教程第三/四天视频(附下载地址)
- Gulp开发教程(翻译)
- 微信公共号(企业号)开发框架-gochat的从零开始教程(三): 智能机器人模版
- 微软官方windows phone开发视频教程第一天视频(附下载地址)
- [041] 微信公众帐号开发教程第17篇-应用实例之智能翻译
- 微软官网上关于驱动开发教程的文档结构
- 微信公众帐号开发教程第17篇-应用实例之智能翻译
- 微软掌上电脑开发教程
- enyo官方开发入门教程翻译一Consuming Web Services
- 【干货分享】大数据开发套件DataIDE使用教程