pluginlib是一个C++库,可以实现为一个ROS包动态的加载和卸载插件。这里的插件通常是一些功能类,且以运行时可动态加载的库(如共享对象,动态链接库)的形式存在。借助pluginlib的帮助,用户不必关心自己的应用程序该如何链接包含自己想使用的的class的库(如定义class的头文件在哪里,如何定义的),因为pluginlib会在你调用时自动打开你需要的插件库(Note:需要提前将插件库注册到pluginlib)。使用插件来扩展或者修改应用程序的功能非常方便,不用改动源码重新编译应用程序,通过插件的动态加载即可完成功能的扩展和修改。
思想:
个人理解:主要是调用时方便,cmakelists文件不需要指出相关的头文件与链接库。相反的注册时的准备工作较多。
1、写一个基类
2、写一个派生类
note:一般定义带参数的initialize初始化,而不是带参数的构造函数。
1、包含插件工具类,和定义的插件的类
#include <pluginlib/class_loader.h>
#include 自己定义的插件
2、调用
例如:
boost::shared_ptr<polygon_base::RegularPolygon> triangle = poly_loader.createInstance(“polygon_plugins::Triangle”);
triangle->initialize(10.0);
因篇幅问题不能全部显示,请点此查看更多更全内容