ROS pluginlib 加载插件链接Cpp Class

ROS pluginlib 加载插件链接Cpp Class

一、简介

​ ROS中的插件(plugin)就是可以动态加载的扩展功能类,在ROS框架中,加载和卸载插件通过pluginlib功能包实现,开发者在使用插件的时候不需要考虑其链接位置,只需要直接注册到pluginlib中。

​ pluginlib是一个C++库,可以实现为一个ROS包动态的加载和卸载插件。这里的插件通常是一些功能类,且以运行时可动态加载的库(如共享对象,动态链接库)的形式存在。使用插件来扩展或者修改应用程序的功能非常方便,不用改动源码重新编译应用程序,通过插件的动态加载即可完成功能的扩展和修改。

二、 实现步骤

1. 创建插件基类,定义统一接口

​ 首先,定义插件的抽象类,采用虚函数定义统一接口。

2. 继承插件基类

​ 在基类的基础上继承,并且实现子类。

​ 对于每个插件,习惯上会定义一个插件描述文件,该描述文件格式为xml,其中包含必要的路径、类型信息等。

    <library path="libpath">
      <class type="libSubClassName" base_class_type="libClassName">
      <description>
          mask
      </description>
      </class>
    </library>

3. 注册插件

​ 对其插件子类进行标注。在实现的cpp文件后使用宏定义 PLUGINLIB_EXPORT_CLASS 对该子类进行标注。

4. 将插件加入ROS系统

​ 在package.xml文件中添加外部引用的tag块,使pluginlib能够找寻到插件的位置。

    <export>
      <polygon_interface_package plugin="${prefix}/插件xml文件名" />
    </export>

​ 同时,还需要在build和run依赖项中添加如下信息:

    <build_depend>polygon_interface_package</build_depend>
    <run_depend>polygon_interface_package</run_depend>

验证是否注册成功

使用rospack命令查询可用的插件

    rospack plugins --attrib=plugin packageName

返回所有packageName包中导入的插件.

后续

 喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rosen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值