What exactly is a robot?
The “Robot” article in the Wikipedia starts with the following sentence: “A robot is a machine—especially one programmable by a computer— capable of carrying out a complex series of actions automatically“. One of the key elements of a robot is its software. The robot will diligently follow instructions one by one, and software crafts and provides these instructions. In order to know what happens in the surrounding environment, and be able to respond, software accesses information provided by sensors.
Hardware, software and sensors are all necessary components in a modern robotics system, especially one with practical applications.
Sharework, a key project for enabling fenceless human-robot collaboration
When the latest advances in software are combined with state-of-the-art hardware robots and sensors, a wide spectrum of potential applications in manufacturing emerge. Sharework project combines some of the latest hardware with a set of software modules that apply some of the latest developments in Machine Learning, Computer Vision, Augmented Reality, Ontology and Reasoning, Real-time control, Optimization, Motion Planning or Task Planning. The resulting applications enable safe, fenceless human–robot collaboration that consider the actions of the humans in real time. In this way the Sharework system provides value to the manufacturers and also improves the working conditions and ergonomics of humans.
Sharework software modules
The Sharework software system includes 14 different software modules developed by 9 different partners of the project. Each project partner is a company or institution and has a different expertise and focus. The modules can be categorised in the following functional groups:
- Workspace Cognition & Knowledge Base
- Task and motion planning
- HR Interfaces for effective collaboration
- Human Safety
- Data Security
- Training and Assistance
Each module offers specialised functionality and integrating the different modules together into an interoperable system requires an understanding of each module functionality and how it needs to interact with other modules.
The software system is organised in a distributed, modular architecture which combines elements of SoA (Service oriented Architecture) and EDA (Event Driven Architecture). A combination of both paradigms is useful because some system operations can be better modelled using request-response type operations, while others are better modelled as a stream of fire-and-forget events that are processed asynchronously. For instance, requesting ontology information from the knowledge base is modelled following a request-response approach, while processing information that is continuously provided (pushed) by sensors follows an event driven approach.
The software interfaces of each module have been designed using a design by contract (DbC) approach, with the API evolution in mind. The choice of DbC approach, among others, aims to facilitate collaboration between different developer teams, as each module has well defined interfaces. Although always well defined, there is an anticipation of the API evolution, which offers the flexibility required in a fast-paced research project.
In order to enhance interoperability and module re-usability a Domain Driven Design (DDD) approach is followed to create and evolve a ubiquitous set of interfaces, that also make use of standard ROS interfaces when possible. Some standard ROS interfaces are used directly (especially ROS Actions and Services), while some standard ROS messages have been used to compose higher level domain data models for the Sharework interfaces. The modules of Sharework are released and distributed in Docker images. The usage of Docker in Sharework simplifies and accelerates configurations and deployment and also enhances security. The benefits of using Docker add up, since each module needs to be updated several times for different purposes.
Implementation process
The Sharework software system is planned to be installed in four pilot cases in different locations. Additional installations will be required for integration, testing and experimentation. Each module is developed and released in versions of varying maturity and features, that have to be integration-tested. When the Sharework system will be deployed in the pilot cases, updates will be required to fine-tune the software and address potential bugs. This means that a lot of different versions of each module will need to be packaged, distributed, uninstalled and re-installed during the duration of the project. Using docker images allows the automation and therefore acceleration of many of the tasks required.
Although helpful, containerising applications are not a panacea and do include some trade-offs. Software in a robotics system runs not only in computers but also in different kind of hardware such as FPGAs or Augmented Reality glasses where Docker is not an option. In this case, software runs directly on the hardware and containers are used when possible. Also, while containers have a smaller overhead than virtual machines, it needs to be taken into consideration when performance is critical.

Senior Software Engineer – INTRASOFT International
Architecture, technical Lead, design, integration and development of distributed software systems. Experienced in applications for Robotics, Manufacturing, IoT, Simulation, Telecommunications and the Web. Diligently writing clean code since 2008.