ROS学习 ROS Nodelet学习

http://blog.sina.com.cn/s/blog_602f87700102wtyy.html
ROS学习 <十一> ROS Nodelet学习 (2017-08-02 10:26:41)

作者: Sam (甄峰) sam_code@hotmail.com

  1. 背景介绍:
    ROS是一种基于消息传递的分布式多进程框架。ROS Node之间的通讯,是基于TCP/IP协议,在传递Message或Service时,都需要先打包,后解包。对资源有较大浪费,在实时性上也表现不佳。
    在需要传递的数据附载小,频率低时,这样的资源和时间消耗还可以接受。但当传递的是图像,点云等数量巨大的数据时,或实时性要求较高时,传输问题则必需要考虑。nodelet的出现,就是为解决此类问题。

  2. ROS Nodelet简介:
    Nodelet用来提供一种方式,让多个算法运行在同一个进程内,他们之间数据实现zero copy 传输。
    使用shared_ptr实现零copy传输(Zero Copy Transport). 它使用插件机制。

简单的说:Nodelet即为将之前启动的多个Node捆绑到一起,由一个Manager管理。在同一个Manager内, Topic数据更快,zero Copy.

nodelet package既提供用来实现Nodelet的nodelet base class。 又提供NodeletLoader class用来实例化Nodelet。

设计目标:

  1. 使用现有的ROS C++ 接口。
  2. 在Nodelet之间,实现零copy数据传输。
  3. 动态加载插件, 以打破构建时间的依赖性。
  4. 写Node或nodelet代码,差距最小化。

2.技术概要和Nodelet使用:
所有Nodelet代码继承base calss nodelet::Nodelet ,Nodelet代码将作为pluginlib 被动态load.
将提供namespace, 自动remapping arguments and parameter。
一个nodelet_manager可以管理一个或多个Nodelet。

用法:

nodelet usage:

nodelet load pkg/Type manager - Launch a nodelet of type pkg/Type on manager manager

在Manager内,载入一个Nodelet。pkg为包名,Type为Class名(或库名)

nodelet standalone pkg/Type - Launch a nodelet of type pkg/Type in a standalone node

以standalone模式Load和启动一个Nodelet

nodelet unload name manager - Unload a nodelet a nodelet by name from manager
从Manager内卸载一个Nodelet。

nodelet manager - Launch a nodelet manager node

启动一个Nodelet Manager

可以在字符界面使用如:
rosrun nodelet nodelet manager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值