Many people ask about and are interested in the physical construction and componentry of Tommy Jr. But many know that the 'secret sauce' lies in what cannot be seen: the software. The software behind Tommy Jr. represents the thought process codifying how T Jr. behaves and responds to the world around him.
So what's in the software and how in the world did we create such a complex piece of machinery so rapidly? We've relied on two primary software components. One is called 'MAX' and the other is called 'Java'. MAX is a higher-level general purpose robotics operating system that enables us to build any type of robot application, from simple to complex, rapidly and economically. It's a platform created and offered commercially by Perrone Robotics . We'll talk a little about MAX later, but I want to take some time to talk about the other core piece "Java".
The Java technology platform was created by Sun Microsystems (also Tier I Team Jefferson sponsor) and serves as both a general purpose programming language and platform upon which many applications are developed. Java is used to build complex Web and server applications, games, cell-phone applications, desktop applications, and just about any other type of application you can imagine. It's a high-level programming platform that permeates just about every piece of software we use.
While many have heard of its use for server and Web applications, its usefulness in robotics and embedded applications is also becoming increasingly popular. The MAX platform in fact, runs on various profiles of the Java platform.
Tommy Sr. ran 100% on Java. Tommy's standard processor ran MAX-standard on Java SE (a standard profile common in desktop applications). Tommy's micro-control behavior also ran 100% on Java using MAX-micro on Java ME (an embedded profile of Java common in cell-phone applications). Thus, we programmed Tommy Sr.'s high-level AI, sensor-fusion, and decision making in Java, as well as the logic that talked directly to Tommy's actuators (controlling steering, throttle, braking) and received low-level motor position and vehicle state back in real-time for feedback control. Whereas some teams leveraged more expensive ready-made control systems for vehicle controls, we leveraged a few $100 parts, Java, and MAX to imbue our vehicle with its vehicle controls AND AI.
This year, Tommy Jr. represents a leap forward in both technology and Java technology utilization. In addition to the Java SE and Java ME profiles leveraged before, we've also added higher-level real-time and determinism using the Java RTS (Real Time System) platform with a new MAX real-time profile built upon it. Java RTS is a revolutionary platform that is permitting us to perform high and low level tasks in software that require deterministic responses (e.g. given a detected sensor input, respond within x seconds to stop the car). Fifteen years ago, when I was working on safety-critical train control applications, programming these types of tasks took man many person-years of time, expensive processors, and expensive real-time operating platforms. With Java RTS and our MAX real-time profile, we're doing things at 1/1000th the time and money it used to cost to do such things. This is what people call "disruptive technology".
Additionally, we've been tinkering with and leveraging a new micro-control environment from Sun called SunSPOTs. It provides an ARM-based programming environment to do all sorts of low-level micro-control, again, 100% in Java.
Why is this important to us? Well for one, as stated, we've got a robust robotics software platform built on Java, and thus enabling us to reuse many software libraries and providing common development techniques and tools for building Tommy Jr's functionality. The level of reuse and rapidity of programming has been astounding.
This means saving time and money. Those are two things we lack. Perspective check: we've built Tommy Jr. on about $500 worth of computing power, maybe 10 person-months worth of new development time, and with about $50K in parts total. This can be contrasted against the multiple high-end processors, 100's of person-years, marshaling of forces, and literal millions of dollars that could and are being spent by some others. There are tremendous efforts and people involved in this challenge. We just had a limited amount of time and money. Thanks to Java, we've simply caffeinated our efforts.