ROS pluginlib使用

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

官网文档 http://wiki.ros.org/pluginlib
参照官网文档学习使用pluginlib,目前找到的博客都是在一个包内使用pluginlib的,根据官网文档应该是在不同包之间使用的。
首先创建工作空间,然后创建三个包:polygon_interface_package,triangle_package,test_plugin,功能分别是插件接口定义,插件接口实现和插件调用。官网文档给出另一个rectangle_package插件实现,由于和triangle_package类似,本文只实现一个。
1. 创建工作空间

~$ mkdir -p catkin_ws_plugins/src
~$ cd catkin_ws_plugins/src
~/catkin_ws_plugins/src$ catkin_init_workspace

2. 创建polygon_interface_package包,添加polygon.h文件,修改CMakeList.txt文件。

~/catkin_ws_plugins/src$ catkin_create_pkg polygon_interface_package roscpp

添加polygon.h文件后的目录结构

~/catkin_ws_plugins/src/polygon_interface_package$ tree.
├── CMakeLists.txt
├── include
│   └── polygon_interface_package
│       └── polygon.h
├── package.xml
└── src

polygon.h文件

#ifndef POLYGON_INTERFACE_PACKAGE_POLYGON_H
#define POLYGON_INTERFACE_PACKAGE_POLYGON_H
namespace polygon_namespace
{
class Polygon
{
public:
        Polygon(){};
        virtual ~Polygon(){};
        virtual const char*  print() = 0;
};
}
#endif

CMakeList.txt修改的地方:去掉catkin_package中第一行的注释

ROS系列:第四章(三) 一寸欢喜 阅读详情

相关推荐

ROSpluginlib学习总结一

在开发中需要使用到插件,因此学习了下pluginlib的一些使用,学习的还不够透彻,先记录一下这几天的学习结果。关于ROSpluginlib使用主要参考的是《》与《》这两篇文章。第一篇中讲述了一个示例,第二篇是ROS官方中对于pluginlib使用的一些解释的翻译。

YiYeZhiNian的博客 1405

ROS的插件库pluginLIB机制讲解

pluginlib是一个使用C++实现的库, 用于在ROS包里面动态的加载或卸载plugin. plugin满足一些条件的, 可以从运行库(例如共享对象, 动态链接库)中动态加载的类. Plugin在扩展或修改应用的行为上很有优势, 并不需要知道原始类的源码, 也许你在编写代码时, 也并不知道你将会用到哪个plugin, 而是在运行时通过参数载入才确定具体的plugin, 在后面有一点相关的示例, 可以体会一下使用plugin的feeling

ROS2高级教程使用pluginlib自定义插件

ROS 2功能包中,我们首先定义一个插件接口,即一个纯虚基类,用于规定插件的基本方法。

生活不止眼前的苟且 1627

PyQt5程序报错:TypeError: argument 1 has unexpected type 'NoneType'的解决办法

背景说明: 编写一个PyQt5程序,在主程序中调用两个子窗口UI程序,运行时,按钮关联槽函数处报错: 错误提示: >>>Exception "unhandled TypeError" argument 1 has unexpected type 'NoneType' 代码如下: if __name__=="__main__": app = QApplication(sys...

weixin_45182409的博客 1万+

TypeError: argument 1 has unexpected type 'NoneType'(解决办法)

self.search.clicked.connect(self.search_information(e)) 在使用connect时,报TypeError: argument 1 has unexpected type 'NoneType'错误,解决办法: self.search.clicked.connect(lambda:self.search_information(e)) 我个人理...

灵感点滴的分享 3061

ROSpluginlib

ROSpluginlib

立于皓月之边,不弱星光之势 1674

ROS中利用pluginlib库生成插件并使用

ROS中利用pluginlib库生成插件并使用

weixin_47962228的博客 1175

ROS pluginlib 插件

ROS插件机制 简介 pluginlib是一个C++库,用于从ROS包中加载和卸载插件插件库。插件是动态加载的类,它们从运行时库(即共享对象,动态链接库)加载。pluginlib可以在任何时候打开包含导出类的库,而不需要应用程序事先了解库或包含类定义的头文件。插件可用于扩展/修改应用程序行为,而无需修改应用程序源代码。 编写和使用简单的插件 ROS wiki 参考:pluginlib/Tutor...

liam_dapaitou的博客 3151

ros pluginlib理解

为了防止链接都是,故而把内容转载了过来,感谢原创。 原创地址: https://blog.csdn.net/sunbibei/article/details/52958724 https://blog.csdn.net/jinking01/article/details/79414486 1. 写在最前面 由于在一个源码中, 关于在ROS平台上的具体实现, 用到了Plugin. 为了更加深入的理解到底是一个什么鬼, 所以对pluginlib进行了一些学习, 下面的内容, 大部分在网站上是能够找到的, 是综合

ABC_ORANGE的博客 464

ROS-----pluginlib使用总结

pluginlib是一个C++库,可以实现为一个ROS包动态的加载和卸载插件。

倔强不倒翁的博客 1万+

ROSpluginlib 包的详细解析

pluginlibROS 提供的一个强大的 C++ 库,旨在简化插件的编写、动态加载与卸载过程。插件在 ROS 中指的是可以在运行时加载的类,这些类被编译到动态链接库(如.so文件)中。使用pluginlib动态性:无需在编译时将插件类链接到应用程序中,可以在运行时根据需要加载。模块化:允许开发者在不修改应用程序源代码的前提下,扩展或修改应用行为。灵活性:支持多种插件类型,适用于不同的应用场景。通过pluginlib,开发者可以轻松地实现插件架构,使得系统更具扩展性和可维护性。

m0_73640344的博客 1179

ros的插件库 pluginlib 的简介

1.1 Getting ready First, install pre-madepluginlib_tutorialspkg by doing the following where %ROS_DISTRO% can be {fuerte,groovy,hydro,indigo,jade} etc.: $ apt-get install ros-%ROS_DISTRO%-com...

李想的博客 838

ROS2 pluginlib使用方法

ROS2 pluginlib使用指南:通过5个步骤实现动态插件加载。首先定义接口类(纯虚函数),然后实现具体插件类并注册;接着编写插件描述XML文件,配置CMakeLists.txt编译选项;最后使用class_loader动态加载插件。以运动控制系统为例,展示了从接口定义到实际调用的完整流程,包括异常处理和环境配置。该方法遵循开闭原则,支持在不修改主程序的情况下扩展功能。

zhenyuej的博客 660

ROSpluginlib的理解与实例

1. 写在最前面由于在一个源码中, 关于在ROS平台上的具体实现, 用到了Plugin. 为了更加深入的理解到底是一个什么鬼, 所以对pluginlib进行了一些学习, 下面的内容, 大部分在网站上是能够找到的, 是综合Wiki上的介绍, 以及从源码中看到的内容和自己的尝试. 希望对大家都一点点帮助.pluginlib是一个使用C++实现的库, 用于在ROS包里面动态的加载或卸载plugin. p...

jinking01的专栏 2670

ros2 pluginlib详解

pluginlibROS (Robot Operating System) 中用于动态加载和管理插件的库,它简化了插件的使用和管理。pluginlib 提供了一种机制,使得主应用程序能够在运行时根据需要加载、使用和卸载这些插件,而不需要在编译时将插件链接到主应用程序中。接口通常定义了插件需要实现的功能,而具体的插件类则实现了这些功能。pluginlib 可以在运行时查找并加载包含插件的共享库(例如 .so 文件),这使得插件的管理和使用变得更加灵活。这些是具体的插件类,实现了插件接口定义的功能。

m0_49133355的博客 980

ROS pluginlib笔记

概述 pluginlib可以用来创建和加载plugin。 思想: pluginlib是一个用于从ROS包中加载和卸载插件的C++库。 插件是从运行时库(即共享对象,动态链接库)加载的动态可加载类。 使用pluginlib,不必显式地将其应用程序与包含类的库链接。 pluginlib可以在任何时候打开包含导出类的库,而应用程序不必预先知道库或包含类定义的头文件。 插件可用于扩展/修改应用程序行为,...

qq_41986495的博客 548

ROSpluginlib详解

1. 写在最前面 由于在一个源码中, 关于在ROS平台上的具体实现, 用到了Plugin. 为了更加深入的理解到底是一个什么鬼, 所以对pluginlib进行了一些学习, 下面的内容, 大部分在网站上是能够找到的, 是综合Wiki上的介绍, 以及从源码中看到的内容和自己的尝试. 希望对大家都一点点帮助. pluginlib是一个使用C++实现的库, 用于在ROS包里面动态的加载或卸

ZXQHBD的博客 1468

pluginlibROS Wiki

1. 概述 pluginlib是一个C++库,用来从ROS包中加载或者卸载插件。插件是一个动态的可加载的类,能够从运行时库(也就是分享的物体,动态链接库)中进行加载。有了pluginlib,不需要显式的将他们的应用程序和包含他们类的库进行链接,pluginlib可以在任何时候打开一包含导出类的库,而不需要应用程序预先知道库或者包含类定义的头文件。插件对那些不需要应用程序的源码和扩展或者是改变的应...

oreo的博客 353
上一篇: matlab 函数用法积累
下一篇: onethink 1.0 框架升级ThinkPHP3.2.3后的问题解决
wraettearw
博客等级 码龄12年 27粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值