Foreword

I am pleased to have the opportunity to introduce this book and Microsoft Robotics Developer Studio to its audience. I hope that the combination helps foster the creation of interesting applications for robots because it is clear that the key to the success of this emerging new industry is software that delivers value.

Anyone who has been around for a while recognizes that the current robotics industry has many similarities to the early PC industry. Both are characterized by both the tremendous passion and anticipation of the early pioneers and questions about the value of the technology. With the advent of word processing, spreadsheets, and thousands of other applications, no one asks me any longer why I own a PC. In fact, most of them also own PCs. Similarly, the personal robotics market that is just emerging has the same or even greater potential if the creativity of its community can be unlocked.

It is the vision and energy of the existing robotics community that directly contributed to Microsoft investing in the creation of Microsoft Robotics Developer Studio. While many employees at Microsoft have had a personal interest in robotics, it was not until the leadership from diverse parts of the robotics community invited Microsoft to participate that the company decided to get started. Until that time, robotics developers were considered part of an audience consisting of casual, academic, and professional developers who might use Visual Studio and our embedded operating systems.

In 2004, things began to change. I happened to be in the right place at the right time to help make that happen. At the time, I was working in the offices of Microsoft's chief software architect, aka Bill Gates. Part of my job was to promote synergies across the company, as well as to be an extra set of eyes and ears for Bill. That enabled me to attend a number of meetings with notable members of the robotics community whose projects ranged from educational robotics to academic research and from consumer robotics to industrial automation. Despite the diversity of the audience, these people all reflected a common message—something significant was happening; and they encouraged Microsoft to participate and apply its software expertise just as it had in the past to PCs and the Web.

I began a dialogue with Bill about how Microsoft might respond to this invitation. The discussion was very timely. Bill, having recently visited a number of universities to speak on the importance of computer science to future technology, was treated to several campus tours that included some innovative work in robotics. This enabled him to see firsthand the tremendous progress and investments being made in the robotics community. As a result, he asked me to spend the next few months gathering more data and formulating a specific proposal about what we might do.

I then talked with even more people in the robotics community, including Red Whittaker from CMU, Sebastian Thrun from Stanford, and Rod Brooks from MIT, to name just a few. All of them confirmed my earlier impressions that the market for robotics was primed to move forward in a new, more personal dimension. However, they also indicated that significant challenges were holding back its progress. Specifically, every robot was an island unto itself, resulting in limited sharing of technology. Developing software for robots has historically required a great deal of technical expertise and resources because the tools and technologies needed have been typically tied to specific hardware platforms. Therefore, despite a growing interest, it was hard and often expensive for anyone to participate.

I compiled my research into a 60-page proposal outlining how Microsoft could help address these challenges, which I sent to Bill, who requested that I review it with Craig Mundie, who serves as chief technology officer focused on forward-looking strategies for the company, and Rick Rashid, Microsoft's senior vice president of research, to get their insights and feedback from the perspectives of the academic and research communities. Both executives were very supportive. Craig offered some advanced technologies he had been incubating and Rick offered to host the new incubation.

From there it took about nine months to prototype what would become Microsoft Robotics Developer Studio. After another executive review, the prototype was approved, leading to a new product and business for Microsoft. In June 2006, the product was formally previewed; it was released in December that same year.

What was delivered is an impressive collection of software. It starts with the runtime, which provides a very simple, but flexible model for development. The Concurrency and Coordination Runtime (CCR) and Decentralized Software Services (DSS) libraries were originally intended as a future programming model to enable developers to write applications for the increasingly prevalent multi-processor, distributed scenarios into which computing technology is evolving. CCR enables developers to move beyond the limitations of single-threaded applications without the conventional complexities of programming locks and semaphores. DSS takes that simple programming model and applies it across the network, providing a simple yet elegant, flexible model that can run on a single PC or across networked servers. Modeled on conventional Web-style interfaces such as HTTP and SOAP, it extends the so-called Representational State Transfer (REST) model by providing a powerful notification (publish-subscribe) framework that makes the system very efficient, yet applicable to both Windows and web applications.

Furthermore, the architectural framework provides a better model for resiliency and software maintenance. Software modules, which we refer to as services, operate in isolation from each other, both from a data sharing model as well as execution standpoint. This means that failures (bugs) in one service are unlikely to corrupt the data or execution of other services. In addition, individual services can be shut down, restarted, or replaced dynamically, meaning software maintenance can be performed while an application is running. Because data sharing is done through message-passing and is represented as documents, it is an easy model for maintaining the integrity of the data shared between models. This code-data separation also makes it possible to easily create different views or user interfaces of the data without affecting the code creating the data. Therefore, it is possible to have many different ways to visualize the data. In fact, one of the easiest ways to view the state of a service is to simply use a web browser because each service state has a URL.

Finally, the CCR/DSS programming model provides for rich composability—that is, applications can be composed of functions provided by other modules. This is reflected in the number of generic services that are included with Microsoft Robotics Developer Studio. It enables specialization of services at one level, such as a specific motor, while enabling more advanced services, such as a drive service, to define partner contracts that enable it to operate with a variety of different motor hardware. This capability to apply series across different robots, results in not only greater opportunity for accessing enabling technologies, but also a larger market for those creating those technologies.

In addition to the programming model afforded by the CCR and DSS runtimes, we added tools to make it easier to develop applications. While supporting a wide variety of programming languages, including C#, C++, Visual Basic, and Python, we added the Visual Programming Language (VPL), which enables an easy drag-and-drop approach to creating applications. This tool not only provides a somewhat easier way to create applications, but also facilitates rapid prototyping because it offers the optional generation of human-readable C# code. Moreover, because of the common services-oriented programming model, the language is infinitely extensible.

The Visual Simulation Environment provided also makes development easier. Its 3D graphical presentation is augmented with a software physics engine for a realistic emulation of robots and their environment. Because it uses the same services framework, it is possible to develop applications in simulation and easily move them to the real hardware, which often saves time and resources. Services can be created that run without regard to whether they apply to the simulation or the real world. The software physics engine means that interaction between simulated entities is freely available. For example, when two entities collide, the simulation automatically applies the result both operationally and visually.

Finally, we added a great deal of sample code—in terms of robot models, enabling technologies, and tutorials—to the toolkit. The objective is to help people get started. Most of these samples are provided in both compiled and source form, so every sample can serve as a learning experience. Of course, with so many samples and tutorials, getting started may sometimes be overwhelming.

That's where this book comes in. It provides a number of additional ways to explore beyond the samples in the toolkit and therefore is a good companion for developers just beginning. It also illustrates creative ways to use the tools and libraries in Microsoft Robotics Developer Studio to build innovative new robotics applications.

I believe that by enabling a wider audience of contributors personal robotics has the potential to become as much a reality as personal computing has become today. I hope that Microsoft Robotics Developer Studio and this book provide important catalysts toward that end.

Tandy Trower

General Manager

Microsoft Robotics Group

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.147.83.176