本文主要是介绍ros中的nodelet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在ros的节点通信过程中,以topic,service和param进行,但这些总要有一些传出延迟和拥赛。而nodelet设计出来就是为了加快节点间的通信速度,做到zero copy。通常用于在一个处理过程中多个算法间数据无需拷贝即可实现传递。roscpp已经有做优化使得在同一个节点中发布和订阅做到zero copy 的指针传递。nodelete允许动态加载类到一个相同的node中,但由于命令空间不同使得nodelete运行起来向一个单独的节点。
简单来说,就是nodelet把几个node一起管理起来(这几个node中都加载了nodelete类),使得在同一个manager中的节点间的topic传递数据更快。
应用:高吞吐量的数据流可以由许多nodelet加载到同一个进程来避免拷贝和流量传输
设计目标:
1.使用已存在的roscpp接口
2.使得nodelets之间数据的zero copy
3.动态加载来打破编译时依赖
4.定位透明除了优化改进
5.在node中和在nodelet中将有最小的变化
技术:
1.默认一个基类 nodelet::Nodelet 将用来动态加载。所有的nodelets都将继承这个基类,并且可以使用pluginlib动态加载
2.基类将自动提供命令空间,重映射和参数,就像是第一个类节点
3.将会有一个nodelet manager进程,加载了有1个或多个nodeletes。通过一个boost 共享指针,nodelets间的任何通信都可以做到zero copy
使用:待补充
这篇关于ros中的nodelet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!