Embedded systems software would be a large part of a robot brain’s software, carrying out the low level functions of controlling manipulators or processing sensory data. In fact, a design for a robot brain may include a network of specialized embedded systems processors. So sometimes I’ll depart from my primary line of enquiry, language, and talk about embedded systems software and projects for these lower level functions.
Most of my career, I’ve developed embedded systems software for telecommunications equipment, defense systems, and now network security. The management/user interface code for these systems is not always mission critical but the embedded software always is.
We don’t all write code with one shot at getting it right, like sending spacecraft to Mars, but embedded software errors can cost money and even cause personal injury or death. I’ve seen misguided attempts to apply Agile Methods to embedded software but they don’t support the level of quality and reliability required for mission critical systems.
The article Mars Code, in the February 2014 issue of Communications of the ACM describes the processes that JPL used for developing the software for the Curiosity Mars mission. NASA/JPL’s processes may be extreme for earth-bound systems but there are some good ideas here that could be applied to other mission-critical embedded systems software.