Plug-in Based Software Architecture for Robotics - Abishalini Sivaraman & Anthony Baker CppCon 2023

Learn how plug-in architecture enables modular code, customization, and maintainability in robotics. Explore the benefits, limitations, and best practices for implementing plug-in-based systems in ROS and Moovit projects.

Key takeaways
  • Use of plug-in architecture in robotics allows for modular code, reducing dependencies and making it easier to maintain and update systems.
  • Plug-ins are self-contained modules that can be loaded and unloaded at runtime, allowing for flexibility and customization.
  • To load a plug-in, you need to create a class loader instance, load the shared library, and retrieve the addresses of the functions in the shared library.
  • When creating a plug-in, you need to define the interface and implementation, and ensure that the interface is not mangled by the compiler.
  • Plug-in managers are responsible for loading and unloading plug-ins, finding symbols in the plug-ins, and invoking the right functions to execute.
  • Plug-ins can be tested individually and as part of the larger system, and can be used to implement different algorithms and functionality.
  • Some limitations of plug-in architecture include the need for standardized interfaces, potential for ABI mismatch, and limitations in testing.
  • ROS (Robot Operating System) uses plug-ins to implement plugin-based systems.
  • Moovit, a project that uses plug-ins, has used pluginlib to implement its plug-in architecture.
  • Within Moovit, plug-ins are used for motion planning, trajectory smoothing, and kinematics.
  • Plug-inlib is a library used in robotics to implement plug-in-based systems.
  • Creating a simple motion planner plug-in involves defining the interface and implementation, and loading the plug-in into the system.
  • The library name, shared library name, and suffix are important components of the plug-in architecture.
  • Unit tests and integration tests are important for testing plug-ins.
  • Plug-in architecture allows for flexible and customizable systems, making it a valuable tool in robotics.
  • To ensure ABI stability, plug-ins should be compiled with the same or compatible compiler as the core system.