我是靠谱客的博主 可耐荔枝,最近开发中收集的这篇文章主要介绍ROS:nodelet为什么需要Nodelet原理参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • nodelet官方教程:http://wiki.ros.org/nodelet
  • 中文教程: http://www.ncnynl.com/archives/201702/1324.html
  • github: https://github.com/ros/nodelet_core.git

为什么需要Nodelet

  • ROS是一种基于分布式网络通讯的操作系统,整个机器人控制系统是由一个Master主节点和若干个功能相对独立的Node子节点组成,这也是ROS系统最主要的特点就是分布式以及模块化的设计。在ROS通讯过程中Master节点存储着各个子节点的topics和services的注册信息,每个功能节点在请求服务之前先向主节点进行注册,然后节点之间就可以直接进行信息传递。ROS的底层通信都是基于XML-RPC协议实现的。
  • XML-RPC协议是XML Remote Prodecure Call的简称,是一种远程过程调用的分布式网络协议。它允许跨平台的软件间通过发送和接收XML格式的消息进行远程调用,即允许不同的操作系统、不同环境中的程序实现基于Internet过程调用的规范和一系列方法的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。
  • XML-RPC的远程调用过程为:首先客户端发起请求后需要按照协议格式对请求信息进行填充;填充完毕以后XML格式的信息会被转化为数据流,通过传输层进行传输。服务端收到客户端发出来的数据流,会将其再转化为XML格式的信息,然后按照XML-RPC协议获取客户端的请求信息,并对请求信息进行处理,处理完毕以后将反馈信息发送给客户端。
  • 以XML-RPC的方式传输数据存在一定的延时和阻塞。在数据量小、频率低的情况下,传输耗费的时间可以忽略不计。但当传输图像流,点云等数据量较大的消息,或者执行有一定的实时性要求的任务时,因传输而耗费的时间就不得不考虑。Nodelet包就是为了改善这一状况设计的,它提供一种方法,可以让多个算法程序在同一个进程中用shared_ptr实现零拷贝通信(zero copy transport),以降低因为传输大数据而损耗的时间。简单来说就是将多个node捆绑在一起管理,使得同一个manager里面的topic的数据传输更快。

原理

  • nodeltes目标是提供一种在单机器单进程运行多个算法而不会在进程中传递消息时产生复制成本的方法。
  • roscpp具有在同一节点内的发布和订阅调用之间进行零拷贝指针传递的优化
  • 为了做到这一点,nodelet允许将类动态加载到同一个节点,然而它们提供了简单的单独命名空间,使得尽管nodelet在同一个进程中,它仍然像一个独立的节点
  • 这进一步扩展了,它在运行时使用pluginlib是动态可加载的。
    

参考

  • ROS系列之Nodelet—基础知识

最后

以上就是可耐荔枝为你收集整理的ROS:nodelet为什么需要Nodelet原理参考的全部内容,希望文章能够帮你解决ROS:nodelet为什么需要Nodelet原理参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部