How to avoid duplication of functions that appear in multiple plugins
Let's say I'm developing a couple of base_local_planner
plugins. Both of them will have a function that bounds the velocity commands such that they respect the robot's min/max velocity and acceleration bounds. How can I avoid duplicating the source code (and unit tests) of such a function in the two plugins / packages?
Continuing the example above, would it make sense to introduce an intermediate class, say MyLocalPlanner
which inherits from nav_core::BaseLocalPlanner
and then have the actual plugins inherit from this intermediate class? Another alternative might be multiple inheritance:
class SomeLocalPlannerPlugin : public nav_core::BaseLocalPlanner, public MyLocalPlanner
Would these play nicely with pluginlib
? Would I need to use the PLUGINLIB_EXPORT_CLASS
macro differently?
Other solutions to the original problem of avoiding code duplication are of course welcome.