Introducing FINROC: A Convenient Real-time Framework for Robotics based on a Systematic Design Approach

In this paper, we discuss critical aspects in the design of general-purpose software frameworks for the robotics domain, and present FINROC – our attempt to deal with the identified non-functional requirements in the best possible way. Numerous publications on this subject were taken into consideration. Furthermore, we stress the importance of consistently separating framework-independent from framework-dependent code. With maximum (intra-process) communication efficiency in focus, FINROC features a lock-free, zero-copying implementation including support for queues and various communication patterns. Decoupling being a paradigm for the framework internals, it has a minimal core extended via plugins. There is optional graphical tooling that supports to instantiate, connect, and remove components at application runtime. As we plan to continue research on huge behavior networks, FINROC is designed to cope with thousands of components and hundreds of thousands of ports.

[1]  Peter Kazanzides,et al.  A component-based architecture for flexible integration of robotic systems , 2010, 2010 IEEE/RSJ International Conference on Intelligent Robots and Systems.

[2]  Alexei Makarenko,et al.  Orca: A Component Model and Repository , 2005, PPSDR@ICRA.

[3]  Davide Brugali Software Engineering for Experimental Robotics (Springer Tracts in Advanced Robotics) , 2007 .

[4]  Erwin Prassler,et al.  Software Engineering for Robotics , 2009 .

[5]  Stefan Holzer,et al.  Towards autonomous robotic butlers: Lessons learned with the PR2 , 2011, 2011 IEEE International Conference on Robotics and Automation.

[6]  Luiz Chaimowicz,et al.  ROCI: Strongly Typed Component Interfaces for Multi-robot Teams Programming , 2005, PPSDR@ICRA.

[7]  Bruce A. MacDonald,et al.  Software Environments for Robot Programming , 2005, PPSDR@ICRA.

[8]  Takashi Suehiro,et al.  A Software Platform for Component Based RT-System Development: OpenRTM-Aist , 2008, SIMPAR.

[9]  Anthony Cowley,et al.  Stream-oriented robotics programming: The design of roshask , 2011, 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems.

[10]  Karsten Berns,et al.  Universal web interfaces for robot control frameworks , 2008, 2008 IEEE/RSJ International Conference on Intelligent Robots and Systems.

[11]  Shige Wang,et al.  Toward adaptation and reuse of advanced robotic software , 2011, 2011 IEEE International Conference on Robotics and Automation.

[12]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[13]  Patrizia Scandurra,et al.  Component-based robotic engineering (Part I) [Tutorial] , 2009, IEEE Robotics & Automation Magazine.

[14]  Richard T. Vaughan,et al.  The Player/Stage Project: Tools for Multi-Robot and Distributed Sensor Systems , 2003 .

[15]  Richard T. Vaughan,et al.  On device abstractions for portable, reusable robot code , 2003, Proceedings 2003 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2003) (Cat. No.03CH37453).

[16]  Karsten Berns,et al.  Development of complex robotic systems using the behavior-based control architecture iB2C , 2010, Robotics Auton. Syst..

[17]  Richard T. Vaughan,et al.  Reusable Robot Software and the Player/Stage Project , 2005, PPSDR@ICRA.

[18]  Issa A. D. Nesnas,et al.  The CLARAty Project: Coping with Hardware and Software Heterogeneity , 2005, PPSDR@ICRA.

[19]  Morgan Quigley,et al.  ROS: an open-source Robot Operating System , 2009, ICRA 2009.

[20]  Michi Henning,et al.  A new approach to object-oriented middleware , 2004, IEEE Internet Computing.

[21]  Scott Meyers,et al.  Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) , 1991 .

[22]  Jean-Christophe Baillie,et al.  Design Principles for a Universal Robotic Software Platform and Application to URBI , 2007 .

[23]  Herman Bruyninckx,et al.  OROCOS RTT-Lua: an Execution Environment for building Real-time Robotic Domain Specific Languages , 2010 .

[24]  Gerhard K. Kraetzschmar,et al.  Analysis of software connectors in robotics , 2011, 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems.