By Kevin Juhasz for Hack Reactor
The first time a computer was used in a spaceship, it did not go well. The spacecraft’s astrogation computer failed on the return to Earth. As luck would have it, the crew member assigned to the astrogation system was a math whiz that was able to do the computations in his head and save the day. Fortunately, all of this only happened in the 1939 short story “Misfit” by Robert Heinlein.
Today, there isn’t quite the ease of use as the ship’s computer in Star Trek or the terror of Hal9000 in 2001: A Space Odyssey, but the role of computers and their software is no less amazing.
In this first look back, we explore missions beyond our planet’s atmosphere, to the moon and even to Mars, and the role software played in them.
Launched October 11, 1958 - unmanned
Destination: Moon - Unsuccessful
Less than 10 months after the successful launch of the Explorer 1 satellite, America began its exploration of the universe beyond our planet. Pioneer 1 was the first launch under the National Aeronautics and Space Administration. The Pioneer program, along with the Ranger, Surveyor, and Mariner programs, used fixed sequencers to perform tasks in flight.
Software development was very unstructured in the early days of NASA. Many of the agency’s managers didn’t want to deal with software engineers and left them to their own devices. As a result, much of the work they did was left undocumented. Most of the software development in the 50s and 60s wasn’t done with the language in mind because even those were new.
“Most of the early space computers were programmed with assembly language which was specific to each computer,” said Stewart Bailey, Exhibits Manager at the Wings Over the Rockies museum in Colorado.
Launched July 22, 1962 – unmanned
Destination: Venus - Unsuccessful
While NASA’s manned missions have met with many successes and relatively few failures, the unmanned programs have headed in the opposite direction. A lot of the spacecraft launched in the earlier programs never made it off the ground, missed their mark, or crashed into their destination. Yes, it was prevalent in the early days of the space program, mostly because the systems weren’t advanced and there was a lot of trial and error in the beginning. That wasn’t the case with Mariner 1, which launched but was destroyed after a missing hyphen in the programming sent the craft in the wrong direction. Fearful that the probe would crash on Earth in an inhabited area, the vehicle was sent a self-destruct command.
Destination: Moon – some success
This was a series of probes sent to the moon with the intention of crashing into the satellite. This program was the first one where the craft had onboard computers. There were nine Rangers launched and six of them were failures, but Ranger 4 holds the distinction of being the first U.S. spacecraft to reach a celestial body.
Launched March 23, 1965 – manned
Destination: Earth orbit - successful
NASA’s Gemini program was designed to support the Apollo program by developing techniques used for the moon missions. Gemini 3 was the first manned vehicle to have an onboard computer. The Gemini Guidance Computer weighed more than 59 pounds and was designed to handle maneuvers of the Gemini craft. When designing the software for the Gemini missions, the software engineers originally planned to develop a system where everything for the mission was done in a single load. However, they switched to a modular system after realizing that a lot of the programming was repeated from mission to mission. This approach also helped deal with the limited memory of the system. As the missions became more complex, software engineers were able to squeeze modules for a particular mission into any available space.
On a side note, Gemini 3 was also the first spacecraft to have an onboard corned beef sandwich. Gus Grissom and John Young were both able to sneak in a few bites before putting the sandwich away. They were reprimanded by NASA for risking bread crumbs inside the module.
Mariner 6/Mariner 7
Launched February February 25, 1969/March 27, 1969 - unmanned
Destination: Mars – both successful
The first mission where NASA began using programmable sequencers in its unmanned vehicles. The central computers and sequencers on each weighed in 26 pounds and had enough memory to hold 128 words. The advantage was the ability to reprogram the sequencers. Once the spacecraft performed one task, it was replaced with another task. Both craft received a total of 1,893 commands during their missions.
Viking 1/Viking 2
Launched August 20, 1975/September 9, 1975 – unmanned
Destination: Mars – successful
The Jet Propulsion Lab used the Viking missions to move beyond the programmable sequencers and used dual-redundant computers. The Command Computer Subsystem was placed on the Orbiter and the Guidance, Control, and Sequencing Computer was on the lander. JPL used design documents for software development and engineers were expected to follow them when designing software for both computers.
Voyager 1/Voyager 2
Launched September 5, 1977/August 20, 1977 - unmanned
Destination: Jupiter, Saturn, Uranus, Neptune - successful
The Voyager probes are unquestionably NASA’s biggest successes in unmanned space exploration. Launched 43 years ago, both spacecraft are still providing data to this day. Voyager 1 is now more than 14 billion miles from Earth and has traveled further than any man-made object is history. Assuming they don’t collide with anything else, the craft are expected to survive for 1 sextillion (1,000,000,000,000,000,000,000) years before encountering another star.
The Voyager probes are considered an early great software engineering achievement since much of the hardware was about the same as the systems on Vikings. Software engineers were able to refine all the programming they did previously and design a system that is still functioning and providing data almost a half-century later.
1969-1972 - manned
Destination: Moon - successful
The Golden Age of NASA was the agency’s Apollo program. After years of losing to the USSR in the space race, NASA had a program that would place it firmly on the top of space exploration.
NASA worked with MIT to help develop software for the various systems on the Apollo spacecrafts. NASA had abandoned its hands-off approach toward software engineers before the Apollo missions and they took that a step further. After a problem-filled start, software development was well-documented and changes were forbidden without permission from NASA. Software development was difficult since both NASA and MIT were writing programs without much in the way of experience and they were hampered by a lack of memory to make all the systems run.
One thing that’s always important to remember with any of the space programs in our history is that they performed some amazing feats without nearly the amount of computing power that is available now. The Apollo missions were no exception.
“These machines were not very powerful by today’s standards…,” Bailey said. “…as I once heard, the Furby had more computing power (80K) than the Apollo Lunar Module that took astronauts down to the surface of the Moon.”
Space Shuttle Program
1981-2011 - successful
Destination: Earth orbit – successful
While the Voyager is NASA’s most successful unmanned program, the Space Shuttle program is the most successful manned program. NASA developed six vehicles that operated for three decades. The shuttles have been crucial to space exploration since they launched with missions to Skylab, Mir, the International Space Station, and transport and launch of numerous satellites, probes, and telescopes.
It was also during the shuttle program that software development began an evolution that has yet to stop. As a result, the space shuttles have developed a Frankenstein system of computers and software.
“Many of the Shuttle’s systems were designed in the late-1970s for a spacecraft that flew from 1981 to 2011,” Bailey explained. “A lot changed over those 30 years, but in many cases the computers and the software that ran them could not be replaced, just because of the design of the systems that they operated. The Shuttle orbiters did receive numerous upgrades during their lifetimes, but when Atlantis flew its last mission in 2011, there were still some computer systems that were on board that were designed in the late 70s.”
Mars Climate Orbiter/Mars Polar Lander
Launched December 11, 1998/January 3, 1999 - unmanned
Destination: Mars – unsuccessful
Another dual craft program, but this one saw the loss of both due to software errors. The Orbiter dropped into the atmosphere of Mars and disintegrated after the ground-based computer sent thrust instructions in Imperial units and the on-board computer was set for metric units. The altitude was too low for the craft to survive. A few months later, the Lander was just 130 feet from landing when the software interpreted a shudder in one of the legs of the craft as contact with the surface and shut down the engines. In defense of the software, it did exactly what it was designed to do. It was the inability to tell a shudder from a touchdown that caused the lander to meet its doom on the surface of Mars.
Mars Rover Program
1971-Present – unmanned
Destination: Mars – successful
The Mars rover program is another example of great success for the agency. This program is a far cry from what was done in the early days of exploration. Mariner 6 and 7 had computers that could only handle 128 words at a time. The rovers being sent to Mars today have multiple systems with millions of lines of code.