When The Sojourner Mars Rover Nearly Ran LISP

During the late 1980s NASA’s Jet Propulsion Laboratory (JPL) was busy developing the first ever wheeled robot that would roam the surface of Mars. Due to the long round-trip times of any signals between Mars and Earth, development of the firmware that would control the rover was a major point, with the two teams occupied with the task each picking different levels of autonomy for the rover. In a retrospective, [Ron Garrett] who worked at JPL on the ‘more autonomy’ team describes his recollections.

Whereas [Ron]’s team focused on creating a rover that could be provided with high-level instructions which the sophisticated LISP-based firmware would use as guidelines to navigate and operate by, the other team pursued a more limited autonomy approach whereby a human driver would use explicitly plan out the route which the rover would follow before awaiting new instructions.

Perhaps unsurprisingly, the system requirements for running LISP and the additional uncertainties and complexities with the autonomous approach, as well as testing and validating the firmware, resulted in the Sojourner Mars rover featuring the latter approach, with straightforward C-based firmware. Most of Sojourner’s autonomy was limited to a home return function if communication with the lander was lost, which limited both its range and operations during its 85-day extended mission.

As [Ron] covers with examples from later missions, one advantage of LISP is that it allows you to send instructions which can be interpreted (e.g. to debug the system) without having to program in such functionality explicitly. With later Mars rover missions much more of this autonomy that [Ron]’s team pioneered was implemented, although C remained the language of choice for these later rovers.

Heading image: Ron Garrett standing in front of the Robbie prototype. Rocky III can be see in the lower left, and above him are Rajiv Desai and Robert Ivlev, two other members of the team. (Credit: Ron Garret)

12 thoughts on “When The Sojourner Mars Rover Nearly Ran LISP

    1. You mean C? I agree. Lisp is a compiled language fully equivalent to lambda calculus. Some implementations include both online compilation and an interpreter (which may yield additional debugging information) but there are compiler-only implementations.

      1. Late 80s?

        I’m surprised LISP was even considered.
        Would expect it to be a cage fight between ADA and C.

        By the late 80s LISP was relegated to AutoCAD and the torture dungeons of CS departments that came from math. CS from Engineering never used it and CS from business still hasn’t heard of it.

        1. Sweet Jesus, yes. Whenever LISP-ish deployments come up here, I’m reminded of the two gents formerly at the AMOS site on Maui who implemented some telescope control software in Scheme… and then left for greener pastures. I cared because it was dumped in my lap, after less than a week of part-time brain dumps. In a subsequent engineering review – with one of these guys on the line from Albuquerque – I criticized whoever approved the implemention, pointing out that c. 2012 virtually nobody had more than a cursory exposure to LISP-like languages, and this was going to be a maintenance nightmare.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.