Robotics is hard. It encompasses the quinessential embedded system, incorporating everything from communications to motor control. Some robotics systems even add artificial intelligence (AI) and remote control to the mix. Robotic software usually needs to handle real-time control for movement as well.
A developer who writes all the software would need expertise in real-time programming, motor control, AI, maybe some image and video processing, and so on. Fortunately, platforms like ROS (Robot Operating System), Microsoft Robotics Developer Studio (MRDS) (see “Software Frameworks Tackle Load Distribution”), and iRobot’s Aware 2 make the job significantly easier.
Frameworks Do Heavy Lifting
The U.S. Department of Defense (DoD) initiated the open Joint Architecture for Unmanned Systems (JAUS), which is now maintained by the JAUS Working Group as OpenJAUS. The architecture, which has a hierarchical structure, defines a messaging system that provides a generic interface to a robot (Fig. 1). JAUS was designed to provide a level of interoperability between robots and their controllers as well as interaction between component modules. JAUS was a requirement for the Future Combat Systems program.
Platforms like ROS, Aware, and MRDS tend to have a more flexible communication infrastructure that often incorporates publish/subscribe semantics within their framework. And although ROS may appear as an operating system to some developers, it actually runs on top of Linux, as does Aware 2.
Robotic frameworks are still in a state of flux, and none is dominant at this point. Many robot projects, such as Anybot’s QB telepresence robot, are completed with internally developed frameworks.
ROS: Open-Source Framework
ROS runs on robots like Willow Garage’s PR2 (Fig. 1) and Texai. It also runs on the Beagle Board (see “Open Source Bites Board”), which runs a Texas Instruments 720-MHz Cortex-A8-based OMAP3530.
ROS started out in the Stanford Artificial Intelligence Laboratory to support the STAIR (Stanford AI Robot) project. It was built upon the open-source Player, Stage, and Gazebo projects (see “Real Robots: Player Project) and remains compatible with them, allowing use of the Gazebo 3D simulator.
ROS utilizes a publish/subscribe message passing architecture. Designed to be a cross-platform environment, it also has been integrated with Gostai’s Urbi (see “Gostai Urbi” at www.electronicdesign.com).
Continue to next page
Urbi And RTC
Gostai’s Urbi provides a range of robotics platforms and development tools. Gostai’s urbiscript is a programming language that provides access to Urbi and the Object Management Group’s (OMG) Robot Technology (RT) Components as well as ROS components (Fig. 2).
The open-source OpenRTM-aist, a CORBA-based middleware platform, uses RT Components. The Urbi platform is open source, though not all of Gostai’s tools are. Urbi is based on a C++ distributed components architecture called UObject.
Urbiscript ties everything together. It handles parallel and event-based programming. The Gostai Studio Suite is a set of two graphical programming tools: Gostai Studio and Gostai Lab. Gostai Studio (Fig. 3) is an editor for hierarchical finite state machines (HFSMs).
The Microsoft Robotics Developer Studio development platform includes the Distributed Software Services (DSS) and the Coordination and Concurrency Runtime (CCR). DSS and CCR have found applications outside robotics applications because of their concurrent and distributed nature.
CCR is built on .NET, allowing applications to run on Windows platforms. The framework works with any .NET programming language in addition to the Visual Programming Language (VPL) that was released as part of the Microsoft Robotics Developer Studio. CCR handles actions such as event notification and distribution.
DSS builds on CCR and uses a network interface. A DSS service can expose a set of interfaces via an HTTP interface, making remote control a relatively basic task. The DSS protocol and interfaces do not have to be built on CCR, allowing controllers and other services to be built on any platform. The Studio’s simulator provides a way to test robots without requiring a physical artifact (Fig. 4).
The iRobot Aware 2 is built on an open-source framework (Fig. 5). It utilizes an open architecture, but the higher-level tools such as the robotics and operator control unit (OCU) frameworks are proprietary. As with other platforms, they are network-centric. The company incorporates security features that are often lacking in alternative platforms.
Aware 2 is used with the iRobot 710 Warrior (Fig. 6) and the iRobot 510 Packbot. The company provides hardware and software development kits. Also, iRobot incorporates behavior-based intelligence into their frameworks.
Robotics frameworks will continue to develop, and new ones are on the horizon as challenges arise that exceed the scope of existing platforms.