Microsoft Robotics

Glossary Item Box

Microsoft Robotics Developer StudioSend feedback on this topic


2 | 3 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z



This stands for two dimensional.


This stands for three dimensional.


The term action is used in two contexts. Every DSSP message has an action which specifies what type of message it is. VPL activities also have actions that indicate what behavior to perform. Actions in VPL correspond to requests in a DSSP service. 

In CCR, receivers must be activated before they can receive messages.

VPL Diagrams are constructed from activities which can be either Built-In Activities or Services

An actuator is a device that a robot can use to interact with the real world. Examples include: a sound device for making beeps or playing synthesized speech; a gripper on an arm for picking things up; and wheels (really the motors) to drive the robot around. In a programming sense, an actuator is an output device.

RDS uses adapters to enable services to use other frameworks such as Windows Forms or the Windows Presentation Framework.

Anonymous Delegate
in C# an anonymous delegate is a method that does not have a name and can be written in-line with other code by using the delegate keyword instead of a method name.

This stands for Application Programming Interface. The term is used loosely to refer to a programming interface such as the contract that is defined for a service. See Service Contract.

An application is a composition of services that through orchestration can be harnessed to achieve a desired task.

An arbiter in RDS is responsible for arbitrating amongst the incoming messages, i.e. deciding when certain conditions have been met to enable a task to run. Arbiters must be activated for them to work. There are several different types of arbiters. See also Choice, Join, Multiple Item Receiver, and Receiver.

In .NET the executable files (programs or Dynamic Link Libraries, DLLs) are called assemblies. RDS services are typically DLLs. See also Reflection.

In DSS services messages can arrive at arbitrary times and in unpredictable order. These are asynchronous messages. It is also possible for two or more messages to arrive simultaneously, which requires a way to handle concurrency.

An attribute is a piece of metadata that is stored in a .NET executable file. It provides additional information about the object that it is attached to. Adding attributes to classes and methods in the code is called decorating or tagging.

The term autonomous means able to operate on its own. An autonomous robot needs an on-board computer to provide the necessary intelligence for it to run independently. In RDS, autonomous is also used to refer to robots that are remotely controlled via a wireless connection because they can roam around freely.


The term behavior can be interpreted at two levels. For service operations, the handler implements the behavior because a service contract contains only data definitions, not executable code. At a higher level, robots have behaviors such as wall or line following, obstacle avoidance, etc.

The "bin" folder contains all of the executables for services. It stands for binary because these files contain compiled code, not source code.

Block is a synonym for Activity in a VPL Diagram

DSSP messages contain a body which is the information that is processed by service handlers. In some cases the body does not contain any information and the receipt of the message is sufficient to trigger some behavior. The body is wrapped inside other data that is used by DSSP.

See Boolean.

A Boolean variable (bool in C# and VPL) can be either true or false.

In RDS, the term brick refers to the on-board intelligence that controls a robot. Usually this will be a microcontroller, but it could be a complete PC.

A Contact Sensor, often a switch, is also called a Bumper

A byte variable is a whole number that can be positive or zero. It is an 8-bit unsigned number (range from 0 to 255). See also short, ushort, int, uint, long, ulong.


CCR (Concurrency and Coordination Runtime) is a lightweight runtime that provides a message-oriented programming model enabling fine grained concurrency and complex coordination of messages without the programmer having to deal with the overhead of traditional asynchronous programming.

CCR Port

A CCR port is a data structure that contains two primary pieces of information:

  1. A "First-In-First-Out" (FIFO) data structure (queue) containing messages that have arrived on the port; and

  2. A list of continuations (tasks) that can be executed pending message arrival and arbitration over those messages.

Arbitration is done by arbiters that implement common concurrency constructs like join patterns and interleaved calculations.

See Character.

A character variable can hold a single character. In general characters can be printable or non-printable (such as carriage return and linefeed). The Unicode character set includes characters from a large range of different languages including Western European languages and simplified Asian languages.

A Choice arbiter in CCR is responsible for selecting one of many incoming messages. It takes the first message to arrive on one of the ports and then tears down the remaining receivers so that all other messages are ignored. The most common use is to receive a Response message or a Fault from a service.

In object-oriented programming, a class is a way to encapsulate data and/or behavior so that it can be easily reused. Classes have their own (user defined) data types.

In a client-server system a central system runs as a server and offers services to many clients across a network. A typical example is a mail server like Microsoft Exchange. In this case the clients are programs like Microsoft Outlook. Without the server, the clients are unable to talk to each other.

Code Signing
To guarantee that code has not been tampered with and also prove ownership, .NET executable code can be signed using a key.

Command Prompt
Throughout the documentation there are references to "command prompt" or "the command line". These refer to the DSS Command Prompt window that can be started from the RDS folder in the Start Menu. This is a Windows command shell with some special environment variables pre-defined. It is not the same as a standard Windows command shell.

Concurrency and Coordination Runtime
Concurrency means that two or more pieces of code, called threads, execute simultaneously. If the computer has multiple processors, or a multi-core processor, then it is possible for more than one piece of code to execute at the same time. However, if it is a single-processor machine then the operating system schedules threads to give the appearance that they are running at the same time. See CCR.

An interleave can have receivers in a Concurrent group. Concurrent handlers can run at the same time as other concurrent handlers (subject to the availability of threads). However, Concurrent handlers cannot run while an Exclusive handler is running (or vice versa).

Config File
See Configuration.

Most services have parameters that can be set to configure the service and change its behavior. These are stored in a configuration file which is an XML file that matches the service state.

In a VPL Diagram, the data and control flow is indicated by connections between activities. A connection can carry data, or simply control the logical flow of the program. In either case, messages travel along the connection. 

The term console has two meanings. As a carry-over from the old days of computers, a "console window" means a command shell where you have to enter commands by typing them in as opposed to a Graphical User Interface (GUI). In RDS, there is a console output service that runs automatically when you start a DSS node. This service collects all of the log messages and allows you to view them via a web browser and filter them.

Contact Sensor
A type of sensor that requires physical contact to be triggered, e.g. a spring-loaded switch or a whisker

Technically a continuation is the rest of the code that needs to be executed to complete a particular function. In some ways continuations are related to callback functions or event handlers that are executed once some event occurs. However the approach used in C# for continuations is much easier to program. See also Anonymous Delegate, Yield.

A contract is a condensed description of a service that describes its behavior so that other services can use it. You can inspect the contract of a service implementation using the DssInfo command line utility. A contract is typically identified by an HTTP URI, called a Contract Identifier, that if made publicly available allows other parties to find it.

Contract Directory Cache
To save time in looking up services, DssHost maintains a cache of all of the Contract Identifiers for services that are installed on the local machine (and their mappings to DLLs). Whenever a request is made for a service that is not in the cache, DssHost performs a rebuild of the contract directory cache which can be slow if there are many services.

Contract Identifier
Every contract must have a unique contract identifier. These take the form of a HTTP URI. Although they look like web URLs, there is no requirement for the URL to exist on the Internet.

One of the common problems in computer science is coordinating the execution of multiple threads that share resources so that they do not interfere with each other when they are executing and produce unpredictable behavior. This often goes by the name of mutual exclusion. Coordination also means synchronizing and sequencing how threads execute.

In DDSP, a Create message is used to start a new instance of a service.


Data Type
Variables in computer programs typically have a data type which prescribes the type of information that can be stored in the variable. Examples include integers, strings, booleans, etc. Sometimes this term is abbreviated to type.

A dataflow language, like VPL, uses a graphical interface to represent the program. Data (as a message) flows from one activity to another along a connection. In some cases the actual data is irrelevant and the message represents a control flow.

A datagram is another name for a message.

The term decentralized in relation to RDS means that services can run on any computer in a network and communicate with each other in a peer-to-peer arrangement.

Decentralized Software Services

Decentralized Software Services Protocol

A decimal variable holds a number as a sequence of digits and is therefore precise, unlike a floating-point number. However, there is a limit on the number of digits.

See Anonymous Delegate.

In DSSP, a delete message can be used to remove (delete) part of the state maintained inside a service.

The term deploy means to transfer a service (or services) to another computer. A command-line tool called DssDeploy is provided to enable packaging of services to deployment.

The term desktop is used to refer to a PC. DSS services can run on embedded devices, in which case they do not have a display screen (monitor) so they have no desktop.

In RDS the term device is used to refer to both sensors and actuators. Most services (but not all) are designed to interact with or control devices. In this sense, a service is analogous to a device driver in the Windows Operating System.

VPL uses Diagrams as a way of expressing program flow. See also Activity and Connection.

See Service Directory for the DSSP definition. In Windows, a directory is a folder on the disk where you can place files.

A dispatcher in CCR is responsible for assigning tasks to threads when the tasks are ready to execute. In effect CCR has its own thread pools and does not use the .NET CLR to manage threads. See also Dispatcher Queue, Task, Thread.

Dispatcher Queue
DSS services have one or more dispatcher queues. Each queue contains a list of tasks that can be executed to process incoming messages. These tasks are in turn managed via arbiters. See also Arbiter, Dispatcher, Task, Thread.

Dynamic Link Library. A DLL is executable code that can be used by other programs but usually not on its own. In .NET, the term assembly refers to files with a file type of DLL. These have a different internal format from native Windows DLLs.

A double variable is a double-precision floating-point number (64 bits). Doubles can hold extremely small numbers up to extremely large numbers.

A Drive is a system for robot locomotion. The most commonly used type of Drive is the Differential Drive which consists of two independently driven wheels.

In DSSP, a Drop message is used to tell a service to shut itself down.

DSS (Decentralized Software Services) sits on top of CCR and provides a lightweight, REST oriented application model that is particularly suited for creating Web-style applications as compositions of services running in a distributed environment. Services are isolated from each other, even when running within the same node and are only exposed through their state and a uniform set of operations over that state.

The DSS runtime provides a hosting environment for managing services and a set of infrastructure services that can be used for service creation, discovery, logging, debugging, monitoring, and security. DSS builds on existing Web architecture and extends the application model provided by HTTP through structured data manipulation and event notification. Interaction with DSS services happen either through HTTP or DSSP which is a SOAP-based protocol for managing structured data manipulations and event notifications. The combination of HTTP and DSSP allows services to expose their UI through traditional Web infrastructure mechanisms such as a browser as well as interacting efficiently with each other.

DSS Node
A DSS node is the context within which DSS services are executed. A DSS node can either be started stand-alone using the DSS Hosting tool (dsshost.exe) or as part of another application using the DSS Environment static classes

DSS Proxy
A DSS proxy is a generated assembly exposing the contract of a service so that it programmatically can be used by another service. The proxy assembly contains the public operations port and state types exposed by the service. When services partner with each other they link with proxy assemblies rather than directly with each other. A proxy is generated using DSS Proxy Generator Tool (DssProxy.exe) which is automatically hooked into the compilation process when generating a new service using DSS New Service Generation Tool (DssNewService.exe). The result of running DssProxy is a Visual Studio project which by default is created in a "Proxy" folder within the service folder.

DSS Transform
A DSS transform is an assembly which is generated along with a DSS Proxy assembly to provide a mapping between the service implementation CLR types and the CLR types exposed by the DSS Proxy assembly. The service transform assembly is loaded automatically by the DSS runtime and is only relevant to the service implementation, not other services using the service proxy. A transform is generated using DSS Proxy Generator Tool (DssProxy.exe) which is automatically hooked into the compilation process when generating a new service using DSS New Service Generation Tool (DssNewService.exe).

The DssDeploy tool is used to create packages of RDS services that can be deployed to other computers. The packages are self-expanding executables.

When a DSS node is run from another application (called hosting), the application creates an instance of a DssEnvironment. The DssHost tool does this from the command line.

DssHost is a program that hosts a DSS node and manages interaction between services. It also provides a small web server so that you can use a web browser to interact with services.

The DssInfo tool is used to extract information about services from their DLLs using reflection. This output can be formatted for use in documentation.

DSS Manifest Editor

The DssNewService tool can be used to create new service skeletons in a variety of different languages. Note that new services can also be created directly in Visual Studio using a Wizard, which is an easier interface to use.

DSSP is a simple SOAP-based application protocol that defines a lightweight service model with a common notion of service identity, state, and relationships between services. DSSP defines a set of state-oriented message operations that provide support for structured data retrieval, manipulation, and event notification. The intent of DSSP is to provide a flexible foundation for defining applications as compositions of services interacting in a decentralized environment. The functionality provided by DSSP is an extension of the application model provided by HTTP and is expected to be used as an addition to existing HTTP infrastructure. Please see the DSSP protocol specification for details.

DSSP Operation
A DSSP Operation is a message exchange between two communicating parties consisting of a request followed by zero or one response messages. The response message, if present, can either be a successful response or a SOAP fault. For a definition of available DSSP Operations, please see DSSP

The DssProxy tool generates Proxies from a service so that it can be called by other services. The interaction between services always takes place via a proxy. DssProxy is run automatically when you build a service.


Embedded Resource
An embedded resource is an object (that is not itself executable code) which is compiled into an executable program or DLL so that it can be accessed at runtime. Examples include images that are used as icons and XSLT files that are used to format web pages.

An Encoder is a sensor that can measure the amount that a wheel has turned. For instance, an encoder with 360 "ticks" per revolution counts off each degree as the wheel rotates.

An Entity is a simulator object. Entities usually simulate real-world objects such as a camera, a wheel, or even a complete robot. Entities can have children, which is the case for a robot which typically has sensors and actuators (that are also entities). 

An event is message that is generated during the execution of a program and is processed by an event handler. In Windows Forms, events can be generated by user actions such as clicking on a button. Event is sometimes used as a synonym for notification.

In .NET programming, an exception is an error that occurs at runtime and is thrown (or raised). Exception handlers can catch exceptions and try to fix the problem, report it or ignore it. If an unhandled exception occurs during the execution of a service handler, DSS automatically terminates execution of the handler, converts the exception to a Fault, and sends it back to the requestor.

An interleave can contain receivers in an Exclusive group. Exclusive messages can only be processed one at a time to guarantee exclusive access to service state. No other message handlers can be active while an exclusive handler is running. However, an exclusive handler will not pre-empt a running handler.

Executable program files in Windows have a file type of EXE. These are often referred to collectively as "executables" or binary files.

The term "executable" is often used to mean any file that contains executable code, such as a DLL or an EXE file.


If a service encounters an error in the parameters supplied in a Request or while processing a Request, it sends back a Fault as the Response message. The term Fault is commonly used in relation to Web Services and DSSP uses a similar definition. In Windows programming, code can throw Exceptions. Robotics Developer Studio converts Exceptions inside Service Handlers to Faults.

Field Of View
The term Field Of View (FOV) is used in relation to cameras and also laser range finders. It refers to the angle (usually measured horizontally) that the sensor can see. A typical FOV for a camera is 60 degrees, whereas a laser range finder usually has a FOV of 180 degrees.

A float variable is a single precision floating-point number (32 bits).

Floating Point
Floating point numbers consist of a mantissa with several significant digits and an exponent which is a power of 10. For example, 6427.891 is represented as 0.6427891 times 10 to the power 4 and has seven significant digits. See also float and double.

A Forwarder is used to send messages to another service. Forwarders must be established during service startup. Note that the other services can be located on different computers, in which case messages will be sent across the network transparently, i.e. the sender and receiver do not need to know how the messages are delivered.

In programming, a function is a piece of code that can be called to perform a task. Often a function will return a value based on the parameters that were supplied, which is the intended purpose of the function. Also referred to as a routine or method.


In DSS, Generic Contracts define the operations, state and data types for services. They might also be referred to as APIs (Application Programming Interfaces). They describe how a programmer interacts with a service that implements the particular generic contract. This is a key feature of DSS because it allows applications to use different services at runtime by switching the partnerships in the manifest, without the application having to know which particular implementation of the service is being used.

In DSSP, Get is one of the most commonly used operations. When a Get request is sent to a service, it returns a copy of its current internal state. See also HttpGet, Query, State.

Stands for Graphical User Interface. This usually refers to Windows Forms, although RDS services can also use web pages to provide user interfaces.

A GUID is a 128-bit integer (16 bytes) that can be used across all computers and networks wherever a unique identifier is required. Such an identifier has a very low probability of being duplicated.


Services must handle incoming requests, which means to process them and send back responses. See also Handler.

A Handler is a piece of code that processes a particular type of message. This might be a separately defined method or an anonymous delegate (inline code).

The term host refers to a computer that is running a DSS node. When used as a verb, an application can host a DSS node.

With RDS it is possible to run a DSS node from another application program. This is referred to as hosting. It allows complete control over the interface that is exposed to the users and also allows DSS nodes to be run as Windows Services that start automatically when a computer boots up.

HyperText Markup Language. This is the language use to write web pages.

HyperText Transfer Protocol

An HttpGet operation is a Get request to a service that is made over the HTTP protocol. This allows a web browser to interrogate a DSS service.


Generic contracts describe how to interface with a particular service. Actual services implement these contracts by providing the code that executes the necessary behaviors.

In DSSP, an insert message can be used to add information to the internal state of a service. For example, in the case of the Simulation Engine, entities must be inserted into the simulation. See also Submit, Update.

When a service is loaded and starts running it is referred to as an instance of that service type. Some services allow for multiple instances to be active simultaneously, but others to not. (This is similar in meaning to an instance of a class in object oriented programming). In a DSS node, each instance of a service must have a unique name in the directory.

See Integer.

An integer variable (int in C# and VPL) can contain a whole number (no decimal places, such as 1, 2, 3) which can be positive, negative or zero.

The term interface is usually used to refer to the operations supported by a service which are defined in a service contract. This is similar to an Application Programming Interface (API) for a conventional programming library. An interface can also refer to a hardware device used for input, output or control. See also User Interface.

An interleave is used to control message processing by splitting messages into groups called Exclusive, Concurrent and Teardown.

An iterator is a particular type of method that consists of a series of tasks that are run in succession. In C# the syntax for writing iterators makes multi-threaded code appear sequential. Only iterators, not conventional methods, can relinquish control of a thread (release it back to the thread pool) until a message arrives at which point they resume execution. In this way, an iterator never blocks (ties up) threads.


In VPL, a Join activity block accepts multiple input messages and sends a single output message that is composed from the inputs. The output message is not sent until all input messages have arrived.


See Code Signing.


Late bound
Late bound refers to the notion that a service at compile time knows which type of services it composes with but not which instances it will partner with once it has been instantiated.

In TCP/IP networks, localhost refers to the computer that you are working on. Its IP address is always, which is a reserved address specifically for "loop back" connections.

Often used as a synonym for Position.

Logging of messages is useful when debugging services. There are several different categories of messages that can be logged, such as Error, Warning, etc.

A long variable is a whole number that can be positive, negative or zero. It is 64 bits long. See also byte, sbyte, int, uint, ulong.

In DSSP, a lookup message is used to retrieve information about a service. See also Get, Query.


A manifest is an XML document that describes a set of services to be created by the DSS runtime. Manifests can be used to explicitly overwrite the default properties of a service such as the service instance name, or which partners the service should compose with. For example, a manifest may overwrite the default initial state partner for a service in order to explicitly set the initial state of a service. In addition to being created from manifests, services can be created programmatically by other services, or by accessing the Control Panel service from your Web browser. The Control Panel service is a system service and is always present when running a DSS node.

See Property.

In VPL, a Merge activity block takes multiple input messages and sends them out on a single connection. All incoming messages should be of the same type.

To give simulation models a realistic appearance, a 3D mesh describes the shape, color and texture of the model. Meshes are created using 3D modelling packages.

A Message is an instance of a particular data type. These types can be provided by Robotics Developer Studio or defined by the programmer. CCR and DSS are based on message passing. See also CCR Port, Operation, Request.

In object-oriented programming, a method is a subroutine that is associated with a particular class and can be called to perform operations on instances of that class.

Microsoft Visual Programming Language

In simulation, robots are represented by models. A model usually consists of several Entities.

Mount Point
The mount point is the root directory for a CCR/DSS or RDS installation.

Microsoft Robotics Initiative. This abbreviation appears in some code.

Microsoft VPL. See VPL.


See DSS Node

A Notification is a message that is send unsolicited, i.e. asynchronously, to Subscribers. Notifications are normally sent by a service when its State changes. See also Subscription.


An Operation is the basic method of interacting with a service. Operations can request that the service perform some function, ask a service for information, etc. See also Operations Port.

Operations Port
Every service has an Operations Port for receiving requests. It is actually a misnomer because strictly speaking it is an Operations Portset.

In the context of robotics applications, orchestration refers to the task of coordinating sensory input and control a set of actuators to properly respond to the sensory input. The goal of an orchestration is to provide functionality that can act as an independent application or as a componentized part of a larger orchestration.

The orientation of a robot generally refers to the direction that it is facing. Most robots operate on the ground or a floor, i.e. in a 2D space, so a single angle is sufficient to describe the orientation. However, robots such as aircraft or submarines operate in a 3D space so the orientation consists of three angles.


The DssDeploy command-line tool can be used to create a deployment package. This package is a self-installing executable program that usually contains all of the necessary programs and supporting files to run services.

The term Panel (or Pane) is a synonym for Toolbox in VPL.

A service composes with other services through the notion of partnering. A partnership describes a relationship between two services in a way that enables reuse or sub components in a late bound manner. Partners exchange messages as defined by service contracts and cooperate with each other - a process known as orchestration. 

See Partner.

In a peer-to-peer system any application on the network can communicate with any other application making many-to-many connections. Of course, this assumes that the applications have a common protocol or interface so that they understand each other. If one application goes down, the rest of the network is unaffected.

The Visual Simulation Environment includes a Physics Engine. The purpose of the engine is to simulate physical objects including mass, forces, friction, collisions, etc.

A connection pin in VPL is a point on an activity block where a connection can be made. There are input (or action) pins, output (or result) pins, and notification pins.

See Thread Pool.

See CCR Port

Several Ports can be grouped together into a PortSet. This makes it easier to handle a set of related Ports. In particular, services always have an Operations Port (which is a PortSet). The data types of the various ports in the service's PortSet define the types of messages it can receive. 

The pose of a robot consists of its position and its orientation. See Orientation, Position.

The position (or location) of a robot is usually expressed in terms of its coordinates. If it is operating on the ground or a floor then it is in a 2D space so two coordinates can describe where it is (but not its orientation). However aircraft and submarines need three coordinates so specify their position. See also Orientation, Pose.

Messages are posted to ports. The act of posting a message to a port causes arbiters associated with the port to evaluate whether or not a task can be executed to process the message. If there are no arbiters currently registered (activated) then the posted message will be queued in the port.

In CCR tasks can run with different priorities. When there are not enough threads available to run all tasks that are ready to execute, the CCR selects the highest priority task to run. 

In RDS you develop services to control robots which are basically computer programs with clearly defined interfaces. The term program is often used interchangeably with diagram for VPL.

A C# project is a set of source files and resources that are compiled to create an executable assembly. The configuration information for a project is contained in a file with the type CSPROJ. Projects can also be referenced by a Solution file. 

In object-oriented programming, a property is an attribute of a class, also called a data member. A message in DSSP has properties or fields which are the items of information contained in the message. In VPL, the Properties panel can be used to set the configuration of services or activities.

A protocol is a specification for how two computers, or often two applications, communicate with each other. Common protocols include HTTP and FTP. In RDS the protocol used between services is DSSP.

See DSS Proxy


In DSSP, a query message is used to retrieve information from a service. Typically this is a subset of the full service state and is used for efficiency. See also Get.


Microsoft Robotics Developer Studio. Also sometimes written as MRDS or MSRDS.

To receive a message means to accept it and process it in some way.

In CCR, a receiver waits for messages to arrive on port and then processes the messages when they arrive. Receivers can be non-persistent which means that they only process one message, or persistent which means that they continue to process messages until they are torn down.

When you are writing a service using Visual Studio you need to add references to the proxies for other services that you want to communicate with. This allows Visual Studio to determine what the data types and operations are for the other services. In VPL, multiple activity service blocks can be references to the same instance of a service so that the diagram can be drawn more conveniently.

The Visual Simulation Environment renders scenes to the screen to show what is happening in the simulated world. Rendering involves applying colors, textures or meshes to surfaces, handling lighting and reflections, etc.

In DSSP, a replace message completely replaces the service state with new information. See also Submit, Update.

Requests can be issued to services by sending them messages. The message itself is sometimes called a Request. The term Operation is sometimes assumed to be synonymous with Request, but an Operation is a complete Request / Response cycle. See also Response.

See Embedded Resource.

A Response is sent as an acknowledgement of a Request. The whole cycle of Request and Response is an Operation. See also Fault.

In VPL, activities send results via their output connection pins. Result has the same meaning as response for services.

For a package called Robotics Developer Studio it seems sensible to define what a robot is. However, the definition varies widely and RDS is not restricted to any particular type of robot. The common conception of a robot is something that has wheels and rolls around beeping and avoiding people and walls. Robots can also be UAVs which can mean either Underwater Autonomous Vehicles (submarines) or Unmanned Aerial Vehicles (drones). There are also robotic arms, the most well-known ones being those used on assembly lines to build cars. However, a house that is automated using built-in sensors and a control system can also be considered to be a robot. The possibilities are endless, but the key features are that a robot has sensors and actuators and usually some (maybe limited) intelligence.

Sometimes the installation directory for CCR/DSS or RDS is referred to as the root. This is a synonym for Mount Point.

A routine is a piece of code that performs a particular task. Also called a function or method.


A signed byte variable is a whole number that can be positive, negative or zero. It is an 8-bit value that can range from -128 to 127. See also short, ushort, int, uint, long, ulong.

In the Visual Simulation Environment, a scene is what a simulated camera sees. What objects appear in a scene depends on the Field Of View of the camera, its position and orientation, and its Look At point.

A sensor measures something in the real world. For example: sonar sensors measure distances; microphones (and a sound card) can detect sounds; and buttons can be used to select different actions. In a programming sense, sensors are input devices.

Services are the basic building blocks of RDS. A service provides isolation boundaries from other services enabling behaviors to be defined independently. The DSS runtime provides support for creating, monitoring, manipulating, modifying, and deleting services. Services can be combined (a process called orchestration) so that they can achieve higher-level behaviors by working together.

Service Directory
A DSS node contains a Service Directory which is a list of information about all of the services running in the node. This directory can be interrogated using to locate services.

Service State
The state of a service is a collection of properties that completely describe the current operational environment of the service. Service State can be persisted, in which case it is written to a file in XML format. When the XML file is later reloaded into another instance of the service it is referred to as Initial State. The Service State is declared in the code as a class that is marked with special attributes.

A short variable is a whole number that can be positive, negative or zero. It is 16 bits long. It ranges from -32768 to 32767. See also ushort, int, uint, long, ulong. 

See Code Signing.

Robotics Developer Studio includes a Visual Simulation Environment. This is generally referred to as the Simulator.

SOAP stands for Simple Object Access Protocol. This is the protocol used by Web Services to make queries and send back responses. RDS uses a protocol called DSSP that is functionally similar.

Visual Studio uses solution files (with a file type of SLN) to hold information about the projects (source files and other resources) that make up a service. Typically a solution contains a single project, but it can have more than one. 

See Service State

A string variable can hold a sequence of characters. In a practical sense, there is no limit to the length of a string because they can be millions of characters long.

In DSSP, a submit message is similar to an Update, but it does not necessarily change the service state. Submit messages are commonly used with web forms that are used to manipulate a service. See also Update.

In DSSP, a subscribe message is sent to another service to request notifications from that service when its state changes.

A service that subscribes to another service is known as a Subscriber. Subscribers must listen for specific message types, called notifications, that are sent by the originating service.

A service can ask for notification messages to be sent to it by another service. This is called a Subscription.

Subscription Manager
In order to simplify the programming of services, Robotics Developer Studio provides a Subscription Manager which handles sending notification messages to subscribers. A service using the Subscription Manager does not need to keep track of subscribers.

In VPL a Switch activity block is used to select where to forward an incoming message based on one out of many possible matching values. Each possible match is referred to as a Case. (The Switch activity is based on the C# programming construct of the same name).


A task is a section of code to be executed when a message arrives (or some combination of messages). Tasks can be conventional methods, iterators or anonymous delegates. Tasks are assigned (by a Dispatcher) to available threads in a Dispatcher Queue when they are ready to execute.

An interleave can have receivers in a Teardown group. Usually there is only one handler in this group. The Teardown handlers run when the interleave is being "torn down". No other handlers can execute while a teardown handler is running, and once the teardown handler has completed the interleave is deleted.

The term text is often used as a synonym for string, which is a data type that can hold sequences of characters. See also string.

A thread is an execution context on a computer. When a program runs it must have one or more threads. In a multi-processor or multi-core computer threads can run simultaneously (concurrently). On a single-core computer only one thread can ever execute at a time. Because CPU time is a scarce resource, operating systems share the CPU across multiple threads. This happens invisibly as far as the application is concerned. In robotics, multiple threads are often required to manage the complex tasks involved and so RDS services are multi-threaded. However, there is still a limit on the number of threads available.

Thread Pool
CCR manages a set of threads, called a thread pool, by allocating threads to tasks that are ready to execute based on proprity. If the tasks are of equal priority, CCR will round-robin. Unlike the .NET CLR, the CCR does not dynamically create threads on demand. The size of a particular thread pool is fixed at the time that it is created.

In VPL, a toolbox is a window or panel that is part of the user interface. The toolboxes include Activities, Services, Properties, etc.

DSS can use different methods to deliver messages. These are known as Transports.

See Data Type.


Stands for User Interface.

An unsigned integer variable is a whole number that must be zero or positive. It is 32 bits long. See also int, short, ushort, long, ulong. 

An unsigned long variable (64 bits) is a whole number that can be positive or zero. See also int, uint, long.

Uniform Resource Identifier
See URI.

In DSSP, an update messages changes part of the state of a service. See also Insert, Submit, Upsert.

In DSSP, and upsert message performs an Update if the information already exists in the service state or an Insert if it does not exist. See also Insert, Update.

A Uniform Resource Identifier (URI) is a compact sequence of characters that most commonly identifies a resource on the World Wide Web (see RFC 3986 for the formal definition). Contract Identifiers in RDS are in the format of URIs. This is intended to guarantee that they are unique. 

Uniform Resource Locator. URLs are used as addresses for web pages. They are a special case of URIs.

User Interface
A User Interface is a way that a computer program interacts with users. User Interface devices include hardware like a mouse, joystick, etc. User Interfaces can also be based on speech synthesis and recognition.

An unsigned short variable is a whole number that can be positive or zero. It is 16 bits long. The range is 0 to 65535.


In VPL, the name "value" is often used to refer to the result that it output by an activity.

A variable refers to a location in computer memory using a symbolic name. In many computer languages variables must have a data type and only information of that type can be stored in the variable. See also Boolean, Integer, String, etc. 


Microsoft Visual Programming Language (VPL) is an application development environment designed on a graphical dataflow-based programming model rather than control flow typically found in conventional programming. Rather than series of imperative commands sequentially executed, a dataflow program is more like a series of workers on an assembly line, who do their assigned task as the materials arrive. As a result VPL is well suited to programming a variety of concurrent or distributed processing scenarios.

VPL is targeted for beginning programmers with a basic understanding of concepts like variables and logic. However, VPL is not limited to novices. The compositional nature of the programming language may appeal to more advanced programmers for rapid prototyping or code development. In addition, while its toolbox is tailored developing robot applications, the underlying architecture is not limited to programming robots and could be applied to other applications. As a result, VPL may appeal to a wide audience of users including students, enthusiasts/hobbyists, as well as possibly web developers and professional programmers.


Visual Studio. Also written as VS2005 or VS2008, depending on the version. Visual Studio is the Integrated Development Environment (IDE) that is used to develop Robotics Developer Studio services (except for those written using VPL).

Visual Simulation Environment. This is a component of Robotics Developer Studio.


Extensible Markup Language. XML is used extensively by Robotics Developer Studio, e.g. for Manifests.

Extensible Stylesheet Language Transform. An XSLT file defines a transformation between some data in XML and some other output format. Usually the output format is HTML. XSLT is used in Robotics Developer Studio to format web pages that display service State.




© 2012 Microsoft Corporation. All Rights Reserved.