The concept of robot software is very important in developing robots. This software is different from normal software because of the real time requirement. Besides the structure of the software could be different based on the structure and requirement of the robot.
There are three basic concept that have to be understood:
Every function in the robot can be split into modules rather than having them all clumped up in a software. Advantage of doing this is because it is easier to troubleshoot and easier for development. It is better for code understanding.
Even with modules, there should be some hierarchy to determine the level of the module. Either it be input output module, filtering module, utility modules, or application modules. With this, it is better when defining a module and to classify them.
Even with module or without, connecting the component is not easy. Communication from one module to another should be put in a defined and standard manner. This is important due to the complexity when number of modules are increasing.
This is a presentation I have made to compile the work my colleague and I have done for a year. http://www.mediafire.com/?800hk4cu44qrsxq
Enough of say...
There is a blog that I would recommend. A blog by Professor Adrian Boeing. http://adrianboeing.blogspot.com/