RoboticsConnection Blog

Tuesday, December 12, 2006

Robotics Studio, and Serializer Services Update

Microsoft Robotics Studio is an officially released product now! Microsoft has made Robotics Studio available in a Non-Commercial, and Commercial version ($399). This means hobbyists, students, and educators can play with, improve, and extend Robotics Studio services for free, and businesses can leverage those services, and develop their own for a very reasonable licensing fee.

To help us polish off our BETA release of the Serializer and Traxster Drive Services in time for the official Microsoft Robotics Studio launch (today), we employed the help of Chris Kilner, from Diversity Associates Ltd. Chris has been very involved in Robotics Studio since it's initial launch, and has developed his own set of useful services for the Devantech line of I2C devices (which can be found on our MSRS page).

Here's the changes and additions Chris has made for our Serializer and Traxster Services:

  1. Added Distance and Velocity PID Service (very cool!)
  2. Added MaxSonar-EZ1 Service
  3. Added TPA81 Service
  4. Improved GPIO Service
  5. Improved SRF08 Service
  6. Added XSLT, HttpGet, HttpPost to all services. XSLT Stylesheets are used to display service state via web pages, and provide User Interface controls to configure all services (see examples on our MSRS page).
  7. Updated Traxster Drive GUI
  8. Fixed a few communication bugs
  9. One Visual Studio solution now contains Serializer and Traxster Drive service projects
  10. Added connection status indicator in Traxster Drive GUI.

Our Serializer and Traxster Drive Services can be downloaded on our MSRS page.

This release of the services work with Serializer Firmware 1.2.0 and later. After the holidays, we will be adding a few more sensor services, and generic contracts.

Best Regards,

Jason Summerour
Summerour Robotics Corp
Microsoft MVP

Sunday, December 10, 2006 has been Overhauled!

New Logo
We are extremely pleased to announce that we've overhauled our entire website. November was a record sales month for us (by far), and I can't think of a better way to thank our customers than by offering them a dramatically improved website and shopping experience.

We overhauled the website for several reasons:
  • Our customers deserved a better site
  • We outgrew the capabilities of our prior website
  • We needed to automate the order fulfilling process to keep up with orders
The overhaul took us one month from start to finish, and here's what YOU get with the new site:
  • New RoboticsConnection Logo (see top of blog)
  • Easier navigation
  • Easier Checkout
  • Real-Time Shipping Quotes via USPS, FedEx, and UPS
  • Faster web page response
  • Improved up-time
  • Tabbed Product Information (very little scrolling required)
  • Site Breadcrumb
  • Customized Product Kit building capabilities (custom build your robot and other products)
  • Product Search
  • Improved cross-browser support

Here's what WE get with the new site:

  • Automated order fulfillment (billing, invoicing, shipping label generation)
  • Happier customers
  • More business
  • Dynamic Content
  • Improved order management backend
  • Improved Search Engine Optimization
  • Increased Website Traffic
  • Improved website maintenance
  • Time savings from automated order fulfillment can be spent on new product designs

Here's what's coming in January:

  • Gift Cards (yes, we know, too bad we didn't have this for Christmas)
  • Gift Registry
  • New Products
  • More Windows Embedded Content & Resources
  • Accurate Product Inventory
  • Monthly Specials

We wanted to continue to ensure that our customer's information is kept confident, and that the site remains as secure as possible. Therefore, we employed the help of to scan our website every few days for the latest vulnerabilities.

So, please stop by when you have a chance and peruse the new site.

We also wanted to take this chance to thank YOU, our customers, for your support and business over the last 2.5 years. We're looking forward to serving you in 2007, and we have several new exciting products coming out in Q1 2007!

Have a Merry Christmas, and Happy New Year!

Jason Summerour
Summerour Robotics Corp
Microsoft MVP

Sunday, October 08, 2006

BETA Release of RoboticsConnection Services for MSRS

Beta Release of RoboticsConnection Services for MSRS

We are pleased to announce that our Serializer Services and Traxster Drive Services are available for use with Microsoft Robotics Studio.

Serializer Services

The Serializer Services provide a subset of the total functionality of the Serializer for this release, and includes the following services:

  • Serializer Service (Partner to all other services)
  • Motor Control Service
  • Servo Control Service
  • Wheel Encoder Service
  • Sharp GP2D12 Infrared Sensor Service
  • Sharp GP2D120 Infrared Sensor Service
  • Devantech Cmps03 Electronic Compass Service
  • Devantech SRF08 Sonar Service

We will be adding the rest of the sensor service support in the coming weeks, which includes (SRF04, SRF05, SRF10, TPA81, MaxSonarEZ1, Ping, any several others).


We also provide the TraxsterDriveService, which provides a Service oriented GUI to enable customers to drive our Traxster Robot Kit around (using Serializer Services), move the turret, read Sharp GP2D12 infrared sensors, etc. Sensor readings are updated real-time on the GUI.

Tutorials Coming...

We will be posting some tutorials later this week, and continue our blogs on how the services operate.

You can download the services here. We also have a short movie of the Traxster driving around using the services (we're using a USB Xbox style controller).

- Jason Summerour
Summerour Robotics Corp.
Microsoft MVP

Friday, September 22, 2006

Serializer Services - 30,000 Foot Introduction - (MSRS) Post 2

NOTE: These posts assume that you've read through some of the basic Microsoft Robotics Studio Tutorials and worked through some of their sample projects.

Where do I start? There's so much cool stuff to learn!

For the purpose of the next sequence of posts, I'm going to cover our Serializer Services collection only. Then, I'll follow up with our Traxster Drive Service. I want to keep the blog simple, and straightforward. Future posts will build on complexity and cover more advanced topics. Eventually, we'll be cooking with gas!

When I traveled to Redmond to get my two day crash course on
MSRS last April, the concepts and archietecture weren't like anything I had ever seen, so I hope to help out newbies to MSRS understand what I didn't. The basic framework and architecture makes sense now (thanks to Joseph Fernando and Andreas Ulbrich), but it took me a while to fully understand how the basic architecture works.

Decentralized Software Services Protocol

Before I get started on the Serializer Services, I think it's important to provide a quick explanation of Services and DSSP, just so we can have them handy.

The following excerpts are from Microsoft's Decentralized Software Services Protocol document. They do a much better job than I could ever do of explaining the jist of DSSP. :)
Microsoft Robotics Studio Services are based on the Decentralized Software Services Protocol (DSSP). 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.

DSSP defines an application as a composition of services that, through orchestration, can be harnessed to achieve a desired task. Services are lightweight entities that can be created, manipulated, monitored, and destroyed repeatedly over the lifetime of an application through operations defined by DSSP.

This last excerpt regarding destruction and creation seemed really cool to me. Why? Because if you have a rogue service which is misbehaving, you can simply terminate it, spawn a new identical service, and continue on your merry way! So, Services beware! Instant discipline for bad behavior! :)

Basic Terminology

I think it's also important to understand, and use, the terminology defined by Microsoft regarding MSRS services. Thus, I'm going to include some basic terminology below, again repeating Microsoft's DSSP document verbatim.

Service - A service is a computational unit that has
identity, state, behavior, and context.

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

Service State - The data representing a service at a
specific point in time

Service behavior/contract - The behavior of a service
(aka the contract) is the combination of the content model describing the state
and the messages exchanges that a service defines for communicating with other

Partner - A partner is a labeled reference representing
a behavioral relationship that a service has to another service.

Message - A message is a one-way message, a request, or
a response participating in a DSSP operation.

Request - A DSSP request is a message participating in
a request-repsonse message exchange pattern.

Response - A DSSP response is a message participating
in a request-repsonse message exchange pattern.

Now I can communicate using this terminology, and you'll understand what I'm writing in this post, and in subsequent posts. :)

What does DSSP really buy me?

Since all Robotics Studio services are based on DSSP, we can take advantage of the fact that they can be distributed. This means that an application can be composed of multiple services running on local, or distributed computers.

Another advantage of DSSP is that services can serve as a basic building blocks to provide simple behavior. These basic services can be assembled together to build more complicated services and behaviors.

Futhermore, once you debug the service, everyone can reuse it (and not have to debug it again). Not only does this promote code reuse, but also improves reliability.

Lastly, DSSP allows you to pick and choose only those services you need "a la carte" using an XML manifest file. I'll discuss the manifest file in upcoming posts. So, as you can see, DSSP is very powerful!

What are Serializer Services?

The Serializer Services are actually a collection of what I call Serializer Peripheral (SP) services, or "SP services" for short. SP services encapsulate well defined functionality built into our Serializer .NET robot controller. Such functionality includes various distance sensor services, motor control services, wheel encoder services, servo services, I/O services, etc.

SP services all use a single central "Serializer service" as their Partner. The Serializer service is responsible for handling communications to and from the physical Serializer robot controller, as well as provide an external command-response interface to SP services. This allows the SP services to send a command to the service, and receive the response back (if needed). The SP services then update their internal state, and if they have subscribers, will send a notification that the state has changed.

An Example Application

I'm going to close by discussing the diagram below, which is composed of a Drive service, several SP services, a single Serializer service, and the actual Serializer robot controller.

Starting on the right, the Drive service sends messages to the main port (red dot) of specific SP services, such as a "SetMotorPower" message sent to the Motor service(s). When the Motor service(s) receive those messages, they in turn, send a message to the main port of the Serializer service. When the Serializer Serializer service receives the message, it sends the proper serial command to the Serializer robot controller.

Once the Motor service(s) receive a response from the Serializer service, they update their state, and in turn, notify the Drive service over the notification ports (yellow/orange rectangles). As the Drive service receives these notifications, it can update it's GUI, since now it knows for sure the motor power was correctly set.

Some of the SP services have internal timers, which fire internally to tell them to periodically update their state. An example is the Sonar service. Every time the internal timer fires, it sends a message to the Serializer service. The Serializer service then sends a command to the Serializer robot controller to query the state of the sensor connected to it. The value the propogates back up to the Sonar service, which updates it's internal state, and as you've probably already guessed, sends a notification to the Drive service.

Although the diagram shows a single notification port on the DriveService, there are in reality, a notification port for each partner.


In the next post, I'll discuss the Serializer service interface in more detail. Subsequent posts will drill down into the SP services, and finally into the Drive Service.

-Jason Summerour

Microsoft Robotics Studio Services (MSRS) Post #1

We have been hard at work integrating our products with Microsoft's new Robotics Studio. We had hoped to make Services for our products available for our customers before now, however, time just hasn't permitted.

What's the holdup?
Between developing new products, documenting products, shipping products, issuing new software releases, handling everyday business, and having some semblance of a life, it's been hard to find the time to complete the services. Not only are we learning how Robotics Studio works, but we're also writing, testing, and documenting the services we're developing.

What we've been doing over the past 3 months:
Our initial set of services (June 06) actaully communicated with our Serializer .NET library (which implements the Serializer Protocol). The Serializer .NET library then communicated w/ the Serializer. Although we did get these services running, there was very poor performace. This was due to the fact that the Serializer .NET library, as well as Robotics Studio, both used the threadpool. This caused massive threadpool contention.

So, Microsoft suggested that we simply implement the Serializer protocol in the Serializer Services, and keep the Serializer .NET library available for customers who want to use it in a .NET application (not Robotics Studio).

I must say that the Robotics Studio group at Microsoft has provided excellent and timely help to us, and has done so with open ears. That shows us that they're dedicated to making a great product, and that they listen to the customer.

When will they be available?
It looks like we'll have an initial set of services for our Serializer .NET Robot controller and Traxster Robot Kit available by the end of September. You will be able to use all of the functionality the Serializer .NET Robot controller provides, as well as drive around one of our Traxster Robot Kits, which use a Serializer as their main controller.

We are also providing some tutorials, and rich diagrams to help explain how our services work, and how customers can tap into them.

Once we have the basic services in place, we'll be adding additional services to support current and future products.

More to come...

-Jason Summerour

Wednesday, September 13, 2006


Welcome to the RoboticsConnection Blog Site. Here we will blog about our various robotic developments, experiences, and activities. Please feel free to post comments.

Best Regards,

Jason Summerour
Summerour Robotics Corp