码迷,mamicode.com
首页 > 其他好文 > 详细

第十九课 pluginlib&Nodelet

时间:2017-04-28 11:17:06      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:三角形   api   mat   成员函数   script   plugin   string   技术   性能   

把rgb摄像头的数据转换为laser的时候使用了Nodelet.

pluginlib(插件库)

 技术分享

在ros中有一个plugin的包,下面是一个ROS Plugin Registration的例子

技术分享

上面包含一个polygon_interface多边形接口,它包含了两个插件,第一个插件是rectangle_plugin(矩形),第二个插件是triangle_plugin(三角形),他们都是通过class list export导出到Polygon_interface中,然后在Polygon plugins list中就有了rectangle以及triangle;使用rospack plugins --attrib=plugin polygin_interface就可以找到polygon_interface里面的插件.

导出插件

注册插件

example_pkg/src/class_list.cpp

首先要包含几个头文件

#include<pluginlib/class_list_macros.h>//注册插件

#include<polygon_interface_package/polygon.h>//包含基类的头文件

#include<rectangle_package/rectangle.h>//插件的头文件

//Declare the Rectangle as a Polygon class

PLUGINLIB_EXPORT_CLASS(rectangle_namespace::Rectangle,polygon_namespace::Polygon)//第一个参数为用于导出的类型,第二个参数为基类的类型,插件的参数类型包括命名空间以及类名,以及基类的命名空间和类型.

如何添加到ROS工具链

example_pkg/rectangle_plugin.xml

<library path="lib/librectangle">//首先指定了库的路径

<class type="rectangle_namespace::Rectangle" base_class_type="polygon_namespace::Polygon">//包含一个class参数,类型为插件类型和基类类型

<description>

this is a rectangle plugin

</description>

</class>

</library>

如何导出插件

技术分享

上面是在基类的包里面.

如何使用插件

ClassLoader,包含了四个参数,一个是基类的包,基类类型,属性的名字,插件xml的路径

下面是一个实例createInstance(const std::string &lookup_name)

.....

Nodelet

nodelet对于提高ROS性能有着重要的地位,特别是在视觉,控制,高频和高带宽程序中.

nodelet的优势:

在一个线程上运行多个算法

nodelet之间传输数据无需拷贝(在一个nodelet管理器下,使用boost共享指针)

作为插件动态载入

和节点相似性高

基本用法

技术分享

在manager上启动pkg/Type类型的nodelet

技术分享

在一个单独的节点上启动pkt/Type类型的nodelet

技术分享

从manager上卸载名字为name的nodelet

技术分享

启动一个nodeletmanager节点

它的API

公有成员参数

技术分享

上面是一个初始化函数规定了nodelet该如何启动,

下面是构造函数和析构函数

技术分享

保护成员函数

技术分享

技术分享

下面是它的实例

首先去启动一下它里面的launch文件,

roslaunch nodelet_tutorial_math plus.launch

 

第十九课 pluginlib&Nodelet

标签:三角形   api   mat   成员函数   script   plugin   string   技术   性能   

原文地址:http://www.cnblogs.com/gary-guo/p/6780689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!