Apollo:实时通信架构CyberRT入门, my writer

1. 简介

1.1 从 ROS 系统说起

在这里插入图片描述

Apollo 最初用的中间件是 ROS(机器人操作系统),在 v3.0 之前用的都是基于 ROS 框架进行开发。概括来说,ROS 系统主要包含三方面:

  • 第一是通信系统,ROS 是个分布式的松耦合系统,算法模块是以独立的进程形式存在的,也就是我们常说的 Node。ROS 基于 Socket 实现了pub/sub 的通信方式,不同的算法节点(node)之间通过 pub/sub 的发送/接收消息。
  • 第二是 Framework&Tools (框架和工具),开发者可以基于 ROS 提供的 Client Library 和通信层,方便的收发消息。开发者只需要关注消息处理相关的算法,而至于算法何时被调用,全部由框架来处理。
  • 第三是生态系统,从社区内,开发者可以很方便地寻找到很多现成的「传感器驱动」和「算法实现」等进行参考。

随着自动驾驶的发展,不少开发者,包括 Apollo 平台,把 ROS 应用于自动驾驶系统,毕竟自动驾驶汽车也相当于一个大的机器人。但是我们在实践中也遇到了很多挑战:

  • 首先,ROS 中的算法模块是以独立的进程形式存在的,那么这些进程之间应该以什么样的顺序去执行?实际上,Linux 本身是一个通用系统,内核中的调度器对上面的算法业务逻辑并不清楚,它只是在尽量满足公平的情况下让大家都得到调度。所以,ROS Node 运行顺序并无任何逻辑。但本质上自动驾驶是一个专用系统,任务应该按照一定的业务逻辑执行。那么是在 ROS 层加一个 Node,由其来同步各个算法任务的运行,还是在Linux 内核中实现新的调度策略,使其结合算法业务逻辑进行调度?前者的开销,后者的迁移性,都是需要思考的问题。
  • 其次,ROS 是一个分布式的系统。既然是分布式,就要有通信的开销。即使在同一个物理节点上,依然存在着通信的开销。所以 Apollo 前期曾经使用共享内存去降低 ROS 原生的基于 Socket 通信的开销。ROS 2 也在使用 DDS 解决通信方面的实时性。ROS 也支持 Nodelet 模式,这可以去掉进程间通信的开销,但是调度的挑战依然存在。
  • 第三,除了调度的不确定性,ROS 系统中还存在其他很多不确定的地方,比如内存的动态申请。

随着 Apollo 的发展,对最高水平的稳健性和性能的需求, Apollo Cyber RT 应运而生,它满足了一个面向商业化的自动驾驶解决方案的基础需求。

1.2 是什么

  • CyberRT是一个开源,高性能的运行行框架,专为自动驾驶场景设计。针对自动驾驶的高并发、低延迟、高吞吐量进行了大幅优化。
  • CyberRT是百度推出的替代ROS的消息中间件,自动驾驶中的各个模块通过cyber进行消息订阅和发布,同时cyber还提供了任务调度、录制bag包等功能。Apollo提供了 CyberRT作为中间体,对计算任务和通信进行优化
  • CyberRT处于底层的实时操作系统和算法模块之间,能够在保证高吞吐的情况下,又能够低延迟的实时响应上层任务,并保证整个系统确认性的运转
  • CyberRT的核心理念是基于组件,组件有预先设定的输入输出。
    • 实际上,每个组件都是一个专用的算法模块,框架可以根据所有预定义的组件生成有向无环图 (DAG)。
    • 所有的这些组件都是基于cyberRT提供的调度程序mainboard加载运行。
  • 在运行时,框架把融合好的传感器数据和预定义的组件打包在一起形成用户级轻量任务,之后,框架的调度器可以根据资源可用性和任务优先级来派发这些任务。

总结:

  • CyberRT可以看做是操作系统之上的一层"RTOS"。
  • CyberRT采用协程作为调度的基本单位,将原有的内核态调度,变为用户态调度。系统的线程,在CyberRT眼里,可以看做"CPU"。

apollo中很多功能都是基于Cyber RT的模块框架开发的,其声明周期由cyber RT管理。

在这里插入图片描述

特色

  • 高性能:无锁对象ÿ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单击和一些案例

一、单击 1、单击概念 除了定位鼠标之外,processing鼠标还捕捉鼠标是否被单击。mousePressed在鼠标单击和不单击的情况下有不同的值。mousePressed变量是一种bool变量,也就是说它只有两个可能的值,真和假。当鼠标按下的时候mousePressed的值…

apache2和httpd web服务器

apache2和httpd web服务器 apache2和httpd web服务器是啥apache是软件基金会apache2是一个web服务httpd和apache2是同一个东西,但是不同linux发行版中叫法不一样。就是同一个东西,但是看上去有一些不一样。 apache2和httpd web服务器是啥 apache是软件基…

Scikit-learn内置的数据集

数据集是我们学习和研究机器学习不可或缺的基础,Scikit-learn库内置了丰富的数据集资源,非常适合初学者用来练习和验证机器学习算法的效果。 一、鸢尾花数据集 鸢尾花数据集(Iris Dataset)是机器学习领域中最著名的数据集之一&am…

【每日一篇】使用图神经网络进行交通速度预测的上下文感知知识图谱框架【为了自己方便读论文】

Context-aware knowledge graph framework for traffic speed forecasting using graph neural network 论文链接: https://arxiv.org/abs/2407.17703 翻译: 摘要 人类流动在空间和时间上受到城市环境的密切影响,构成了理解交通系统的重…

MarkTool之UDP

UDP客户端,主要作用是与UDP服务端连接进行数据通讯 1、连接参数有4个,绑定IP和Port,服务端IP和Port 2、接收数据和发送数据的参数设置,有16进制,有字符,有原始数据,都可进行选择 3、定时发送&a…

理解常见开源协议的区别

本文将介绍几种常见的开源许可证,包括GPL、LGPL、MIT、Apache、BSD 和 木兰协议(Mulan PSL),并详细解释它们的区别。 1. GPL (GNU General Public License) GPL 是最著名和最常用的开源许可证之一,由自由软件基金会 …

泰安网站建设有几大特点

泰安网站建设的特点可以分为以下几个方面: 一、突出地域特色。泰安是山东省的一个地级市,具有悠久的历史和深厚的文化底蕴。在网站建设过程中,泰安的特色文化和旅游资源应得到充分的展示。可以通过优美的图片、详细的介绍和生动的文字&#x…

【Python 基础】字典和结构化数据 -1

字典和结构化数据 在本文中,我将介绍字典数据类型,它提供了一种灵活的访问和组织数据的方式。然后,结合字典与关于列表的知识,你将学习如何创建一个数据结构,对井字棋盘建模。 字典数据类型 像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用…

【STM32】SysTick定时器

SysTick定时器 前言一、介绍最大计时时间 固件库函数体现用途 总结 前言 参考一下猫咪博主的文章,作为补充学习⇨【STM32】Systick滴答定时器 当然我主要还是跟着金善愚老师学的,我觉得他真的有种高中班主任的亲切感。那个1812的名号往那里一放&#x…

【vluhub】elasticsearch漏洞

Elasticsearch介绍 是Apache旗下的一个开源的、分布式、RESTful的搜索和分析引擎,适用于java语言项目 默认端口9200 kali中搭建ElasticHD, 即可未授权绕过ES可视化界面 直通车 https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elas…

Csrf复习(pikachu靶场和防御手段)

CSRF漏洞简介 CSRF又称跨站请求伪造,是指攻击者在用户登录的状态下(浏览器保存了用户的cookie)通过伪造恶意url诱导用户点击,借助用户的cookie网站权限(冒充用户身份来进行非法操作,对于服务器来说是合法的…

视觉SLAM第二讲

SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类:基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图,结合传感器数据进行全局定位。SLAM中的全局…

如何利用开源Bug管理系统提高团队效率

国内外主流的10款开源bug管理系统对比:PingCode、Worktile、Trac、WebIssues、MantisBT、Bugzilla 、Fossil、The Bug Genie、TestLink 、OpenProject。 在软件开发的复杂世界中,Bug管理可能是一个令人头疼的问题,尤其是当工具不足以捕捉和解…

这才是做项目的正确打开方式

基于大数据的推荐机制,对于没有接触到信息的人而言,会认为获取行业外的信息会很困难,对于已经接触到信息的人而言,又会出现选择困难症。当系统对你锁定标签后,就会频繁的给你推荐跟标签对应的信息,信息一多…

【传知代码】智慧医疗:纹理特征VS卷积特征(论文复现)

在这个无处不在的技术革新的时代,计算机视觉和机器学习成为了医疗领域中不可或缺的力量。在这篇文章中,我们将探讨两种突出的技术:纹理特征和卷积特征。它们如何在医学影像分析中竞争与协作,为医生提供更深入、更精确的诊断信息&a…

iOS基础---常用三方库:Masonry、SDWebImage

系列文章目录 iOS基础—多线程:GCD、NSThread、NSOperation iOS基础—Category vs Extension iOS基础—常用三方库:Masonry、SDWebImage 文章目录 系列文章目录一、Masonry1.Masonry简介2.使用示例3.源码剖析 二、SDWebImage1.SDWebImage简介2.主要功能…

不同WEB下的的ApplicationContext的选择

依赖 ApplicationContext类型选择 默认情况下,spring通过选择的web端的框架来选择使用哪个ApplicationContext子类,默认情况下我们一般使用spring mvc框架,这个时候AC的实现类为 org.springframework.boot.web.servlet.context.AnnotationC…

在 LCD 上显示 png 图片-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

在 LCD 上显示 png 图片 PNG 简介 无损压缩:PNG 使用 LZ77 派生算法进行无损压缩,确保图像质量不受损,且压缩比高 体积小:通过高压缩比,PNG 文件体积小,适合网络传输 索引彩色模式:PNG-8 格式…

计划外投料

计划外领料通过A07 R10发料/其他,进行计划外投料。移动类型仍然是261。 在科目分配页签。维护计划外投料的工单号。 在实际业务中,有的企业也会单独复制出一个移动类型。进行区分。 在COOIS中,有张表可以看出物料是计划内投料还是计划外。 …

MySQL查询执行(三):显示随机消息

假设有如下表结构&#xff1a; -- 创建表words CREATE TABLE words (id int(11) NOT NULL AUTO_INCREMENT,word varchar(64) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;--数据生成存储过程 delimiter ;; create procedure idata() begindeclare i int;set i0;while i<…