nodelet部分搞了两天,记录下初步的成果。更多实践的结果等真正把手上实际的项目搞定再来更新。
如果是自己动手写一个nodelet,建议先去看一下ros中的pluginlib,nodelet方面的资料较少,翻一翻,基本上都是翻译的wiki上的,内容不是很丰富,所以nodelet作为pluginlib的一种,先去看资料多的pluginlib,能了解整个写插件的过程。
如果只是体验一下nodelet的用法,继续向下看吧~~
1、为什么用nodelet
试想一个场景,在一个传统的node中,有发布者和订阅者,把接收到的消息发送出去,在数据量大的时候,为了避免数据的拷贝(耗时耗空间),可以通过指针或者一些智能指针来实现。但是如果是不同的节点之间那,在大数据量传输的情况下,如何来规避数据传输过程中的拷贝那?
nodelet便可以解决以上的问题,实现在多个nodelet之间的零拷贝传输。
2、如何实现
简单的说就是,我们可以把传统的node稍加改动成为nodelet,多个node之间的通信就可以转变为多个nodelet之间的通信。然后通过一个nodelet的manager来管理加载到其中的nodelets。