Apollo开源软件ROS定制版差异化分析

  • 什么是ROS?
  • 什么是Apollo定制版ROS?
    • 什么是Apollo?
    • 为什么Apollo需要自行开发定制版ROS?
  • 不同之处的对比
    • 更可靠的安全性
    • 更快的传输速度
    • 更好的兼容性

什么是ROS?

ROS全称Robot Operate System,也就是机器人操作系统,它具有典型的分布式、模块化的软件架构特征。ROS也是当前全球使用最广泛、生态支持最好的机器人操作系统,虽然说是机器人操作系统,但是当前其被广泛运用在无人驾驶领域,半数以上的无人驾驶公司和团队、实验室、研究机构甚至包括部分车场都在使用它来进行无人驾驶的开发。
ROS的官网是:http://www.ros.org/

简单来说,它是一个类操作系统,当前支持的最好的,也是最常见的就是Ubuntu16.04。为什么说他是类操作系统,因为它的运作必须要基于一个真实的操作系统(通常是Ubuntu)来支撑。但是它同样提供了一系列的接口、诊断工具、组件通信、附属工具、第三方软件集成(例如PCL、OpenCV等)、常用传感器接口等等。
在ros官网的wiki上,ROS的自我定义是:
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。

什么是Apollo定制版ROS?

首先我们要了解什么是Apollo?且为什么Apollo需要自行开发定制版ROS?当这么都清晰明了之后,你就自然明白了本文的含义。

什么是Apollo?

Apollo是百度的无人驾驶解决方案代号,其整体解决方案包括硬件、驱动、软件、算法、云端、仿真验证、工具链等组件。
其本身已经开源了一部分代码,详情可见:https://github.com/ApolloAuto/apollo
![Apollo开源项目

那么Apollo通过ROS将各个功能模块从整个完整的无人驾驶软件系统中划分开来,做到架构清晰,方便管理,便于拓展和维护以及迭代开发。且ROS天生解耦,大大提高了软件开发的效率。

为什么Apollo需要自行开发定制版ROS?

为什么要自行开发定制版ROS,这主要原因在于开源社区的ROS虽然满足了Apollo的特性和功能开发需求,但是它无法满足Apollo作为一个百度的王牌,作为一个商业解决方案的需求。
我们都知道,从demo到商业化落地,这中间有很多的路要走,之所以要定制化开发ROS,也是基于这点考虑,相比如开源社区版ROS,Apollo的定制化ROS有以下几点特征和优势:
1、更可靠的安全性;
2、更好的兼容性;
3、更快的传输速度;
作为无人驾驶的软件系统和架构看来说,我们无法做到像其他软件一样可以容忍一定程度上的错误和BUG,所以高规格、高要求、高安全、高可靠、高可信才是商业化的前提。

不同之处的对比

更可靠的安全性

一个完整的ROS工程由多个rosnode组成,每一个rosnode都有它自己独特的功能,一个或者多个rosnode就组成了Apollo中一个功能模块,比如说感知、融合、地图、定位等等。
所以所rosnode的管理至关重要,社区版本的ROS针对rosnode的管理,全部依赖于一个叫做rosmaster的节点,一旦该节点挂掉之后,整个工程里面所有的rosnode全部都会失效,down掉,这对于一个要求高可靠的无人驾驶系统来说,是完全无法容忍的。

所以基于这点,百度的apollo就针对这点对ros做了改造,完成了一个特性,叫做去中心化
顾名思义,也就是说现在的rosnode接口不再依赖于一个独立的master来进行管理,而是将其全部放置与一个公共域demain中,域中的每个rosnode都有域中其他节点的信息,这样就可以消除单点故障。

更快的传输速度

ROS通过rosmsg这一特殊的消息结构体在两个或者多个rosNode之间进行通信,而在开源版本中ROS则是直接走的底层的网络协议出发,去进行不同rosNode之间消息的传递和通信,而其实这是一种很大的浪费,相对于rosnode来说,就像是一个一个微服务,当两个rosnode在不同的物理节点上时,的确需要通过网络进行传输,但是其实在实际的工程中,大量的rosnode是存在于一个物理节点之中的,此时还在去使用网络进行通信,无疑是多此一举,且还大规模增加了通信的负担。
因此百度基于ROS公版增加了share memory,也就是共享内存特性。通过该特性,降低了不同模块之间的数据复制需求,大大提升了节点间通信的效率,极大降低了通信损耗和资源使用。
且针对于一个节点和多个节点进行通信时,共享内存支持一次写入,多次读取的模式。

更好的兼容性

前文说道,rosnode之间通过一种叫做rosmsg的格式来进行数据传输,A节点按照一定赫兹pub rosmsg,而B节点则时刻监听相同的topic,按照一样的rosmsg格式来进行sub订阅接受传递过来的消息。

但是如果其中有一个几点的rosmsg发生了些许变化,比如说多了一个参数,则在开源版的ros中就会通信失败,两个节点之间必须要严格格式一致,方可通信。

这其实会导致严重的数据兼容性问题,例如我们希望升级其中某个节点的romsg,那么为了保证数据通路的正常,我们就需要将所有与它进行交互的rosnode全部找出来,然后统一升级一遍。
再比如说一旦某个rosmsg的格式发生了变化,那么再次之前所有的搜集到的以前一个版本的rosmsg格式为准的数据,就必须要全部再转化一遍才可以使用了。这也极大的提高了数据存储和数据收集的难度和兼容性。
为了解决这个问题,Apollo使用了一种名叫Protobuf的结构化数据序列化方法来替代源生的rosmsg数据格式 进行通信。

Apollo开源软件ROS定制版差异化分析相关推荐

  1. 干货!5招搞定问卷调查差异化分析

    导读:当今市场同质化竞争现象非常严重.如何在瞬息万变的市场中洞悉不同客户的真实需求,找到提质增效的着力点,差异化分析成为了独门利器. 本文将结合完整的问卷调查客户分析流程,详细展现数据分析全过程,帮助 ...

  2. 数据统计分析案例(对比分析、销量定比分析、同比、双坐标图、环比、shift、贡献度分析(帕累托法则)、差异化分析、resample、季节性波动分析)

    本文来自<Python数据分析从入门到精通>--明日科技编著 本章以案例为主,通过简单的知识讲解使读者了解数据统计分析中常用的分析方法,如对比分析,同比.定比和环比分析,贡献度分析,差异化 ...

  3. 量化研究 | 策略在指数与主连复权的差异化分析

    致力于分享量化策略,培训视频,Python,程序化交易等相关内容 作者简介 吕洋洋 某大型资管公司在职量化策略研究员,熟悉数据清洗工作,擅于运用宏观因子.行业因子等进行对期货品种价格影响建模与相关性分 ...

  4. 【报告分享】传统品牌vs新消费品牌社交营销差异化分析报告.pdf

    大家好,我是文文(微信:sscbg2020),今天给大家分享克劳锐于2020年10月份发布的报告<传统品牌vs新消费品牌社交营销差异化分析报告.pdf>,做品牌营销的伙伴们可以重点看下哈. ...

  5. 华为分析提供行业差异化分析服务,全面赋能开发者精益运营

      作为面向开发者的一站式分析平台,华为分析(HUAWEI Analytics Kit)团队一直在探索如何提供更智能.便捷.强大的分析能力,帮助开发者打造更受用户欢迎的应用,推动开发者业务的可持续增长 ...

  6. 金山卫士开源软件之旅(十) KSafeMainproject的分析 1

    上一次看金山开源到如今已有一两个月了.期间看到QQ群里大家对它非常是热情. 近期有时间想看看金山的主界面projectKSafeMain,自己水平有限,总结的东西浅显.但还是愿意拿来与大家分享.希望对 ...

  7. 传统品牌vs新消费品牌社交营销差异化分析报告

    更多报告内容,可加微信:chanpin628 领取.

  8. 2020年社交平台时尚内容消费差异化分析报告

    本报告研究对象主要为微博.抖音.小红书.B站中的时尚内容,及用户针对不同内容的消费表现. 时尚内容消费是指用户观看时尚内容的行为,对喜爱的时尚内容完成点赞.评论等互动,通过时尚内容影响用户的时尚理念. ...

  9. 开源软件之七宗罪以及背后的阴谋

    编者注:本文由 @七液 原创撰写 我们每天使用着大量的开源软件,我们歌颂她赞美她.当有人站出来说一句开源不好 肯定会激起N多人站出来批评.然后给你列举出N多开源的好处和闭源的坏处. 首先我不反对开源, ...

最新文章

  1. php iis6 安装ssl证书,在IIS下部署SSL证书实现HTTPS
  2. 046_CSS3动画
  3. 65.shell特殊符号与和cut,sort,wc,uniq,tee,tr,split命令
  4. 工厂方法模式与抽象工厂模式
  5. WPF实现聚光灯效果
  6. MFC中给单文档程序添加背景图片
  7. 刚进职场的IT前端小白,如何规划自己的未来之路?有哪些发展方向?
  8. css阵列,CSS3简单的圆点阵列旋转加载动画
  9. Java 版学生成绩管理系统,附源码
  10. 服务零售全场景,苏宁机器人“分身有术”
  11. Lin法求解多方式方程共轭复根
  12. 快速生成数据库文档--screw
  13. 温商机器人企业_16家温商企业上榜“中国民企500强” 青山控股领衔
  14. 台式计算机碟片怎么安装,怎样用光盘从装台式电脑系统?
  15. 如何区分m的属性_测试属性#5 –区分
  16. 3060显卡系列cuda11.1
  17. 交换机到底有什么用?
  18. 中国生物医药项目投资机会及运营前景策略研究报告2021-2027年
  19. 多元统计分析及R语言建模
  20. ant-design实现主题暗黑主题 和 亮色主题的 切换(实现网站黑白皮肤)

热门文章

  1. php iis session 超时设置,如何配置IIS Session超时时间
  2. Delphi 和 C++Builder 免费社区版更新至 10.4.2 版现已发布!
  3. Linux 服务器配置 CEVA 的 License
  4. 南京工业大学高性能计算平台基础使用指南
  5. 浅析actran气动噪声仿真技术,以圆柱绕流气动噪声仿真为例
  6. python音频颤音算法_数字音效算法的研究与实现
  7. List接口和ArrayList类练习
  8. 三种定时器Timer的使用
  9. wps拼写检查词典下载_如何将拼写检查仅限于Word中的主词典
  10. VIVO语音助手控制ESP8266点灯