第十九课 pluginlib&Nodelet
把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
rostopic pub /Plus2/in std_msgs/Float64 5.0 -r 10
rostopic echo /Plus3/out
最后总结:
很好的一个网址https://github.com/tue-robotics
第十九课 pluginlib&Nodelet的更多相关文章
- KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础
原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...
- NeHe OpenGL教程 第三十九课:物理模拟
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十九课:Blt函数
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十九课:粒子系统
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- python第二十九课——文件读写(复制文件)
自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...
- python第二十九课——文件读写(读取读取中文字符)
演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...
- 斯坦福第十九课:总结(Conclusion)
19.1 总结和致谢 欢迎来到<机器学习>课的最后一段视频.我们已经一起学习很长一段时间了.在最后视频中,我想快速地回顾一下这门课的主要内容,然后简单说几句想说的话. 作为这门课的结束时 ...
- 第二十九课:javascript异步处理
大家知道javascript中有多少方法能够实现异步处理吗?setTimeout(),setInterval()是最常用的两个.XMLHttpRequest对象,进行ajax请求时.postMessa ...
- Ng第十九课:总结(Conclusion)
19.1 总结和致谢 欢迎来到<机器学习>课的最后一段视频.我们已经一起学习很长一段时间了.在最后视频中,我想快速地回顾一下这门课的主要内容,然后简单说几句想说的话. 作为这门课的结束时 ...
随机推荐
- MAC OS X常用命令总结
附录:UNIX常用命令 ============================================================================ 1. cd ...
- ACM学习历程—TopCoder SRM691 Div2
这是我的第一次打TC,感觉打的一般般吧.不过TC的题目确实挺有意思的. 由于是用客户端打的,所以就不发题目地址了. 300分的题: 这题大意是有一段序列只包含+和数字0~9. 一段序列的操作是,从头扫 ...
- noip积木大赛
先要覆盖一号位置的高度,(现在你的目的只是想要覆盖一号位置). 每次你可以选区间[l,r]高度+1,这个作为一个操作. 为什么不选的范围大一点,让更多的区间增加高度呢. 所以红色的地方是,在我的目的是 ...
- QtAV的编译方法
1--编译准备 QtAV的安装编译总指导说明:https://github.com/wang-bin/QtAV/wiki/Build-QtAV QtAV的源代码:https://github.com/ ...
- sqlserver sql语句查看分区记录数、查看记录所在分区
select count(1) ,$PARTITION.WorkDatePFN(workdate) from imgfile group by $PARTITION.WorkDatePFN(workd ...
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) C. Bear and Drawing
题目链接:http://codeforces.com/contest/573/problem/C题目大意:在两行无限长的点列上面画n个点以及n-1条边使得构成一棵树,并且要求边都在同一平面上且除了节点 ...
- 重装系统, i tell you
博客网站: https://blog.csdn.net/ca1m0921/article/details/79313050 装机例子1: http://www.xitongcheng.com/jiao ...
- 【转】CentOs中Apache开启rewrite模块详解
rewrite是apache环境的一个伪静态功能了,如果我们没有没让Apache开启rewrite功能,网站上所有的rewrite规则都不可使用. centos的配置文件放在: /etc/httpd/ ...
- ThinkPHP5.1开启调试和错误提示
app/config,php中找到 show_error_msg=false 改为True; 再将 'app_debug' => false 改为True;
- Svn使用遇到的错误
1. 权限不足导致的错误