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

news2024/11/16 23:47:17

在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏:《linux深造日志》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

⛳️ 推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • ⛳️ 推荐
  • 引言
  • 一、Cyber RT 介绍
  • 二、常用术语
    • 1.1 运行 Cyber Monitor**
    • 1.2 实用命令
  • 三、熟悉 Cyber Monitor 界面
    • 3.1Cyber Monitor 交互命令介绍
  • 结语

引言

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

一、Cyber RT 介绍

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

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 工具的运行环境:

username@computername:~$: source /apollo/cyber/setup.bash

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

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

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

1.1 运行 Cyber Monitor**

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

username@computername:~$: cyber_monitor

1.2 实用命令

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

username@computername:~$: cyber_monitor -h

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

username@computername:~$: cyber_monitor -c ChannelName

三、熟悉 Cyber Monitor 界面

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

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

docs/框架设计/cyber_monitor.png

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以其卓越的实时性能和关键特性,成为推动自动驾驶系统不断进步的关键因素之一。其在实时操作系统领域的引领地位,为我们展示了未来自动驾驶的潜力和前景。

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

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

相关文章

Linux的常见指令和基本操作演绎【复习篇章一】

文章目录 前言下载安装 XShellXShell 下的复制粘贴热键操作01.ls指令tree 02.cd指令03.touch指令04.mkdir指令(重要):05.rmdir指令 && rm 指令(重要)06.组合07.man指令(重要)&#xff1…

【lodash.js】非常好用高性能的 JavaScript 实用工具库,防抖,深克隆,排序等

前言:lodash是一款前端必须要知道的js库,它里面提供了许多常用的功能和实用的工具函数 基本上我参与的项目中都有lodash,只能说lodash太强大了,lodash.js 提供了超过 300 个实用的工具函数,涵盖了很多常见的编程任务 l…

群辉NAS的远程访问

群辉NAS是私有云存储,局域网访问很容易【详见:网上邻居访问设置、其它设备的访问设置】,远程访问相对复杂,涉及很多关键因素,现将过程记录如下: 目录 1、互联网接入 2、绑定MAC与IP地址 3、路由器开启5…

HTML5与App封装技术将网站一键打包成App

HTML5:跨平台的利器HTML5作为一种先进的网页标记语言,其最大的优势在于跨平台性。开发者仅需编写一次代码,即可在各种操作系统和设备上运行,无需为每个平台单独开发App。这种“编写一次,运行处处”的模式,大…

选择海外云手机需要考虑什么?

随着跨境电商行业的蓬勃发展,企业们纷纷寻找提升平台流量和广告投放效果的方法,这已成为业界的当务之急。传统的宣传模式在国内受到直播和链接带货等新兴方式的冲击,而在国外,类似的趋势也在悄然兴起,呈现出广阔的发展…

OOM 内存溢出与线上内存实时监控

单应用可用的最大内存 dalvik.vm.heapstartsize,它表示堆分配的初始大小。 APP启动的初始分配内存 dalvik.vm.heapgrowthlimit,它表示单个进程内存限定值。App最大内存限制 dalvik.vm.heapsize,单个进程可用的最大内存。开启largeHeap"t…

力扣646. 最长数对链

动态规划 思路: 思路与 力扣354. 俄罗斯套娃信封问题 类似将序列进行排序,然后假设 dp[i] 为第 i 个元素的最长数对链个数;则其状态转移方程: 第 i 个元素之前的某一个元素(假设是下标是 j),如…

VS2022联合Qt5开发学习11(QT5.12.3联合VTK在VS2022上开发医学图像项目5——qvtkWidget上显示STL三维图像并取点)

这篇博文是接着这个系列前面的博文,来讲如何实现医学图像三视图同步视图。我想到的一个思路是用Scrollbar来控制切面的改变,还有一个想法是在三维图像上取点,然后以这个点为切面中心更新三维视图。这篇博文主要介绍的就是第二个想法的三维图像…

软件功能测试如何确定测试需求?CMA、CNAS软件测试报告获取

软件功能测试是为了验证软件的功能是否按照设计要求正常工作的过程,可以确保软件的质量,提高用户体验,也是保证软件安全和可靠性的重要一环。我们需要从多个角度对软件的各个功能模块进行测试,确保每个功能都能正常运行&#xff0…

蓝桥杯备战——5.动态数码管扫描

1.分析原理图 经查阅说明书得知数码管为共阳极,共阳端口接到了U8,而段码接到了U7。 如果需要选中U8,我们只需要将P250;P261;P271; 如果需要选中U7,我们只需要将P251;P261;P271; 2.代码示例 void Delay1ms() //12.000MHz {unsigned char data i, j;i 12;j 169;…

Elasticsearch内核解析 - 数据模型篇

Elasticsearch内核解析 - 数据模型篇 - 知乎 Elasticsearch是一个实时的分布式搜索和分析引擎,它可以帮助我们用很快的速度去处理大规模数据,可以用于全文检索、结构化检索、推荐、分析以及统计聚合等多种场景。 Elasticsearch是一个建立在全文搜索引擎…

【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana

前言 最近需要搭建一套测试环境,用到了ElasticSearch( 简称es)搜索引擎,安装过程有些曲折,记录下来作为经验。 正文 环境 Ubuntu18.04 操作系统Docker Server Version: 20.10.7ElasticSearch Version: 8.5.3Kibana Version: 8.5.3 说明 E…

【C++】STL和vector容器

STL和vector容器 基本概念六大组件容器算法迭代器容器算法迭代器 vector容器基本概念vector构造函数赋值vector的容量和大小vector插入与删除vector存取数据函数原型 vector互换容器vector预留空间vector容器嵌套容器 基本概念 长久以来,软件届一直希望建立一种可重…

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏,在帕鲁的世界,玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活,也…

跨平台同步 Shell 历史记录,无缝切换会话 | 开源日报 No.154

atuinsh/atuin Stars: 14.3k License: MIT Atuin 是一个用 SQLite 数据库替换现有 shell 历史记录的工具,可以记录命令的额外上下文,并提供可选且完全加密的历史同步功能。其主要功能和核心优势包括: 重新绑定 ctrl-r 和 up (可配置) 到全屏…

weak_ptr 与 一个难发现的错误(循环依赖问题)笔记

推荐B站视频:7.weak_ptr与一个非常难发现的错误_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL/?p7&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3一、weak_ptr weak_ptr并不拥有所有权并不能调用 -> 和 解引…

动态规划之买卖股票问题(篇一)(买卖股票的最佳时机)

本篇博客和接下来的几篇博客主要讲解一下动态规划中的股票问题系列,本篇博客主要讲解121. 买卖股票的最佳时机和122.买卖股票的最佳时机II。 121. 买卖股票的最佳时机 题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定…

Spring-Kafka 3.0 消费者消费失败处理方案

一、背景 我们作为Kafka在使用Kafka是,必然考虑消息消费失败的重试次数,重试后仍然失败如何处理,要么阻塞,要么丢弃,或者保存 二、设置消费失败重试次数 1 默认重试次数在哪里看 Kafka3.0 版本默认失败重试次数为1…

【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)

文章目录 0. 前置推荐阅读和本文内容0.1 前置推荐阅读0.2 本文内容 1. 修改一:直接用大模型获取网页信息,不用爬虫程序1.1 我们要给大模型什么内容1.2 提取网页文本信息1.3 组织Action1.4 完整代码及细节注释1.5 可能存在的问题及思考 2. 修改二&#xf…

python:socket基础操作(3)-《udp接收消息》

收跟发基本核心思想差不多,只不过收信息需要去绑定一下端口,如果我们发信息没有绑定端口,那系统会随机分配一个,如果是收信息,那我们必须要求自己绑定端口才行 基础的接收数据 import socketudp_socket socket.socke…