Saturday, February 12, 2011

NASA's Programmable Logic Rover


Fig:1 Micro Avionics Module.

The Programmable Logic Rover (or PLuto Rover) is mechanically similar to several other test vehicles used for NASA rover technology development: FIDO, Rocky 8, Athena, and K9. However, the avionics are based on a set of distributed processors ("Micro Avionics Modules") developed by the Advanced Mobility Avionics R&TD task. Each module is made up of a Programmable Logic Device (PLD) that includes an embedded Power PC processor. Each processor is responsible for one or more of the rover's subsystems. Software for each module was developed by the Distributed Rover Avionics Software R&TD Task.

Wherever possible, the PLuto Rover uses off-the-shelf electronics. The rover's mobility system is powered by 12 brushless motors that operate the vehicle's wheels and steering. The motors are controlled by an FPGA-based control system that supports as many as 12 motors on a single processor board. The rover's vision system consists of Firewire cameras that are directly connected to the Micro Avionics Modules. Each module provides onboard stereo-image processing that allows rover navigation applications to receive preprocessed range data at frame rates. An onboard IMU provides attitude information for navigation and localization. A wireless network hub provides the communications backbone for the distributed processors and the link to a ground-control infrastructure. The distributed avionics in the PLuto Rover make it unique. Each Micro Avionics Module uses less than a tenth of the power of a conventional processor and yet provides computing power equivalent to many desktop computers. But the most impressive feature of the Micro Avionics Modules is that the processors are embedded in Field Programmable Gate Arrays (FPGAs), which allow certain software algorithms to be moved into hardware to accelerate the processing even further. This allows stereo cameras, for example, to process stereo data as fast as the cameras can provide images.


Fig:2 The PLuto Rover

Because the processors use so little power, one can be dedicated to each function in the vehicle. Each camera pair and each instrument can have its own dedicated processor. So can an arm or mast for motor control. This allows each rover subsystem to become independent of the others. Software developers don't have to worry about how much of the processor they can use because they will get their own. Development of subsystems can then proceed in parallel. A set of Distributed Rover Avionics Software developed for PLuto supports this distributed development by providing simple interfaces that allow software to interact across the rover's internal network.

The PLuto Rover is leading the way to show rover developers how to use distributed avionics and distributed computing in an embedded systems environment. This will enable future Rovers to Mars (MSL and MSR), the Moon and the moons of the outer planets (Europa and Titan) to be built using modular hardware and software components.