Component-based refactoring of motion planning libraries

Most of the current state of the art motion planning software libraries are not easily interchangeable, because core concepts are represented with different data structures, application programming interfaces (API) are not compatible, or algorithms are encapsulated in modules organized in mutually exclusive abstraction hierarchies. These problems limit the possibility to reuse different libraries in the same application interchangeably and to compare their quality attributes (performance, completeness, etc.). An approach to overcome these shortcomings is refactoring, a technique that aims to restructure a set of existing software libraries without affecting their external behavior in order to harmonize their architecture, data structures, and APIs. This paper presents a component-based refactoring approach that has allowed the transition from motion planning libraries, taking the object-oriented framework CoPP as basis, to a component-based system. In particular we describe a four-step application of well-known architecture refactoring patterns that redistributes the responsibilities among the classes, harmonizes the common data structures and reduces the coupling degree. The obtained system represents a composition of reusable components that are easy to customize and offer different algorithms to resolve the same problem. In this way the user could quickly compile a new motion planning application by simply choosing which algorithm to use for each functionality.

[1]  J.-P. Laumond,et al.  Move3D: A generic platform for path planning , 2001, Proceedings of the 2001 IEEE International Symposium on Assembly and Task Planning (ISATP2001). Assembly and Disassembly in the Twenty-first Century. (Cat. No.01TH8560).

[2]  James J. Kuffner,et al.  OpenRAVE: A Planning Architecture for Autonomous Robotics , 2008 .

[3]  Kostas E. Bekris,et al.  OOPS for Motion Planning: An Online, Open-source, Programming System , 2007, Proceedings 2007 IEEE International Conference on Robotics and Automation.

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[6]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[7]  Lydia E. Kavraki,et al.  On the implementation of single-query sampling-based motion planners , 2010, 2010 IEEE International Conference on Robotics and Automation.

[8]  Steven M. LaValle,et al.  Planning algorithms , 2006 .

[9]  Michael A. Greenspan,et al.  MPK: An open extensible motion planning kernel , 2001, J. Field Robotics.

[10]  Morten Strandberg,et al.  Robot path planning : an object-oriented approach , 2004 .