0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROS核心框架介绍

麦辣鸡腿堡 来源:CSDN博客 作者:lwlv 2023-11-21 18:07 次阅读

ROS核心框架

对于第一个问题,我也没仔细研究过源码,核心代码基本由pythonC++组成,运用了xmlrpc机制,每个运行的节点可以理解成一个进程。进程间通讯有些是共享内存的方式(比如message_filter),有些应该是通过socket。

不过ROS的核心框架也就是ros-base主要由Willow Garage公司和一些开发者设计、提供以及维护,它提供了一些分布式计算的基本工具。

sudo apt install ros-melodic-ros-base

分布式计算框架可以理解为ROS的所有节点运行时需要一个主控制器ROS Master(通过roscore指令开启),ROS Master通过RPC(Remote Procedure Call Protocol,远程过程调用)提供了登记列表和对其他计算图表的查找。

没有控制器,节点将无法找到其他节点,交换消息或调用服务。节点与节点之间的连接是直接的,控制器就像一个DNS(Domain Name System)服务器。

图片

ROS的框架还是挺复杂的,光看一些理论性的介绍可能还有点概念,但真正去实现里面肯定还有不少细节问题。

真正在应用ROS框架时,其实也有一些不足的地方,比如:

1、ROS节点相互之间通信时如何知道另外一个节点的状态,是宕掉了还是正常,因为它强依赖于于中心节点ROS Master。本身在系统中频繁创建话题就不是一件很好的事,会造成多少内存碎片。

在使用ros::Subscriber sub = n.subscribe(“chatter”, 1000,chatterCallback)时,这个1000是队列消息的缓存数目,如果是图像或者点云比较大的数据,就不要随便写1000了,不然内存会被消耗光。

2、系统中存在大量话题和数据时,本地传输的数据延时大而不确定,远程传输的数据更是受带宽和处理性能的影响。对于机器人的控制而言,想要达到精确更多,通信延时就要做得更小,而ROS这种通信机制实时性和稳定性不太好。

3、ROS的msg采用md5码去进行校验,如果一个人改了没通知另外一个人,经常导致另外一个人的包运行不起来的尴尬局面。

4、ROS与可视化界面通信时,有时不知道是界面还是ROS机制问题,界面会莫名闪退(rviz就经常出现这样的问题)。

5、关于ROS的动态参数保存问题,比如在rqt_reconfigure上调好的参数如何在重启roscore后加载调试后的参数。我曾花费过很久的时间,参见《在ROS中处理yaml文件》和《ROS动态调参(dynamic
reconfigure)客户端服务端之C++ Python实现》

但也没有很好地解决。很多功能可能仅适用于给开发者用,但当作产品去使用还是有很多地方值得去优化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    27033

    浏览量

    201407
  • 主控制器
    +关注

    关注

    2

    文章

    25

    浏览量

    10846
  • ROS
    ROS
    +关注

    关注

    1

    文章

    271

    浏览量

    16681
收藏 人收藏

    评论

    相关推荐

    Micro-ROS:把ROS2放在MCU上

    了机器人的发展。   ROS便是为机器人在研发的过程中的代码复用提供支持的开源框架,大量的机器人开源项目,从感知到控制、从定位到构图、从导航到可视化,几乎都使用ROS作为基础。   Micro-
    的头像 发表于 04-07 07:13 6611次阅读

    ROS与STM32之间的联系

    、在ROS小车里面有两个核心控制器,一个是ROS主控,一个是stm32控制器3、ROS主控是树莓派等,只要能在ROS上面将
    发表于 06-28 07:49

    ROS RIKIBOT基础--使用系列 第一章节】ROS机器人硬件系统 精选资料分享

    ROS RIKIBOT基础–使用系列】ROS机器人硬件介绍1.RIKIBOT机器人硬件介绍1.1硬件框架
    发表于 07-30 06:59

    ROS2的安装与使用 精选资料推荐

    ros2的乌龟仿真turtlesim,介绍topic,service,action等元素及其使用,介绍ros的基本操作
    发表于 08-30 08:24

    分享一份RK3308开发板ROS使用手册指南

    OpenEmbedded/Yocto 框架下维护了meta-ros layer,使得我们可以将ROS集成到同样基于 Openembedded 框架 的嵌入式Linux中运行。Open
    发表于 08-16 18:04

    瑞萨将micro-ROS移植到RA MCU中

    NEWS 全球半导体解决方案供应商瑞萨电子集团(TSE:6723)与专注于中间件解决方案的SME公司eProsima宣布,基于RA MCU的EK-RA6M5评估套件成为micro-ROS开发框架
    的头像 发表于 09-24 16:22 1842次阅读

    AR机器人公司发布机器人操作系统(ROS)硬件加速框架ROBOTCORE

    )硬件加速框架——ROBOTCORE™。ROS是机器人技术的标准。该公司为机器人提供半导体构建模块,通过硬件加速为高性能机器人创建定制计算架构,同时保持机器人和加速器的硬件无关性(支持流行的FPGA和GPU)。 ROBOTCORE™可帮助机器人工程师创建与
    的头像 发表于 06-16 12:40 1723次阅读

    AV开发人员所采用的ROS框架简介

    汽车行业的多个部门一直在采用开源软件,尤其是在过去十年中基于 Linux 的代码。 在这里,我们专注于一个称为机器人操作系统(ROS)的开放框架。Apex.AI 正在利用 ROS,添加下面讨论
    的头像 发表于 07-18 15:59 1239次阅读
    AV开发人员所采用的<b class='flag-5'>ROS</b><b class='flag-5'>框架</b>简介

    ROS基本介绍

    近来找到的实习主要是做智能车控制,用到的也就是ROS机器人操作系统,ROS需要运行在一个操作系统上,这个操作系统常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS组合就是实习的主要学习内容了。所以我就新开
    的头像 发表于 05-19 17:07 5124次阅读
    <b class='flag-5'>ROS</b>基本<b class='flag-5'>介绍</b>

    ROS1的通信架构的基础通信方式及相关概念

    ROS的通信架构是ROS的灵魂所在,它包括数据处理,进程运行,消息传递等** 。这篇文章主要介绍ROS1的通信架构的基础通信方式和相关概念,因为RO
    的头像 发表于 05-19 17:23 2874次阅读
    <b class='flag-5'>ROS</b>1的通信架构的基础通信方式及相关概念

    ROS/ROS 2 介绍

    ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。ROS的原型源自斯坦福大学的STanford
    的头像 发表于 05-19 17:45 3465次阅读
    <b class='flag-5'>ROS</b>/<b class='flag-5'>ROS</b> 2 <b class='flag-5'>介绍</b>

    Unity与ROS链接介绍

    对于ROS而言,其最常用的就是Topic话题以及Service两个了。之前我们在了解Unity Robotics Hub时候就了解到基本的Unity和ROS的通讯,下面我们来详细介绍一下Unity
    的头像 发表于 11-17 17:22 489次阅读
    Unity与<b class='flag-5'>ROS</b>链接<b class='flag-5'>介绍</b>

    ROS的扩展有哪些方法

    ROS的扩展 ROS除了本身框架性的东西以外,最大的特色就是能融合很多其他的东西,形成一个机器人开发生态圈,难怪ROS名为机器人操作系统,使命是powering the world‘s
    的头像 发表于 11-21 18:12 353次阅读

    ros的基本概念是什么

    基本概念: ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。
    的头像 发表于 11-27 11:21 955次阅读

    ROS通信接口机制介绍

    ROS通信接口 接口可以让程序之间的依赖降低,便于我们使用别人的代码,也方便别人使用我们的代码,这就是ROS核心目标,减少重复造轮子。 ROS有三种常用的通信机制,分别是话题、服务、
    的头像 发表于 12-01 15:03 316次阅读
    <b class='flag-5'>ROS</b>通信接口机制<b class='flag-5'>介绍</b>