Java Authors: Adrian Bridgwater, Pat Romanski, Elizabeth White, Liz McMillan, Kevin Benedict

Related Topics: Java

Java: Article

MAX: A Java-Based Personal Robot Platform

MAX: A Java-Based Personal Robot Platform

When you mention the word "robot," most people think of either large industrial bots that do heavy work on factory floors, suicidal bots doing battle on TV, fanciful R&D bots gracing the labs of universities, or simple hobby bots of the LEGO Mindstorms ilk. Don't get me wrong, all such creations are deeply fascinating to me and embody tremendous ingenuity and engineering craftsmanship. However, I want a robot that I can make do a variety of things around the house or place of business, one that won't cost a small fortune and is flexible and evolvable enough that I'm not stuck with a robot constrained to accomplishing a single task. Essentially, I want something that doesn't exist. I want the "Personal Robot."

Despite what may have been perceived as blind fantasy, a few years ago I set about pursuing the construction of a personal robot. I had a formal background in all of the requisite engineering skills including robotics and AI, but they were festering on my brain's vines of unused knowledge. My years spent doing work that actually generates rather than consumes money thrust me into the world of more commercially viable enterprise technologies and products. However, I began to see more and more of a possibility of fusing the commercial-grade work I was doing with my robotics R&D to yield a robotics platform that was cheap yet sophisticated. I wouldn't need to mortgage my house to buy a platform that only the wealthiest of companies or agencies could afford, and I wouldn't be stuck with a constrained hobby bot that could maybe flicker a few lights and fall down the stairs. Instead, I'd commence building a platform that was based on open source and commercial-grade products, be able to integrate with an assortment of underlying useful mechanical hardware components, and provide myself with an open sandbox and playground in which I could develop a wide variety of robotics apps.

I scrambled to give this platform a name and requisite acronym and could only muster the three letters M-A-X. MAX stands for Mobile Autonomous X-Bot. The mobile and autonomous part should be obvious, but the X-Bot represents the fact that the bot would be a generic platform atop of which I could do cool things. X is a variable. Get it? Just plug whatever application you want into the MAX platform and that is what X becomes. Armed with a name and an acronym, I was ready to crank up the R&D a notch and began forming a company around said efforts.

There is a plethora of hardware components on the market useable in robots ranging from the capriciously cheap to the stylishly pricey. To create MAX in such a way that would make it easy to work with this varied hardware, we defined a Java-based abstraction layer to interface with such devices. This was a key design feature since as you create or load different robotics applications into MAX, you may also require different robotics hardware to support your application. Our design thus called for plug-and-playability achieved by either custom configuration of a few generic drivers or by creating drivers specific to the hardware device being utilized.

As a Java zealot, everything I aim to do is in Java. If I could Java-enable my nose-hair trimmer, I'd do it. Blind loyalty to programming languages aside, I naturally think there are genuinely good reasons for using Java to build robotics applications. Apart from its simplicity as well as operating system (OS) and computing hardware independence, the wide range of built-in, commercial, and open source tools readily available make it an attractive and low-cost platform for cranking out robotics apps. Thus, we were hell-bent to try and use a standard J2SE runtime operating on Linux (or any other OS) running on a standard CPU for our underlying platform. In fact, this standard JOC (i.e., Java-OS-CPU) platform is indeed the only platform required by MAX for a wide range of robotics applications.

With a standard JOC platform, MAX communicates with external robotics hardware devices via Java-based interfaces to standard parallel, serial, and USB computer ports. For certain devices like digital cameras, the physical connectivity is easy since most cameras plug directly into a USB port. To interface with certain other sensor and actuator types, such as IR sensors and DC motor-driven wheeled bases, a few extremely simple and low-cost hardware connectors are used to bridge between standard computer ports and external robotics hardware.

For certain sensors and actuators, a more real-time interfacing approach is required; a standard JOC platform won't cut it here. Hence our MAX design required an augmentation to work with a J2ME-based, real-time Java embedded JOC platform. A few reasonably priced platforms on the market exist with some even built around the aJile Java-based processor core executing Java instructions in hardware.

For a certain range of applications, the embedded JOC platform and MAX profile will be all that is needed to perform a variety of basic robot functions. For other applications, a standard JOC platform and MAX profile will be required for more sophisticated applications that perhaps require access to large amounts of persisted data or communication with multiple distributed services, or need to implement more complex planning algorithms. Yet another alternative is to use a standard JOC MAX profile for the more complex data, communication, and planning operations and leverage use of the embedded JOC MAX profile for the sense-actuate functionality inside the same physical bot.

The MAX software and hardware bridges are designed with maximum flexibility for allowing a choice of underlying hardware while providing open and configurable interfaces for building robotics applications that use and drive such hardware. While a growing suite of MAX components is being built and prototyped with a mixture of hardware devices, the real test will come when we start shipping MAX hobbyist and developer's kits. Only then will we all see what sort of community grows to extend MAX and satisfy the "X equals to" equation, making bots and applications that do things we've always dreamed of and have yet to dream of doing for ourselves and organizations in an open, extremely low-cost, and constraintless fashion.

More Stories By Paul Perrone

Paul J. Perrone is an architect, author, and speaker on Java, J2EE, and XML via Assured Technologies, Inc. (www.assuredtech.com). Paul founded Assured Technologies in 1998 and has more recently founded Perrone Robotics, Inc., to focus attention on the vertical space of software for robotics.

Comments (2)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.