MARS! Our lovely neighbour.  Do you want to go there? One day we might be there, don’t worry, Elon’s here with us.

Scientists sent many rovers, landers and orbiters to mars. One among them is Curiosity. Curiosity is the largest and most capable rover ever sent to Mars. It launched November 26, 2011 and landed on Mars at 10:32 p.m. PDT on Aug. 5, 2012 (1:32 a.m. EDT on Aug. 6, 2012). It is one of the most sophisticated machine which was built by humans and sent to mars. You might have surface information about curiosity; here we’ll get into the details of how curiosity actually works.

MSL- MARS science lab /CURIOSITY
Curiosity is a completely autonomous vehicle.   The radio signal from earth to mars takes about 10 to 40 minutes depending on the position of Earth and Mars. The delay would be huge if all the instructions were sent from earth and hence it was built autonomous. The power source of curiosity is Atomic. An Atomic power source Multi-Mission Radioisotope Thermoelectric Generator (MMRTG) and is completely independent of solar power. The top speed of curiosity is 100 meters/hr. There is a high powered laser present on curiosity which it uses to zap stones where are upto 7 meters away and uses a spectrometer to analyse them.  A Sol is a Martian day; 1 SOL=24 hrs 40 mins.  Curiosity exceeded the original mission requirement vastly(its initial mission was till 2014).  All of the configurations of curiosity are controlled by a single on-board computer. From Travel to landing and exploration.

Hardware of curiosity
Processor- BAE RAD750; it is a radiation hardened version of IBM PowerPC 750. Can be clocked up to 200MHZ. On Curiosity, this is clocked at 133 MHz.
The board on curiosity has 256 KB of EEPROM, 256MB of RAM and 2GB of flash storage. 
The entire configuration is present 2 times on curiosity, like two computers with same configuration.  We can refer to those computers as ‘A’ side computer and ‘B’ side computer. Both of them are independent. When one of the computers fails, the other one takes control.  There are few components which are present only on one side of the computer example: Navigational cameras. 
Everything present on curiosity is radiation hardened.

Curiosity uses the right side board

                Silicon on Sapphire.
                Static RAM instead of DRAM
                Chips shielded by depleted Boron
                Package shielded
                Error detection using parity bits and Scrubber Circuit
                Watchdog Timers
                Redundant Elements that vote on correct results

Software of curiosity
On Curiosity, they use Vxworks 6.7 a simple real time operating system. Many industries like SpaceX, NASA, and Robotics industries use this OS.
The system on curiosity uses Embedded C++ (no Garbage collection, no on-the fly memory allocation), GCC 4.1.2

Not all the features of Embedded C++ are used. NASA limited their code to “Embedded C++” constructs, such as:
                Exceptions: NONE
                Templates: NONE
                IOSTREAM: NONE
                Multiple inheritance: NONE
                Operator Overloading: Almost none (Only “new” and “delete”)
                Dynamic Allocation: Guarantee no system heap corruption using a dedicated memory pool and placement New.

The memory is overwritten by a custom memory allocator which JPL wrote for VxWorks, whose features involve
              * Graceful access to defined memory pools- which Is very important for out of memory conditions.
              * Supports multiple pools in different parts of the ram- By this it is easy to separate multi processes.
              * Provides Diagnostics- There’s a display which shows each new and delete operation and can also give a map of RAM on request and it can also downlink a map of RAM if needed.
              *  The same allocators are used for JPL UNIX machines.
              * There is no garbage collection –which is very expensive.

The main philosophy of the flight software is its component based architecture. Functions are grouped into components and the components exports and interface and identify the interfaces that are needed to a function i.e you can replace and/all components of the system as long as they share the same interface. Which also means you can work on one particular component without interfering with other parts of the system.

STARTUP BOOT OF vxWorks version 7

Components are organized in layers
                The Avionics Layer Functional Interfaces (primitive, atomic actions)-The lower level components deals with the hardware directly. There are abundant redundancy components i.e. when there is any problem with the lower level component, it can automatically switch to a redundancy component without letting the other levels know that the lower level are shifted. It’s like, it sends a signal to other levels that “something is wrong and I’m using backup but you don’t have to worry about what went wrong, I’ll deal with it.”
                Application layer Activity Interface (Build on top of the Avionics Layer)-This is the next layer which coordinates these atomic function into actions.
                Activity Layer (Activates that use the infrastructure)-This is the top layer which group these actions into activates like landing or analysing.

An interesting point here is the “LAND ON THE SURFACE” module does not exist on curiosity anymore; it was deleted as soon as the curiosity landed on the surface of mars.The most complex module on the system is the surface navigation module. This occupies 10% of the total code base.There are over 100 modules each with its own owner/master. For ex: The mobility and science modules do not need to worry about the spacecraft safety. Instead the mobility and science module should protect the spacecraft i.e. it should not perform any action which can damage the spacecraft or put curiosity’s safety at risk.

There are plenty of testing done on the software such as Unitest, static analysis, validation and verification, Test as fly and many more.Curiosity flight software can be remotely be updated from earth. This means, engineers can tweak the software as needed. In fact, one of the scientist of the curiosity mission said:
“We finished the EDL build on the way to Mars”-Dr Kathryn Weiss, JPL . This is the mobility module which helps the curiosity to move its wheels, arms and other stuff. This module was completed as curiosity was cruising towards mars. Once the rover landed, it safely updated the complete module (the update took a week).

How does the software update mechanism work?         
                First, the software is uploaded into the active computers ram and run there and if system behaves in a weird/ unexpected way, it can always reboot and recover from the flash storage.  Then series of tests are conducted to check if everything works well. If it does, the software is uploaded to the flash memory and then the system is booted from flash memory. After another series of test, the software is update to another part of the computer and the same process is continued.  
Rover day starts at 9 am in Maritain local time. Curiosity is in dream mode before it wakes up. In dream mode the FPGA’s keeps the rover warm and makes the curiosity ready to be woken up and then its gets directions from earth.  At 18:00 the curiosity uploads data back to earth. The MMRTG produces 110W of power, rover needs 45-70W even while sleep, 15W while awake and upto 500W while driving. It stays awake for about 6hrs each day.

The rover driving part uses a RSVP, Rover Sequence and Visualisation Program to plan drives. This has been updated over years.  In RSVP the terrain data is sent back to earth and the rover driver engineers on earth analyse the data and build a 3D terrain. After building, they analyse the data and send orders to curiosity on what to do next, like zap a rock, move over, climb etc.
There can be various orders, such as be Blind driving (point and go). This is the easiest mode of driving but dangerous while canvassing. The rover can be pointed to a direction and be commanded to just drive in that direction.

Visual Odometry is available on curiosity. Odometry means to see how far you’ve come by counting the wheel revolutions. Normal Odometry wouldn’t work on curiosity as the wheels may slip through dust and sand. So, it takes pictures of before and after and compares how far it came.

Autonav– In this mode, the rover fixes a target/location and goes to that point by avoiding difficult areas/the no-go area. Curiosity has stereo cameras and takes pictures with them. Before travelling to the target immediately, curiosity first maps the path. As there are stereo cameras available, it compares pictures on both of the cameras and avoids the regions which are blurry or unclear. It performs a series of maps considering the terrain, height, slope, roughness, big rocks, pop up rocks which might scratch it belly area and can damage the components and many more. By considering these factors and calculating the possibilities all of these , curiosity prepares few paths which allows it to travel. From the drawn paths, it calculates which is the easiest where least amount of danger  is present and chooses that path to move to its target. All of this is will be done by the on board computers and is performed with each and every step.

Curiosity has an arm mounted on it with a camera which takes large panorama, its visual conditions, wheels condition and more. The arm is usually photoshopped out.


In the rovers ‘A’ side computer, the rover suddenly can’t save the data anymore. Transmitting the data to the ground (earth) worked fine but it was unable to save the data. It also rebooted multiple times without any reason. Seeing this, the engineers quickly shifted to ‘B’ side of the computer.  While analysing what went wrong, engineers found that there was some fault with the flash on ‘A’ side of the computer. They disabled half of the flash on the ‘A’ side and sifted to ‘B’ side from then on.   Navigational cameras were separate for both ‘A’ and ‘B’. When the engineers shifted to ‘B’ side, they updated the software as the cameras would work with an offset and would give faulty data. Because of the Heat in Martian summers, the camera’s images were slightly warped. So, the team needed to write the code just by looking at the images on how to actually calculate out the warping.

Stereo Cameras

This (the singing) happens only ones. It has 8 birthdays since then.

After few SOLs, engineers noticed that the wheels of the rovers were wearing off pretty quickly than expected. After analysing, they found that the rover was forced to move over few rocks which were pointed out sharp and cemented to ground which resulted in punctures.  Later, they tested with the wheels which were on earth on various terrains and updated the wheel drivers and steered off the rovers away from the rocky region to a more sandy region.

SOL 2172 –Sept 15/2018
Curiosity was on ‘B’ side. It was unable to access a part of the memory where it stores data for later uploads. The rover was switched back to ‘A’ side and the engineers are trying to diagnose the problem on ‘B’ side.  

Its primary mission was until 2014. Back in 2018, scientist estimated that there were about 10 km left in the wheels before they completely wear off and another 10 years of MMRTG.


There are plenty of images taken by curiosity and large panoramas such as Central peak in gale crater. You can find the links to them below. At present, curiosity began its summer road trip in July this year.
Interesting Update:
Curiosity’s sister rover –MARS 2020.-very first rover to include a microphone, through which it is possible to listen to sounds of mars. Apart from this, there are many more interesting updates on MARS 2020.

Before stitch
After stitching the above image
Image of Mount Sharp. Complete panorama is available in teh references.

2)Panorama of curiosity – (must see)
3) Flight control software –
7) MARS 2020-

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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