A lot of Free Software/Open Source Software (FOSS) projects exist in the domains of robotics and automation (almost none in the domain of manufacturing), but there is too much fragmentation and an almost complete lack of interoperability. This has serious negative effects on the rate of innovation in academic research as well as in industrial product development. A change in mentality of the developer communities is needed, in order to improve the situation drastically: increased modularity with standardized interfaces, improved code reuse, integration with Eclipse, etc.
Therefore, all stakeholders (so not only the developers!) must start talking to each other. Below are two documents that I wrote to stimulate those discussions. The RoSta (Robot Standards) project can provide a lot of logistic support during this process.
Design of (Robotics) Software Standards
is a document that explains my vision about how
to standardize
software for robotics, automation and manufacturing.
This paper presents a strategy to design standards for software
libraries in robotic systems (or rather, in large-scale engineering
systems in general). The strategy involves the separation between
objects (“functionality”) and components (“architecture”
and “activity”), and the introduction of four complementary levels
in software standardization,
in order to develop standards that are consistent and stable
enough to survive the never-ending evolution in the domain of robotics.
The major motivation behind the standards-making strategy is
decoupling:
(i) to divide the domain to be standardised into a family of complementary
sub-standards (either hierarchically ordered, or unconnected) that are each
as small as naturally possible, and that can be combined in
various ways according to the needs of specific application domains; and
(ii) to separate the abstract programming interface of each library from
its concrete implementation(s).
Common Robotics, Automation and
Manufacturing Operating System (CRAMOS)
is a document that explains my vision about how to create a
world-wide, large-scale open source software “operating
system” for robotics, automation and manufacturing.
This document explains a vision about (i) the goals of an ecosystem of
independent but interoperable software projects (available under Free
Software/Open Source (FOSS) licences) to serve as an operating system or a
middleware for all software aspects in robotics, automation and
manufacturing; (ii) what could be the components of such a Common Robotics
and Manufacturing Operating System (CRAMOS); and (iii) a strategy for
achieving the stated goals. Many of the goals can be reached by rather
straightforward technical refactoring of existing projects, in combination
with the use of existing general purpose open software standards, and with
the definition of new, CRAMOS-specific open standards. However, the major
obstacle towards these goals is not technical, but social: the non-neglible
reluctance of of FOSS projects to accept standards and to do refactoring
for the sole purposes of improving interoperability with other projects
without direct benefits to the own project.
Here is a list of three concrete software topics that FOSS projects should (i) try to standardize as soon as possible, and (ii) decide on common strategic directions with respect to practical aspects, such as support tools, programming languages, policies, etc.:
Robotics object standardization: FOSS project will never be able to become a de facto industry standard as long as reference frames, kinematic and dynamic models, world map representations, planners, device drivers, controllers, etc. are not transparantly exchangeable between the projects' software libraries.
Eclipse integration: Eclipse is the only FOSS IDE tool that will have critical mass support cover the whole domain of robotics and automation software. All projects should try to make their functionalities available from within Eclipse, and to use Eclipse-supported building tools.
2D/3D data visualisation and processing: all projects need flexible plotting of measurement data, efficient storage in files, 3D visualisation, etc.