CppCon 2014: Mark Maimone “C++ on Mars: Incorporating C++ into Mars Rover Flight Software”

Why are they using images instead of lasers and sensors to map the terrain? Do images really provide that much information that it counters the heavy processing required to get that information? Simple scanning laser would require orders of magnitude less processing and could be achieved at low operating frequencies and with low memory.

Or perhaps use magnetism of Mars to detect the change in position. But I am sure they considered these. They must have. Using images just sounds so overkill and naive approach to me. “We as human navigate with images so robot must also navigate with images.” which of course is fallacy.

Mars lacks a detectable magnetic field of global scale, but boasts a rich spectrum of magnetic fields at smaller spatial scales attributed to the spatial variation of remanent magnetism in the crust. On average the Mars crust is 10 times more intensely magnetized than that of the Earth.

Which would mean that it might be suitable to be used as means for navigation. But I am only a layman and have no expertise on Mars magnetism so this is just guess work pretty much.

Also with laser you could scan the whole area continuously where as images come at one at the time. Sensors give you exact information where as in case of images you need to extract that information.


Possibly the best starting point towards RTOS (On AVR)



femtoos_core.c only 7500 lines and extremely well documented code. Should be a good read.

The OS takes between 10 and 20 bytes of ram, tasks can take as little as 6 bytes of ram, but approximately 20 to 40 bytes is more realistic for real applications.

Remarkably small. I might look into using this in my next version of system I am building but maybe not for the current one because it might require writing some libraries of my own, which takes time. Or perhaps I could write or port libraries from Arduino to FemtoOS. Libraries which I need, such as 1-Wire and I2C. Although I believe someone may have already done it since this operating system looks rather nice quality.

Edit: Didn’t quite like the code after all so this won’t be my choice of operating system.

Ideally I might want to look for something that works with both AVR and ARM. Also NodeMCU would be interesting to get under same OS but it’s so new I don’t believe it’s going to happen.



Very interesting because is based on FreeRTOS. But does not have support for Atmel Atmega2560. And the fact it doesn’t have proper homepage / website does not give the best possible impression and lets me believe it’s more of a “once done, finished” type of an OS.


Large support for different architectures from AVR to ARM, LTC, ST and more:


Has a lot of drivers available randing from Intel e1000 1Gbit network card to small ENC28J60. Also filesystems, including NFS and FAT.