Top Banner
Microsoft Robotics Studio Microsoft Robotics Studio Runtime, Simulation & VPL Runtime, Simulation & VPL
81
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Microsoft Robotics Studio Runtime, Simulation & VPL.

Microsoft Robotics StudioMicrosoft Robotics Studio

Runtime, Simulation & VPLRuntime, Simulation & VPL

Page 2: Microsoft Robotics Studio Runtime, Simulation & VPL.

Microsoft Robotics StudioMicrosoft Robotics StudioRuntime, Simulation & VPL Runtime, Simulation & VPL OverviewOverview

Zeddy IskandarZeddy IskandarAcademic DeveloperAcademic DeveloperMicrosoft IndonesiaMicrosoft Indonesia

Page 3: Microsoft Robotics Studio Runtime, Simulation & VPL.

Presentation OutlinePresentation Outline

Microsoft Robotics Studio RuntimeMicrosoft Robotics Studio RuntimeOverview, Components and ConceptsOverview, Components and Concepts

Decentralized Software Services (DSS)Decentralized Software Services (DSS)A lightweight, service oriented application A lightweight, service oriented application model based around state manipulationmodel based around state manipulation

Concurrency and Coordination Runtime Concurrency and Coordination Runtime (CCR) (CCR)

A message based model enabling fine A message based model enabling fine grained concurrency and coordination grained concurrency and coordination without resorting to threads, locks while without resorting to threads, locks while avoiding traditional asynchronous avoiding traditional asynchronous programming pitfallsprogramming pitfalls

Page 5: Microsoft Robotics Studio Runtime, Simulation & VPL.

Shared Challenges… Shared Challenges… Input from industry, hobbyists, academia, research, Input from industry, hobbyists, academia, research, ……

Configuring sensors and actuators in running Configuring sensors and actuators in running systemsystem

Coordinating sensors and actuators Coordinating sensors and actuators asynchronouslyasynchronously

Starting and stopping components dynamicallyStarting and stopping components dynamically

Monitoring/Interacting/Debugging running Monitoring/Interacting/Debugging running systemsystem

Development when access to robot is limited Development when access to robot is limited

Span multiple compute unitsSpan multiple compute units

Re-use of components across hardware Re-use of components across hardware platforms and devicesplatforms and devices

Page 6: Microsoft Robotics Studio Runtime, Simulation & VPL.

Overall Runtime GoalsOverall Runtime Goals

Distributed Application Model (DSS)Distributed Application Model (DSS)Simple, flexible, and service orientedSimple, flexible, and service oriented

Coarse grained and loosely coupledCoarse grained and loosely coupled

Compatible with existing Web Compatible with existing Web infrastructureinfrastructure

Concurrent Programming Model Concurrent Programming Model (CCR)(CCR)

Focus on coordination of messagesFocus on coordination of messages

Hide traditional threads and locks Hide traditional threads and locks primitivesprimitives

Enable non thread blocking sequential Enable non thread blocking sequential execution between I/O, avoiding execution between I/O, avoiding nesting/callback chainsnesting/callback chains

Page 7: Microsoft Robotics Studio Runtime, Simulation & VPL.

DSS Application ModelDSS Application Model

The definition of a Robotics The definition of a Robotics applicationapplication

Page 8: Microsoft Robotics Studio Runtime, Simulation & VPL.

What is a Robotics What is a Robotics Application?Application?

An application is a An application is a compositioncomposition of loosely- of loosely-coupled components concurrently coupled components concurrently executingexecuting

Orchestration of sensors/actuatorsOrchestration of sensors/actuators

User interfaceUser interface

Controlled/Autonomous behaviorControlled/Autonomous behavior

A service is the unit of orchestrationA service is the unit of orchestration

MotorBumper 1(Sensor)

Orchestrator

MotorBumper 2(Sensor)

Infrared detector(Sensor)

Message Box

(Actuator)

Page 9: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service PropertiesService PropertiesIdentityIdentityStructured StateStructured StateComposition through Composition through partneringpartnering

Uniform BehaviorUniform BehaviorState retrieval and State retrieval and manipulation manipulation Service creation & Service creation & TerminationTerminationEvent notificationsEvent notifications

Anatomy of a ServiceAnatomy of a Service

Port

State

Handlers

Service

FIFO

Page 10: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service AbstractionService Abstraction

Services can represent any Services can represent any computationcomputation

Hardware: Sensors, actuators,…Hardware: Sensors, actuators,…

Software: UI, Storage,…Software: UI, Storage,…

Aggregation: Sensor fusion, mash-ups,…Aggregation: Sensor fusion, mash-ups,…

Reuse through compositionReuse through compositionSeparate State from Behavior (don’t hide Separate State from Behavior (don’t hide state!)state!)

Page 11: Microsoft Robotics Studio Runtime, Simulation & VPL.

Sample Bumper ServiceSample Bumper Service

Structured StateStructured State

Non-structured state handled out of Non-structured state handled out of bandband

Uniform OperationsUniform OperationsDefine operations over the stateDefine operations over the state

GET, QUERY, UPDATE, DELETE, DROP, GET, QUERY, UPDATE, DELETE, DROP, SUBSCRIBESUBSCRIBE

Page 12: Microsoft Robotics Studio Runtime, Simulation & VPL.

Sample Partner Sample Partner RelationshipRelationship

Orchestrator Service subscribes to Orchestrator Service subscribes to bumper Service waiting for sensor bumper Service waiting for sensor inputinput

A service can partner with arbitrary A service can partner with arbitrary number of other servicesnumber of other services

MotorBumper 1(Sensor)

Orchestrator

MotorBumper 2(Sensor)

Infrared detector(Sensor)

Message Box

(Actuator)

Page 13: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service InteractionsService Interactions

Runtime, Hosting Environment, and Runtime, Hosting Environment, and System ServicesSystem Services

Page 14: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service InteractionService Interaction

Service Interaction happens through Service Interaction happens through protocolsprotocols

HTTP is available for interactions HTTP is available for interactions from Web browser and for providing from Web browser and for providing UIUI

Enables deep integration with existing Enables deep integration with existing Web infrastructureWeb infrastructure

DSSP is a SOAP-based protocol DSSP is a SOAP-based protocol available for inter-service available for inter-service communicationcommunication

Augments HTTP model with structured Augments HTTP model with structured data manipulation and event data manipulation and event notificationsnotifications

Page 15: Microsoft Robotics Studio Runtime, Simulation & VPL.

Distributed ApplicationsDistributed Applications

Services can run Services can run directly on a directly on a single robotsingle robotServices can run Services can run on swarms of on swarms of collaborating collaborating robotsrobotsServices can run Services can run on computers in on computers in the networkthe networkApplications Applications typically a mixtypically a mix

Page 16: Microsoft Robotics Studio Runtime, Simulation & VPL.

Runtime PerformanceRuntime Performance

Service-to-Service message Service-to-Service message throughput:throughput:

Same process (with full cloning): 50,000 Same process (with full cloning): 50,000 msgs/secondmsgs/second

Cross node,cross machine: 3,000 Cross node,cross machine: 3,000 msgs/secmsgs/sec

Numbers from dual core 1.8GHz, 2GB Numbers from dual core 1.8GHz, 2GB RAMRAM

Performance allows consistent use of Performance allows consistent use of service model for both local and service model for both local and distributed casedistributed case

Page 17: Microsoft Robotics Studio Runtime, Simulation & VPL.

CCR ProgrammingCCR Programming

The foundation for writing Robotics The foundation for writing Robotics ApplicationsApplications

Page 18: Microsoft Robotics Studio Runtime, Simulation & VPL.

The CCR RuntimeThe CCR Runtime

Asynchronous Programming modelAsynchronous Programming modelA concurrency model without manual A concurrency model without manual threading, locks, semaphores, etc.threading, locks, semaphores, etc.

Based on asynchronous message passingBased on asynchronous message passing

Focus on coordination primitivesFocus on coordination primitives

Sequential execution but with no thread Sequential execution but with no thread blocking, with no need for callbacks, when blocking, with no need for callbacks, when necessarynecessary

Execution context for servicesExecution context for servicesIsolation from infrastructureIsolation from infrastructure

Isolation from other servicesIsolation from other services

Page 19: Microsoft Robotics Studio Runtime, Simulation & VPL.

Messages, Ports, and Messages, Ports, and ArbitersArbiters

Messages are sent to PortsMessages are sent to PortsPort<int> myPort = new Port<int>() ;Port<int> myPort = new Port<int>() ;myPort.Post (42) ;myPort.Post (42) ;

Ports containPorts containA FIFO data-structure holding values in a portA FIFO data-structure holding values in a portA list of continuations that can be executed A list of continuations that can be executed pending message arrival and arbitrationpending message arrival and arbitration

A continuation is represented by a C# delegateA continuation is represented by a C# delegateCan either be named or anonymousCan either be named or anonymous

ArbitersArbitersImplement common concurrency constructs Implement common concurrency constructs like join patterns and interleaved calculationslike join patterns and interleaved calculations

Page 20: Microsoft Robotics Studio Runtime, Simulation & VPL.

Example: Iterators make a Example: Iterators make a differencedifference

IEnumerator<ITask> MultistageIterator()IEnumerator<ITask> MultistageIterator()

{{

bool result = false;bool result = false;

Port<bool> port = new Port<bool>();Port<bool> port = new Port<bool>();

// Stage A, send request// Stage A, send request

port.Post(true);port.Post(true);

yield return yield return Arbiter.Receive(false, port, delegate(bool b) Arbiter.Receive(false, port, delegate(bool b) {result=b; });{result=b; });

// Stage B, received first result, send second request// Stage B, received first result, send second request

port.Post(result);port.Post(result);

yield return yield return Arbiter.Receive(false, port, delegate(bool b) Arbiter.Receive(false, port, delegate(bool b) {result=b; });{result=b; });

// Stage C, received second result, print it// Stage C, received second result, print it

Console.WriteLine(result);Console.WriteLine(result);

}}

Page 21: Microsoft Robotics Studio Runtime, Simulation & VPL.

Example: ChoiceExample: ChoicePortSet<int, string> port = new PortSet<int, string>();PortSet<int, string> port = new PortSet<int, string>();

Activate(Activate(Arbiter.Choice(port, MyIntHandler, MyStringHandler)Arbiter.Choice(port, MyIntHandler, MyStringHandler)

););

void MyIntHandler(int i)void MyIntHandler(int i){{ Console.WriteLine("Received: " + i);Console.WriteLine("Received: " + i);}}

void MyStringHandler(string s)void MyStringHandler(string s){{ Console.WriteLine("Received: " + s);Console.WriteLine("Received: " + s);}}

Page 22: Microsoft Robotics Studio Runtime, Simulation & VPL.

Example: Dynamic JoinExample: Dynamic JoinPortSet<Result,Exception> resultsPort = PortSet<Result,Exception> resultsPort = new PortSet<int>();new PortSet<int>();

// parallel computation by posting requests// parallel computation by posting requestsFor (int i=0;i<N;i++)For (int i=0;i<N;i++){{ computePort.Post(new DoWork(someData,resultsPort));computePort.Post(new DoWork(someData,resultsPort));}}

// requests complete asynchronously with unknown number// requests complete asynchronously with unknown number// of failures vs. successes// of failures vs. successesActivate(Activate(

Arbiter.MultipleItemReceive(resultsPort,Arbiter.MultipleItemReceive(resultsPort, delegate (ICollection<Result> successes, delegate (ICollection<Result> successes, ICollection<Exception> failures)ICollection<Exception> failures){{ foreach(Result r in results) foreach(Result r in results) {{ …… …… }}});});

Page 23: Microsoft Robotics Studio Runtime, Simulation & VPL.

[ServiceHandler(ServiceHandlerBehavior.[ServiceHandler(ServiceHandlerBehavior.ConcurrentConcurrent)] )] public IEnumerator<ITask> GetHandler(Get get) public IEnumerator<ITask> GetHandler(Get get) { { get.ResponsePort.Post(_state);get.ResponsePort.Post(_state); yield break; yield break; }}

[ServiceHandler(ServiceHandlerBehavior.[ServiceHandler(ServiceHandlerBehavior.ExclusiveExclusive)] )] public IEnumerator<ITask> UpdateHandler(Update update) public IEnumerator<ITask> UpdateHandler(Update update) { { _state.CurrentResult += update.Body.Value; _state.CurrentResult += update.Body.Value; update.ResponsePort.Post(new UpdateResponse()); update.ResponsePort.Post(new UpdateResponse()); yield break; yield break; }}

Declarative Coordination for Declarative Coordination for ServicesServices

Page 24: Microsoft Robotics Studio Runtime, Simulation & VPL.

SimulationSimulation

Because hardware is expensive Because hardware is expensive

Page 25: Microsoft Robotics Studio Runtime, Simulation & VPL.

Why a Simulator?Why a Simulator?

Robotics hardware Robotics hardware is expensiveis expensive

Hardware can be Hardware can be difficult to debugdifficult to debug

Hard for a team to Hard for a team to work concurrently work concurrently with limited with limited hardwarehardware

Page 26: Microsoft Robotics Studio Runtime, Simulation & VPL.

Why a Simulator?Why a Simulator?BenefitsBenefits

Low barrier to Low barrier to entryentry

Staged approachStaged approach

Easy prototypingEasy prototyping

Useful for Useful for educationeducation

Good learning and Good learning and research toolresearch tool

Page 27: Microsoft Robotics Studio Runtime, Simulation & VPL.

Why a Simulator?Why a Simulator?LimitationsLimitations

Lack of noisy dataLack of noisy data

Incomplete or Incomplete or inaccurate modelsinaccurate models

Accurate tuning Accurate tuning takes timetakes time

Page 28: Microsoft Robotics Studio Runtime, Simulation & VPL.

Simulator ArchitectureSimulator ArchitectureThe Simulator Engine ServiceThe Simulator Engine Service

Implemented as a Implemented as a serviceservice

Maintains world stateMaintains world state

Manages input devicesManages input devices

3D rendering using 3D rendering using XNAXNA

Ageia Physics Ageia Physics SimulationSimulation

Graphical User Graphical User InterfaceInterface

Editor for modeling Editor for modeling and debuggingand debugging

SimulationEngineService

XNAGraphicsLibrary

Display Hardware

AgeiaPhysicsEngine

User Interface / Editor

Page 29: Microsoft Robotics Studio Runtime, Simulation & VPL.

Visual Programming Visual Programming LanguageLanguage

Rapid Robot PrototypingRapid Robot Prototyping

Page 30: Microsoft Robotics Studio Runtime, Simulation & VPL.

MicrosoftMicrosoftVisual Programming LanguageVisual Programming Language

Visual programming environmentVisual programming environment

Simple programming with drag and Simple programming with drag and dropdrop

Application are diagramsApplication are diagramsBlocksBlocks

ConnectionsConnections

Integrated into Microsoft Robotics Integrated into Microsoft Robotics StudioStudio

Page 31: Microsoft Robotics Studio Runtime, Simulation & VPL.

Guided TourGuided Tour

Page 32: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World!Hello, World!

Page 33: Microsoft Robotics Studio Runtime, Simulation & VPL.

How does it work?How does it work?

Exchange of messages between Exchange of messages between activitiesactivities

ActivitiesActivitiesPerform an action on input messagePerform an action on input message

Send result of the action as output Send result of the action as output messagemessage

ConnectionsConnectionsMake output of one activity input of Make output of one activity input of secondsecond

Input message

Output message

Page 34: Microsoft Robotics Studio Runtime, Simulation & VPL.

How does it work?How does it work?

Exchange of messages between Exchange of messages between activitiesactivities

ActivitiesActivitiesPerform an action on input messagePerform an action on input message

Send result of the action as output Send result of the action as output messagemessage

ConnectionsConnectionsMake output of one activity input of Make output of one activity input of secondsecond

Input message

Page 35: Microsoft Robotics Studio Runtime, Simulation & VPL.

Data ActivityData Activity

Output message is a new data valueOutput message is a new data value

Ignores content of input messageIgnores content of input message

Different types of dataDifferent types of dataint, string, double, bool, …int, string, double, bool, …

Page 36: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service ActivitiesService Activities

SimpleDialog is a DSS ServiceSimpleDialog is a DSS Service

All DSS services are activities in VPLAll DSS services are activities in VPLProvide access robot hardware, input Provide access robot hardware, input devices, behavior …devices, behavior …

You can add your own activities!You can add your own activities!

Page 37: Microsoft Robotics Studio Runtime, Simulation & VPL.

Service ActivitiesService Activities

Services can have multiple actions, Services can have multiple actions, e.g.e.g.

AlertDialog, PromptDialog, AlertDialog, PromptDialog, ConfirmDialogConfirmDialog

Most actions have two output Most actions have two output messagesmessages

Success – may contain output valuesSuccess – may contain output values

Fault – action could not completeFault – action could not complete

Page 38: Microsoft Robotics Studio Runtime, Simulation & VPL.

Selecting ServicesSelecting Services

Services appear in Services appear in the the ServicesServices toolboxtoolbox

Use the search box Use the search box to quickly find to quickly find services.services.

Page 39: Microsoft Robotics Studio Runtime, Simulation & VPL.

Making ConnectionsMaking Connections

Drag output message of first activity Drag output message of first activity ……

Page 40: Microsoft Robotics Studio Runtime, Simulation & VPL.

Making ConnectionsMaking Connections

… … to second activityto second activity

Possible targets are highlightedPossible targets are highlighted

Page 41: Microsoft Robotics Studio Runtime, Simulation & VPL.

Selecting ActionsSelecting Actions

When connecting an activity with When connecting an activity with multiple actions, select the desired multiple actions, select the desired action.action.

Selects the action to which to send the message.

Selects the output message that is used as input message for the action.

Page 42: Microsoft Robotics Studio Runtime, Simulation & VPL.

Data ConnectionsData Connections

Service actions define format Service actions define format required for input messagerequired for input message

Data Connections format messagesData Connections format messages

AlertDialog requires an input value called AlertText.

Selects the part of the input message that is used for the target.

Page 43: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! Revisited

Page 44: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! Revisited

Not connected. Automatically receives an empty input message.

Value:Value:

Page 45: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! Revisited

Value:“Hello, World!”(string)

Value:“Hello, World!”(string)

Page 46: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! Revisited

Value:“Hello, World!”(string)

Value:“Hello, World!”(string)

Page 47: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! RevisitedData connections formats the input message before it is sent to the activity

Value:AlertText = “Hello, World!”(AlertText string)

Value:AlertText = “Hello, World!”(AlertText string)

Page 48: Microsoft Robotics Studio Runtime, Simulation & VPL.

Hello, World! RevisitedHello, World! Revisited

Not connected. Output message is ignored.

Value:Empty(Success)

Value:Empty(Success)

Page 49: Microsoft Robotics Studio Runtime, Simulation & VPL.

Example 1Example 1

Create a new activity that translates Create a new activity that translates the thumb-stick value of the XBox360 the thumb-stick value of the XBox360 controller to left and right power controller to left and right power values of a differential drive.values of a differential drive.

User defined activitiesUser defined activities

Page 50: Microsoft Robotics Studio Runtime, Simulation & VPL.

XBox360 ControllerXBox360 Controller

ThumbsticksChangThumbsticksChangee notification notification

X, Y coordinates X, Y coordinates for both thumb-for both thumb-sticks:sticks:

LeftX, LeftY LeftX, LeftY

RightX, RightY RightX, RightY

floatfloat

XX

YY

1.01.0-1.0-1.0

-1.0-1.0

1.01.0

Page 51: Microsoft Robotics Studio Runtime, Simulation & VPL.

Generic Differential DriveGeneric Differential Drive

Very simple drive systemVery simple drive systemControlled by applying different power to Controlled by applying different power to left and right motorleft and right motor

SetDrivePowerSetDrivePower Action ActionLeftWheelPower, RightWheelPower:LeftWheelPower, RightWheelPower:values between -1.0 and 1.0 (double)values between -1.0 and 1.0 (double)

Page 52: Microsoft Robotics Studio Runtime, Simulation & VPL.

Conversion ActivityConversion Activity

??

Page 53: Microsoft Robotics Studio Runtime, Simulation & VPL.

User ActivitiesUser Activities

Similar to service activitiesSimilar to service activities

Multiple actionsMultiple actions

Can send notificationsCan send notifications

Have their own stateHave their own state

Page 54: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Page 55: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Double-click opens the activity and shows its implementation.

Page 56: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Page 57: Microsoft Robotics Studio Runtime, Simulation & VPL.

Selects the current action that is shown.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Page 58: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Input message of the action.

Output message of the action.

Page 59: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsInside an ActivityInside an Activity

Input message of the action.

Output message of the action.

Page 60: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Input message of the action.

Output message of the action.

Page 61: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Shows more properties of the action and allows to add and delete actions.

Page 62: Microsoft Robotics Studio Runtime, Simulation & VPL.

Shows more properties of the action and allows to add and delete actions.

List of actions in the activity.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Page 63: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Change name and description to something useful.

Page 64: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Add input values for the thumb-stick coordinates.

Page 65: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsAction PropertiesAction Properties

Add output values for the left and right drive power.

Page 66: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsConnecting the Input MessageConnecting the Input Message

Use the input message like any other message.

Page 67: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsConnecting the Input MessageConnecting the Input Message

Input values become part of the message.

Page 68: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsConnecting the Input MessageConnecting the Input Message

Page 69: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsCreating the Output MessageCreating the Output Message

Must put two message into one message.

Must put two messages into one message.

Page 70: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsCreating the Output MessageCreating the Output Message

Join combines two or more messages.

Page 71: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsCreating the Output MessageCreating the Output Message

Value:0.3251(float)

Value:0.3251(float)

Value:-0.73(float)

Value:-0.73(float)

Page 72: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsCreating the Output MessageCreating the Output Message

Value:Left = 0.3251Right = -0.73(Left float, Right Float)

Value:Left = 0.3251Right = -0.73(Left float, Right Float)

Join only creates the output message if there are two input messages.

Page 73: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsSending the Output MessageSending the Output Message

Connect the result message to the right border.

Page 74: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsSending the Output MessageSending the Output Message

Page 75: Microsoft Robotics Studio Runtime, Simulation & VPL.

Implementing ActionsImplementing ActionsSending the Output MessageSending the Output Message

Page 76: Microsoft Robotics Studio Runtime, Simulation & VPL.

Conversion ActivityConversion Activity

??

Page 77: Microsoft Robotics Studio Runtime, Simulation & VPL.

Using your ActivityUsing your Activity

Page 78: Microsoft Robotics Studio Runtime, Simulation & VPL.

Control Robot with Control Robot with WiimoteWiimote

Page 79: Microsoft Robotics Studio Runtime, Simulation & VPL.

Control Robot with Control Robot with SpeechSpeech

Page 80: Microsoft Robotics Studio Runtime, Simulation & VPL.

Additional ResourcesAdditional Resources

Web siteWeb sitehttp://www.microsoft.com/robotics

Community NewsgroupCommunity Newsgrouphttp://msdn.microsoft.com/robotics/

Princeton MSRS PagePrinceton MSRS Pagehttp://pave.princeton.edu/main/urban-challenge/msrs/

Page 81: Microsoft Robotics Studio Runtime, Simulation & VPL.

© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,

it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.