Currently, there are no clear programming paradigms programming robotic systems, according to some authors the programming techniques which are common use today are not adequate to seal with the complexity associated with these systems. One aspect where the complexity clearly come up is integration of software. It is necessary to integrate a wide variety of software in a given normally; software dealing with hardware (such as, effectors, sensors, and others hardware), third party software, software which is not very portable because it is specific to a particular machine or operating system (or both), software done in distinct programming languages. Traditional software integration has been an underestimated problem in robotics, and it is frequently a question to which it is necessary to invest much more effort than considered initially.
Integration of software system is a task demanding so many resources that only a few research groups can afford it. It seems evident that fostering cooperation and code reuse between different research groups would be the more convenient solution, but in a practice, it has been very seldom to see research groups importing systems or architectures that has been developed by others.
Recycling and reuse of code across laboratories is difficult and recently not very common. It is clear that robotics need to develop an experimental methodology that promotes the integration and reproduction of results and software between different research groups. The approaches originated by distinct groups have not been designed to be integrated together, and the software usually for control robotic system is not easy to use software. Its use and learning is not trivial, and getting to a level of expertise high enough to have productive results takes long time. All drives frequently to develop home made software the specific necessities of each group. Other authors have made similar considerations identifying the software architectures building as the way the robotics community has chosen mainly to address the problem.