Enhancing software module reusability using port plug-ins: An experiment with the iCub robot

Systematically developing high-quality reusable software components is a difficult task and requires careful design to find a proper balance between potential reuse, functionalities and ease of implementation. Extendibility is an important property for software which helps to reduce cost of development and significantly boosts its reusability. This work introduces an approach to enhance components reusability by extending their functionalities using plug-ins at the level of the connection points (ports). Application-dependent functionalities such as data monitoring and arbitration can be implemented using a conventional scripting language and plugged into the ports of components. The main advantage of our approach is that it avoids to introduce application-dependent modifications to existing components, thus reducing development time and fostering the development of simpler and therefore more reusable components. Another advantage of our approach is that it reduces communication and deployment overheads as extra functionalities can be added without introducing additional modules. The details of the plug-in system is described in the paper and its advantages for the development of robotics applications are demonstrated by developing a step-by-step example on the iCub humanoid robot.

[1]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[2]  Matthias Zenger,et al.  PROGRAMMING LANGUAGE ABSTRACTIONS FOR EXTENSIBLE SOFTWARE COMPONENTS , 2004 .

[3]  D. Brugali,et al.  Component-based Robotic Engineering Part I: Reusable building blocks , 2009 .

[4]  Seung-Ik Lee,et al.  OPRoS: A New Component‐Based Robot Software Platform , 2010 .

[5]  Ashish B. Shah,et al.  Common Object Request Broker Architecture (CORBA) , 2015 .

[6]  Kent Beck,et al.  Contributing to Eclipse - principles, patterns, and plug-ins , 2003, The Eclipse series.

[7]  Hanspeter Mössenböck,et al.  A Component Plug-In Architecture for the .NET Platform , 2006, JMLC.

[8]  Roberto Ierusalimschy,et al.  Lua—An Extensible Extension Language , 1996, Softw. Pract. Exp..

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

[10]  Azamat Shakhimardanov,et al.  Component-Based Robotics Engineering (Part II): Systems and Models , 2010 .

[11]  Giulio Sandini,et al.  The iCub humanoid robot: an open platform for research in embodied cognition , 2008, PerMIS.

[12]  Giorgio Metta,et al.  Towards long-lived robot genes , 2008, Robotics Auton. Syst..

[13]  Herman Bruyninckx,et al.  Open robot control software: the OROCOS project , 2001, Proceedings 2001 ICRA. IEEE International Conference on Robotics and Automation (Cat. No.01CH37164).

[14]  Mario Tokoro,et al.  Unification of active and passive objects in an object-oriented operating system , 1995, Proceedings of International Workshop on Object Orientation in Operating Systems.

[15]  G. Metta,et al.  Exploring affordances and tool use on the iCub , 2013, 2013 13th IEEE-RAS International Conference on Humanoid Robots (Humanoids).

[16]  Giorgio Metta,et al.  A port-arbitrated mechanism for behavior selection in humanoid robotics , 2013, 2013 16th International Conference on Advanced Robotics (ICAR).

[17]  Giorgio Metta,et al.  Data Flow Port's Monitoring and Arbitration , 2014 .

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