Conferences and supporting programme
A Multi-Platform Modern C++ Framework for Safety-Critical Embedded Software
The choice of a programming language and its idioms have a critical impact on reliability, safety and efficiency of the embedded software under development. In the automotive and robotics domains the C programming language as well as model-driven tools are well established for safety-critical software. However, automated driving and innovative robotics applications are both examples for the emerging complexity of safety-critical software. Both domains contribute to the increasing popularity of modern approaches among the established ones to increase flexibility, such as Modern C++ with the ISO-standards C++11 and C++14. This programming language provides paradigms for holistic views on the system and embedded software under development. C++ facilitates time- and cost-effective development of high-qualitiy software for features such as communication protocols and control functions. Despite its popularity, using Modern C++ for safety-critical software leaves room for discussion, if and how it will be applicable in detail. This paper discusses experiences in applying Modern C++ as efficiently and as effectively as possible for developing safety-critical software. A multi-platform and simple-to-use framework for safety-critical software in Modern C++ is developed and applied to a concrete industrial application in the area of human-robot collaboration. On the one side, Modern C++ is used to realize the speed control of the collaborative robotic system, which includes a proximity sensor system that measures distances between the robot and humans. On the other side, safety mechanisms are realized with Modern C++ in order to monitor system entities and communication channels for failures. In case of real-time violations or failures, the safety-control software in Modern C++ must ensure safety-stops in order to prevent humans from hazards and resulting injuries. In concrete terms, this paper discusses in which way Modern C++ enhances usability, reliability and safety for the implementation of a bus-independent safety-communication protocol, which is used to provide message-based real-time monitoring, dual-channel utilities and actuation monitoring in a maintainable, extensible way. This safety framework heavily relies on promising features from C++11 and C++14. Compile-time checks, computations and transformations are used for the implementation of the communication protocol to boost reliability and prevent incorrect usage. The multi-paradigm of Modern C++ helps to reduce the overall complexity and makes it simple to transform mental models, safety and functional requirements directly into code. This work further shows how Modern C++ as one part of a toolchain interacts among other popular systems such as Robot Operating System or Embedded Linux and in which terms the programming language directly fits to service-oriented architectures, adaptive applications and the use of design-patterns for safety-critical software.
--- Date: 27.02.2018 Time: 4:30 PM - 5:00 PM Location: Conference Counter NCC Ost