Dates and Events: |
OSADL Articles:
2023-11-12 12:00
Open Source License Obligations Checklists even better nowImport the checklists to other tools, create context diffs and merged lists
2022-07-11 12:00
Call for participation in phase #4 of Open Source OPC UA open62541 support projectLetter of Intent fulfills wish list from recent survey
2022-01-13 12:00
Phase #3 of OSADL project on OPC UA PubSub over TSN successfully completedAnother important milestone on the way to interoperable Open Source real-time Ethernet has been reached
2021-02-09 12:00
Open Source OPC UA PubSub over TSN project phase #3 launchedLetter of Intent with call for participation is now available |
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 - Agenda - Paper Abstracts - Presentations - Registration - Abstract Submission - Sponsors - Gallery
microblx: a reflective, real-time safe, embedded function block framework
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.