Artificial intelligence, mechatronics, robotics—these are fields in demand in today’s world, thanks to the dreams of living luxurious lives, having automatic facilities all around and having to put in less manual effort. But one fact remains; although the process of developing such a solution has eased in comparison, complexity still stays intact.
In this article, we introduce a framework for developing component based robotic systems. To put it in a sentence, SmartSoft is an open source integrated model-driven development environment for robotics software. Built with a vision of creating a business ecosystem for robotics software, SmartSoft takes the service-oriented software component model and model-driven toolchain approach. The software is presently under Service Robotics Research Center of University of Applied Sciences Ulm, Germany, with the team headed by Prof. Dr Christian Schlegel.
What SmartSoft provides
The software aims at assisting the researcher, the robotics professional, the system integrator, the application domain expert and the end user, in realising their ideas. The package offers model-driven tools for component developers, system integrators and professional end users. The designer can make use of component selection guides, and automatic generation of component hulls for wrapping algorithms and ensuring system-level composability.
Further, the kit provides component repositories for navigation, vision, human-machine interface, task coordination, manipulation and a lot more that go into the simplest of robotic designs.
The SmartSoft approach
The factor that serves as a differentiator for SmartSoft is its approach towards robotics. Adopting a component based view, SmartSoft looks at each component model in terms of communication patterns, which include clearly-defined semantics for interfacing these components. While the component based approach gives the robotic engineer flexibility in achieving software complexity, the catch is in having a system that can assist putting together a complete setup and providing software architecture without enforcing a specific robot architecture. It is precisely this fact that SmartSoft stands for.
Quoting from SmartSoft website, “The basic idea is to provide a small set of communication patterns, which can transmit objects between components and then squeeze every component interaction into those predefined patterns. Components interact solely via those patterns.”
The entire process is segregated into components, communication patterns and objects, and services. Components are technically implemented as processes containing multiple threads and interacting via predefined communication patterns. Patterns define the communication mode, doing away with all communication and synchronisation issues, and acting like the master-slave protocol.
Content of the packet is the communication object that is always transmitted by value, to avoid intermittent inter-component communication while using other methods. Every time a packet is instantiated, a service is provided.
Sensorimotor systems. SmartSoft is built keeping in mind sensorimotor systems, but you can exploit the concept to suit any domain you choose. This tool looks at decoupling as the way of mastering the overall complexity of software of sensorimotor systems. You have templates for standardised communication patterns.
From the bottom-up. The main problem behind looking at things from a component perspective is the integration to form a whole. Many components might be manufactured concurrently and independently, and sometimes at different sites. How does one account for communication between these?
This is where the component interfaces come into the picture; these need to be powerful enough to decouple external behaviour from internal implementations, and this is what SmartSoft sets out to do. It allows you to focus on a single component, go into depth and perfect it, regardless of the internals of other components. You then simply compose a system out of these approved components.
The same is extended to components that are being reused, avoiding the need for designing or analysing from scratch. Internal state automation has at least three states representing neutral, alive and fatal states. Be it software or hardware, with lack of implementation standards at the former level, the bottom-up method turns advantageous.
The wiring pattern. The approach allows for dynamic wiring of components during run-time. Thus, loosely-coupled parts can easily be put together and adjusted according to the current context and environment, paving the way for designing distributed systems with ease. Control and data flows are configurable from outside a component.
Asynchronicity, simplicity. Decouple components to avoid passing on tight time dependencies and exploit concurrency to reduce latencies—these are the two mantras that are rigorously followed in any robotics application, the base of which is asynchronicity accessed without involving the framework user.
Usage allowances of a tool is what decides if a robotics engineer can work on his or her application without being dependent on the software counterpart. SmartSoft takes this into consideration, addressing challenging topics like location transparency of components, synchronisation parameters or thread safety.