You are here: Home / RTLWS 1999-2017 / RTLWS Submitted Papers / 
2024-11-01 - 01:12

Real Time Linux Workshops

1999 - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 - 2014 - 2015

15th Real Time Linux Workshop, October 28 to 31, 2013 at the Dipartimento Tecnologie Innovative, Scuola Universitaria Professionale della Svizzera Italiana in Lugano-Manno, Switzerland

Announcement - Call for participation (ASCII)Hotels - Directions - AgendaPaper Abstracts - Presentations - Registration - Abstract Submission - Sponsors - Gallery

microblx: a reflective, real-time safe, embedded function block framework

Markus Klotzbuecher, KU Leuven, Belgium
Herman Bruyninckx, KU Leuven, Belgium

Robotics has long adopted the component (or function block) oriented approach to build systems from reusable software entities, as can be seen from the large number of software frameworks available (ROS, Orocos RTT, OpenRTM, GenoM.) Advantages commonly attributed to this approach are: reusability of function blocks, ability for run-time introspection and separation of configuration from algorithms.

Nevertheless, none of the these frameworks are particularly well suited for building highly embedded real-time systems. Among the reasons for this are: non real-time design, heavy memory footprint through templated type systems and large number of external dependencies.

This paper describes the microblx framework, a lightweight, open-source function block framework developed especially for building reflective, real-time safe, embedded robot control systems. The goal of microblx is to realize a large subset of the features provided by today's frameworks in a lightweight way using a minimal number of primitives and avoiding unnecessary dependencies, templating and code generation. The design of microblx is strongly inspired by Linux kernel modules; microblx modules and block operations closely resemble Linux modules and char driver ops, respectively.

microblx systems are built from four primitives: computation and interaction blocks, ports and configuration. Computational blocks encapsulate algorithmic functionality and read or write data via ports. Interaction blocks connect ports of computational blocks and implement communication, synchronization, locking etc. Each blocks defines required configuration values, that must be provided upon instantiation of a block.

Reflective capabilities such as data-logging and component introspection are realized by leveraging the dynamic foreign function interface (ffi) of the luajit flavor of the Lua language. C struct definitions are embedded within microblx modules and can be dynamically loaded into luajit's ffi, where they allow to introspect and transform the C struct data communicated among blocks. This way, code generation can be entirely avoided.

To facilitate development, an embedded web-server function block is provided that exports system information, block life-cycle FSM states etc. via a web-interface, and permits dynamically interacting with the system.

In spite of being developed for robotics systems, both software and ideas should be equally applicable to embedded automation or machine tool systems.

Although the microblx framework is still under development, it is clear that the goals of achieving a lightweight, real-time safe framework with reflective and introspective capabilities have been achieved. First microblx based motion control systems are under development. Future work will focus on performance optimization and integration LTTng support. All source code will be released prior to the workshop.