Curiosity landed on Mars on Aug. 5 (Pacific time), and the six-wheeled vehicle was made ready to roll after NASA engineers upgraded its on-board flight software with a new version, release 10, that's optimized for traveling long distances and making use of Curiosity's robotic arm. Curiosity's R9 software, the ninth full upgrade since the program's inception, was oriented to flight and landing control.
"While on cruise to Mars, we updated the software in June, and we updated the surface software right when it landed," said Benjamin Cichy, chief software engineer for the Curiosity rover at NASA's Jet Propulsion Laboratory in California.
Written on Linux-based workstations, Curiosity' software runs on Wind River's VxWorks real-time operating system. The primary development environment is the Wind River Workbench. Software upgrades are beamed up to the rover through a series of signals sent from giant antennas in California, Spain, and Australia to orbiters circling Mars and then to the vehicle itself.
[ Learn more about the mission. Read Curiosity Lands On Mars: 10 Amazing Facts. ]
R9 optimized the vehicle for landing, including the so-called "seven minutes of terror" when it plummeted through Mars' atmosphere. During that phase, the software executed some 300 autonomous actions, including firing 76 pyrotechnic devices that caused the vehicle to transition through 6 different configurations (cruise, entry, parachute, powered descent, sky crane, and rover). In addition to the pyrotechnic devices, the software managed eight descent thrusters and eight landing engines.
Curiosity's software allows NASA engineers to adapt the vehicle to the situation at hand, a requirement when exploring Mars' unknown terrain. "We're constantly looking at how the rover is performing," Cichy said. "When we landed on Mars, we didn't know what the surface was going to be like."
The R10 software "really unlocks the remaining potential" of the vehicle, Cichy said. The upgrade's capabilities help control the Rover's robotic arm, drill, and the rest of the system the enables the rover to collect and analyze rock samples in its on-board laboratories. While R9 included the basic capability to move the rover, R10 allows it to drive long distances.
The MSL team is working on R11, which should be complete in the next three months. That version will bring improvements to how the rover maneuvers and uses its tools. "With R11, it will really be able to upgrade to some advanced driving," Cichy said.
Navid Dehghani, ground systems manager at the Jet Propulsion Laboratory, said data management is an ongoing challenge. The MSL team has been transmitting a lot of data via a message bus (similar to the message bus in an enterprise IT environment) and "we have to really worry about how much data we were sending through the bus and tailor our messages so we don't overwhelm the whole system," he said.
The project utilizes a new MySQL-based system to process the large amount of raw and complex data that comes in from Curiosity. Called the Mission Data Processing and Control System (MPCS), it interfaces to NASA's Deep Space Network and processes data from the Mars Reconnaissance Orbiter and other in-orbit systems. MPCS produces a tailored view of the data that is used by other flight operations teams, such as information on the power system.
The mission is slated to last one Mars year, the equivalent to two Earth years. "We're always going to keep learning," Cichy said. "It's an amazing piece of software."