前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apollo Cyber RT:引领实时操作系统在自动驾驶领域的创新

Apollo Cyber RT:引领实时操作系统在自动驾驶领域的创新

作者头像
鸽芷咕
发布于 2024-05-25 12:56:25
发布于 2024-05-25 12:56:25
43900
代码可运行
举报
文章被收录于专栏:C++干货基地C++干货基地
运行总次数:0
代码可运行

引言

自动驾驶技术的不断演进引领着实时操作系统(RTOS)领域的创新。在众多自动驾驶平台中,Apollo Cyber RT stands out,成为实时操作系统中的佼佼者。Apollo Cyber RT 是一个开源、高性能的运行时框架,专为自动驾驶场景而设计。针对自动驾驶的高并发、低延迟、高吞吐量进行了大幅优化。

一、Cyber RT 介绍

Apollo Cyber RT 是一个开源、高性能的运行时框架,专为自动驾驶场景而设计。针对自动驾驶的高并发、低延迟、高吞吐量进行了大幅优化。

docs/框架设计/image.png
docs/框架设计/image.png

使用 Apollo Cyber RT 的主要好处:

  • 加速开发 - 具有数据融合功能的定义明确的任务接口 - 一系列开发工具 - 大量传感器驱动程序 - 简化部署 - 高效自适应的消息通信 - 具有资源意识的可配置用户级调度程序 - 可移植,依赖更少 - 赋能自动驾驶 - 默认的开源运行时框架 - 为自动驾驶搭建专用模块

二、常用术语

  • Component

在自动驾驶系统中,模块(如感知、定位、控制系统…)在 Cyber RT 下以 Component 的形式存在。不同 Component 之间通过 Channel 进行通信。Component 概念不仅解耦了模块,还为将模块拆分为多个子模块提供了灵活性。

  • Channel

Channel 用于管理 Cyber RT 中的数据通信。用户可以发布/订阅同一个 Channel,实现 p2p 通信。

  • Task

Task 是 Cyber RT 中异步计算任务的抽象描述。

  • Node

Node 是 Cyber RT 的基本组成部分;每个模块都包含一个 Node 并通过 Node 进行通信。通过在节点中定义 Reader/Writer 或 Service/Client,模块可以具有不同类型的通信形式。

  • Reader/Writer

Reader/Writer 通常在 Node 内创建,作为 Cyber RT 中的主要消息传输接口。

  • Service/Client

除了 Reader/Writer 之外,Cyber RT 还提供了用于模块通信的 Service/Client 模式。它支持节点之间的双向通信。当对服务发出请求时,客户端节点将收到响应。

  • Parameter

参数服务在 Cyber RT 中提供了全局参数访问接口。它是基于 Service/Client 模式构建的。

  • 服务发现

作为一个去中心化的框架,Cyber RT 没有用于服务注册的主/中心节点。所有节点都被平等对待,可以通过“服务发现”找到其他服务节点。使用UDP用来服务发现。

  • CRoutine

参考协程(Coroutine)的概念,Cyber RT 实现了 Coroutine 来优化线程使用和系统资源分配。

  • Scheduler

为了更好地支持自动驾驶场景,Cyber RT 提供了多种资源调度算法供开发者选择。

  • Message

Message 是 Cyber RT 中用于模块之间数据传输的数据单元。

  • Dag文件

Dag 文件是模块拓扑关系的配置文件。您可以在 dag 文件中定义使用的 Component 和上游/下游通道。

  • Launch文件

Launch 文件提供了一种启动模块的简单方法。通过在launch文件中定义一个或多个 dag 文件,可以同时启动多个模块。

  • Record文件

Record 文件用于记录从 Cyber RT 中的 Channel 发送/接收的消息。回放 Record 文件可以帮助重现Cyber RT之前操作的行为。

  • Mainboard

Cyber RT 的主入口,可以通过mainboard -d xxx.dag来启动一个模块进程。

  • 开发工具

CyberRT 框架同时也提供了一系列实用的工具用来辅助日常开发, 包括命令行工具 cyber_monitor cyber_recorder 等。

‍说明:这些工具需要运行在 Apollo Docker 环境内。

所有上述工具都依赖于 CyberRT 软件库,所以在使用这些工具之前,你需要通过如下方式来配置 CyberRT 工具的运行环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
username@computername:~$: source /apollo/cyber/setup.bash

下面将着重介绍 cyber_monitor 的使用方法。

  • 使用 Cyber Monitor 查看 Channel 数据实践

命令行工具cyber_monitor提供了终端中实时显示channel信息列表的功能。

1.1 运行 Cyber Monitor**

在 Apollo Docker 环境中执行如下命令运行cyebr_monitor

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
username@computername:~$: cyber_monitor

1.2 实用命令

可以通过 -h 选项来获取帮助信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
username@computername:~$: cyber_monitor -h

使用 -c 选项,可以让 cyber_monitor 只监测一个指定的 channel 信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
username@computername:~$: cyber_monitor -c ChannelName

三、熟悉 Cyber Monitor 界面

在启动cyber_monitor之后,会在终端中显示一个交互界面。cyber_monitor自动从拓扑中收集所有 channel 的信息并分两列显示(channel 名称,数据频率)

channel 信息默认显示为红色,当有数据流经 channel 时,对应的行就会显示成绿色,如下图所示:

3.1Cyber Monitor 交互命令介绍

ESC | q key ---- 退出

Backspace ---- 后退

h | H ---- 显示帮助页

PageDown | Ctrl+d ---- 上一页

PageUp | Ctrl+u ---- 下一页

Up, down or w, s keys ---- 上下移动当前的高亮行

Right arrow or d key ---- 进入高亮行, 显示高亮行数据的详细信息

Left arrow or a key ---- 从当前界面返回上一层界面

Enter key ---- 与d键相同

f | F ---- 显示数据帧频率

t | T ---- 显示channel消息类型

Space ---- 关闭|开启 channel (仅在channel有数据到达时有效; channel关闭后会变成黄色)

i | I ---- 显示channel的Reader和Writer信息

b | B ---- 显示channel消息内容

n | N ---- 显示消息中RepeatedField的下一条数据

m | M ---- 显示消息中RepeatedField的上一条数据

结语

在自动驾驶技术的浪潮中,Apollo Cyber RT以其卓越的实时性能和关键特性,成为推动自动驾驶系统不断进步的关键因素之一。其在实时操作系统领域的引领地位,为我们展示了未来自动驾驶的潜力和前景。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念
Apollo Cyber RT 是专为自动驾驶场景设计的开源、高性能运行时框架。 基于中心化计算模型,主要价值是提升自动驾驶系统的高并发、低延迟、高吞吐。
Frank909
2022/05/10
5K0
自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念
【Apollo】CyberRT(CMake)环境配置与使用示例
我们学习Apollo时可能会面临两个难点:1.项目是基于Docker部署的 2.项目时基于Bazel编译的
DevFrank
2024/07/24
5981
【Apollo】CyberRT(CMake)环境配置与使用示例
自动驾驶 Apollo 源码分析系列,感知篇(二):Perception 如何启动?
从 Apollo 的官方文档,我们很容易得知 Perception 是核心的组件之一,但像所有的 C++ 程序一样,每个应用都有一个 Main 函数入口,那么引出本文要探索的 2 个问题:
Frank909
2021/12/06
1.9K0
自动驾驶 Apollo 源码分析系列,感知篇(二):Perception 如何启动?
【百度Apollo】探索自动驾驶:百度Apollo视觉感知模块的实践与创新
车辆选择后,程序会把会把 calibration/data 目录下对应的车型参数和传感器内外参文件拷贝到作用目录下。地图选择后在 Dreamview 下便可以正常显示当前地图。
鸽芷咕
2024/05/26
4060
【百度Apollo】探索自动驾驶:百度Apollo视觉感知模块的实践与创新
【百度Apollo】探索自动驾驶:深入解析Apollo开放平台架构的博客指南
Apollo 开放平台提供了一个包含车辆认证平台、硬件开发平台、开源软件平台、云端服务平台一体的四层架构。基于此四层架构,开发者可以快速搭建一套属于自己的自动驾驶系统。
鸽芷咕
2024/05/25
5770
【百度Apollo】探索自动驾驶:深入解析Apollo开放平台架构的博客指南
Cyber RT模块加载流程简介
Cyber RT是apollo的运行环境框架,提供了模块动态加载机制。 本文基于apollo v6.0介绍Cyber RT的模块加载流程。
coderhuo
2021/03/08
2.7K0
深度剖析Apollo自动驾驶平台
自百度宣布开放 Apollo 自动驾驶平台以来,很多开发者非常期待可以深入了解 Apollo 平台的开放内容,以便更充分高效的利用这个自动驾驶平台,研究并落地自己对于自动驾驶的诸多想法。 为此,7 月 22 日,由百度开发者中心主办、极客邦科技承办的 73 期百度技术沙龙设置 Apollo 主题,现场百度资深架构师从 Apollo 的开放能力、Apollo 代码开放框架以及基于深度学习的 End to End 自动驾驶方案三个技术维度做了深度分享,以期帮助开发者深度了解百度 Apollo 开放内容和平台架构
刘盼
2018/03/16
1.9K0
深度剖析Apollo自动驾驶平台
百度Apollo | 实车自动驾驶:感知、决策、执行的无缝融合
启动工控机后,在桌面上打开命令行终端(Terminal),进入 CAN 卡目录(默认在 home 路径下),启动 CAN 驱动:
鸽芷咕
2024/05/25
3050
百度Apollo | 实车自动驾驶:感知、决策、执行的无缝融合
自动驾驶 Apollo 源码分析系列,系统监控篇(三):Monitor模块如何监控通信中 channel 的时延?
上一篇文章分析了 Apollo 框架中 Monitor 模块如何监控硬件,这篇文章继续分析 Monitor 是如何监控软件的,数据通信中 channel 是本文主要分析对象。
Frank909
2022/05/10
1.1K0
自动驾驶 Apollo 源码分析系列,系统监控篇(三):Monitor模块如何监控通信中 channel 的时延?
【百度Apollo】循迹自动驾驶:探索基于视觉感知的路径规划与控制技术
启动工控机后,在桌面上打开命令行终端(Terminal),进入 CAN 卡目录(默认在 home 路径下),启动 CAN 驱动:
鸽芷咕
2024/05/25
3600
【百度Apollo】循迹自动驾驶:探索基于视觉感知的路径规划与控制技术
自动驾驶 Apollo 源码分析系列,感知篇(四):将红绿灯检测和识别代码细致走读一遍
前一篇文章讲到了 Apollo 中红绿灯算法逻辑和各部分代码位置及粗略流程,本篇文章更进一步去分析具体代码实现。
Frank909
2021/03/02
2.2K0
自动驾驶 Apollo 源码分析系列,感知篇(四):将红绿灯检测和识别代码细致走读一遍
自动驾驶 Apollo 源码分析系列,感知篇(七):Lidar 障碍物检测基本流程
Apollo 系统传感器是以 Lidar 为主的,本文整理在 Apollo 6.0 中 Lidar 的基本代码流程。
Frank909
2021/12/06
1.7K0
自动驾驶 Apollo 源码分析系列,感知篇(七):Lidar 障碍物检测基本流程
自动驾驶 Apollo 源码分析系列,感知篇(八):感知融合代码的基本流程
说起自动驾驶感知系统,大家都会谈论到感知融合,这涉及到不同传感器数据在时间、空间的对齐和融合,最终的结果将提升自动驾驶系统的感知能力,因为我们都知道单一的传感器都是有缺陷的。本篇文章梳理 Apollo 6.0 中的感知数据融合基本流程。
Frank909
2021/12/06
3.1K0
自动驾驶 Apollo 源码分析系列,感知篇(八):感知融合代码的基本流程
百度Apollo:自动驾驶的领航者
在自动驾驶系统中,摄像头是一种重要的感知传感器,负责捕捉周围环境的图像信息。Camera感知模块是自动驾驶系统中的核心组成部分之一,它通过处理摄像头采集的图像数据来实现目标检测、车道线识别等功能。
鸽芷咕
2024/01/05
2970
百度Apollo:自动驾驶的领航者
【百度Apollo】探索自动驾驶:小白教学如何使用 Dreamview 播放数据包
在浏览器中输入 http://localhost:8888,访问 Apollo DreamView:
鸽芷咕
2024/05/26
4620
【百度Apollo】探索自动驾驶:小白教学如何使用 Dreamview 播放数据包
百度Apollo自动驾驶源码下载
阿波罗是百度发布的名为“[Apollo(阿波罗)”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。官网
李小白是一只喵
2020/04/24
1.9K0
【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器
已本地安装 Dreamview,若未安装,可以去Apollo社区查看安装说明进行操作
鸽芷咕
2024/05/25
3790
【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器
百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析
动驾驶技术正以前所未有的速度发展,而百度Apollo作为自动驾驶领域的先驱之一,为开发者提供了一套全面的工具和框架。本文将介绍如何通过百度Apollo的Dreamview工具,结合播放和分析离线数据包,快速入门自动驾驶开发的第一步。
鸽芷咕
2023/12/27
7370
百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析
实时和非实时操作系统有什么区别?
实时操作系统,当外界事件和数据产生时,系统能以足够快的速度予以处理,其处理结果能在规定的时间内控制生产结果或对系统做出响应,并控制所有实时任务协调一致运行的操作系统。
刘盼
2023/11/24
1.4K0
实时和非实时操作系统有什么区别?
apollo record包解析工具
当前解析cyber record包需要在docker中进行,并且依赖cyber和编译好的proto文件。实际上cyber_record录制好之后就是按照一定的格式保存的文件,对用户来说,拿到录制好的文件之后,用更少的依赖进行解析是最好的。
用户6981952
2022/11/06
1.9K0
推荐阅读
自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念
5K0
【Apollo】CyberRT(CMake)环境配置与使用示例
5981
自动驾驶 Apollo 源码分析系列,感知篇(二):Perception 如何启动?
1.9K0
【百度Apollo】探索自动驾驶:百度Apollo视觉感知模块的实践与创新
4060
【百度Apollo】探索自动驾驶:深入解析Apollo开放平台架构的博客指南
5770
Cyber RT模块加载流程简介
2.7K0
深度剖析Apollo自动驾驶平台
1.9K0
百度Apollo | 实车自动驾驶:感知、决策、执行的无缝融合
3050
自动驾驶 Apollo 源码分析系列,系统监控篇(三):Monitor模块如何监控通信中 channel 的时延?
1.1K0
【百度Apollo】循迹自动驾驶:探索基于视觉感知的路径规划与控制技术
3600
自动驾驶 Apollo 源码分析系列,感知篇(四):将红绿灯检测和识别代码细致走读一遍
2.2K0
自动驾驶 Apollo 源码分析系列,感知篇(七):Lidar 障碍物检测基本流程
1.7K0
自动驾驶 Apollo 源码分析系列,感知篇(八):感知融合代码的基本流程
3.1K0
百度Apollo:自动驾驶的领航者
2970
【百度Apollo】探索自动驾驶:小白教学如何使用 Dreamview 播放数据包
4620
百度Apollo自动驾驶源码下载
1.9K0
【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器
3790
百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析
7370
实时和非实时操作系统有什么区别?
1.4K0
apollo record包解析工具
1.9K0
相关推荐
自动驾驶Apollo源码分析系统,CyberRT篇(一):简述CyberRT框架基础概念
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验