无人车开源软件架构

参考视频:Apollo自动驾驶入门课程

开源软件架构

开放式软件层分为三个子层:实时操作系统、运行时框架和应用程序模块层

  1. 实时操作系统(RTOS)

可确保在给定时间内完成特定任务,“实时”是指无人车的操作系统能够及时进行计算,分析并执行相应的操作。以上是在汽车传感器收集到外界数据后的短时间内完成。
在这里插入图片描述
在这里插入图片描述
假设无人车的传感器检测到车辆前方移动的障碍物,短时间内,基于RTOS的Apollo软件模块,必须分析障碍物是行人,还是汽车或是其他东西。预测其未来的运动方向和速度,并确定减速还是停止,然后车辆必须执行该决定。
实时性能是确保系统稳定性和驾驶安全性的重要要求
Apollo RTOS是Ubuntu Linux操作系统与Apollo内核相互结合的成果

  1. 运行时框架

运行时框架Apollo的操作环境,是ROS的定制版,虽然是机器人操作系统,但他实际上是一个在Apollo RTOS上运行的软件框架。

ROS根据功能将自治系统划分为多个模块,每个模块负责接收、处理和发布自己的消息。由于这些模块相互独立,只能通过运行时框架进行通信,因此调整任何单一模块都很容易。所有这些功能使ROS成为理想的Apollo开发与集成框架。

为了使ROS适应无人车,Apollo团队改进了共享内存的功能和性能、去中心化和数据兼容性
(1)共享内存
共享内存降低了需要访问不同模块时的数据复制需求
在这里插入图片描述
对于一对多传输方案,共享内存支持"一次写入 多次读取"模式。例如,如果只收到一次点云,可以同步运行障碍物检测,定位和GUI工具,可以加快通信速度。
(2)去中心化
去中心化解决了单点故障的问题
在这里插入图片描述
现成的ROS由许多节点组成,每个节点都有自己的功能。例如,一个节点可能负责收集摄像头图像,另一个节点可能负责规划轨迹,而第三个节点可能负责将控制命令发送到CAN总线上的车辆。但是所有的节点都需要由单个ROS主节点来控制,如果这个主节点发生故障,整个系统都会失效。
解决方案:Apollo将所有的节点放在一个公共域中,通过这种去中心化方案,公共区域取代了原来的ROS主节点,因此消除了单点故障风险
在这里插入图片描述
(3)数据兼容性
对于无人车,由于项目本身的规模很大,数据兼容性至关重要,不同的ROS节点通过名为ROS消息接口语言相互通信
在这里插入图片描述

ROS消息需要使用通用接口语言,使每个节点都可以解读来自其他节点的消息数据。如果消息文件的格式与节点期望的格式稍有不同,通信就会失败。这可能导致严重的兼容性问题,例如,当一个接口升级,数据不兼容通常会导致系统故障,此外必须一次又一次地转换之前所记录的测试数据以适应新的消息格式。
解决方案:
Apollo使用了一种名为protobuf的接口语言替代原生ROS消息。Protobuf是一种结构化数据序列化方法,对于开发用于通过电线彼此通信或用于存储数据的程序非常有用。可以将新字段添加到消息格式中,而不会破坏向后兼容性
在这里插入图片描述

  1. 应用程序模块
    在这里插入图片描述
    Apollo的软件平台具有各种模块,这些模块包括MAP引擎、定位、感知、规划、控制、端到端驾驶以及人机接口(或HMI),每个模块都有自己的算法库,模块之间的关系非常复杂。

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

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

相关文章

Serlet API详解

目录 一、HttpServlet 1.1 处理doGet请求 1.2 处理doPost请求 二、HttpServletRequest 2.1 核心方法 三、HttpServletRespons 3.1 核心方法 一、HttpServlet 在编写Servlet代码的时候,首先第一步要做的就是继承HttpServlet类,并重写其中的某些方法 核心…

数字散斑干涉测量仿真研究

一、引言 数字散斑干涉技术(digital speckle pattern interferometry,DSPI)是一种测量物体表面微小变形的测量技术,在生物医学检测、缺陷无损检测、精密制造、材料与结构力学参数评估等领域起着日益重要的作用,具有实时性、高精度、非接触、…

Python入门自学进阶-Web框架——42、Web框架了解-bottle、flask

WEB框架的三大组件:路由系统、控制器(含模板渲染)、数据库操作 微型框架:依赖第三方写的socket,WSGI, 本身功能少 安装: pip install bottle pip install flask 安装flask,同时安…

多线程的学习中篇下

volatile 关键字 volatile 能保证内存可见性 volatile 修饰的变量, 能够保证 “内存可见性” 示例代码: 运行结果: 当输入1(1是非O)的时候,但是t1这个线程并沿有结束循环, 同时可以看到,t2这个线程已经执行完了,而t1线程还在继续循环. 这个情况,就叫做内存可见性问题 ~~ 这…

Java8实战-总结37

Java8实战-总结37 默认方法不断演进的 API初始版本的 API第二版 API 默认方法 传统上,Java程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现。但是,一旦类库…

Qt扩展-KDDockWidgets 的使用

KDDockWidgets 的使用 一、概述二、原理说明三、代码实例1. 项目简述2. 布局源码 一、概述 KDDockWidgets 的使用相对比较简单,建议直接参考 其提供的例子。 二、原理说明 在这种多窗口布局显示的使用最常用的就是这两个类, 也就是 MainWindow 和 Doc…

MySQL 开启配置binlog以及通过binlog恢复数据

目录 一、binlog日志基本概念二、开启binlog日志记录2.1、查看binlog日志记录启用状态2.2、开启配置binlog日志 三、制作测试数据(可以先不执行,这里是为后续数据恢复做准备,先看数据恢复流程)四、使用binlog日志恢复数据4.1、前置…

中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

ROS的通信机制

ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件功能和工 具都建立在这种分布式通信机制上,所以ROS的通信机制是最底层也是最核心的技术。在大多数应用场景下,尽管我们不需要关注底层通…

7.网络原理之TCP_IP(下)

文章目录 4.传输层重点协议4.1TCP协议4.1.1TCP协议段格式4.1.2TCP原理4.1.2.1确认应答机制 ACK(安全机制)4.1.2.2超时重传机制(安全机制)4.1.2.3连接管理机制(安全机制)4.1.2.4滑动窗口(效率机制…

软件测试面试经验分享,真实面试题

前言 本人普通本科计算机专业,做测试也有3年的时间了,讲下我的经历,我刚毕业就进了一个小自研薪资还不错,有10.5k(个人觉得我很优秀),在里面呆了两年,积累了一些的经验和技能&#…

Flink Batch SQL Improvements on Lakehouse

本文整理自阿里云研发工程师刘大龙(风离),在 Streaming Lakehouse Meetup 的分享。内容主要分为三个部分: Flink Batch on Paimon 挑战Flink Batch 核心优化后续规划 点击查看原文视频 & 演讲PPT 一、Flink Batch on Paimon 挑…

启动 React APP 后经历了哪些过程

本文作者为 360 奇舞团前端开发工程师 前言 本文中使用的React版本为18,在摘取代码的过程中删减了部分代码,具体以源代码为准。 在React 18里,通过ReactDOM.createRoot创建根节点。并且通过调用原型链上的render来渲染。 本文主要是从以下两个…

Spring实现简单的Bean容器

1.BeanDefinition,用于定义 Bean 实例化信息,现在的实现是以一个 Object 存放对象 public class BeanDefinition {/*** bean对象*/private Object bean;/*** 存放 (定义)Bean 对象*/public BeanDefinition(Object bean) {this.bea…

长期用眼不再怕!NineData SQL 窗口支持深色模式

您有没有尝试过被明亮的显示器闪瞎眼的经历? 在夜间或低光环境下,明亮的界面会导致许多用眼健康问题,例如长时间使用导致的眼睛疲劳、干涩和不适感,同时夜间还可能会抑制褪黑素分泌,给您的睡眠质量带来影响。 这些问…

​比特币ETF将迎来审核窗口期

作者:Greg Cipolaro,NYDIG 全球研究主管 编译:WEEX Exchange 几只重要的 ETF 申请将于 10 月中旬迎来审核窗口,本文通过观察近期期权市场的动态,以研究交易者对这些关键 ETF 日期的仓位态度;门头沟&#xf…

Vue3 + TS 自动检测线上环境 —— 版本热更新提醒

🐔 前期回顾 编写 loading、加密解密 发布NPM依赖包,并实施落地使用_彩色之外的博客-CSDN博客 目录 🌍 问题产生 🤖 性能效率 🪂 新建 autoUpdate.ts 🎋 在App.vue使用 🌍 问题产生 当用…

《扩散模型 从原理到实战》Hugging Face (二)

第二章 Hugging Face简介 本章无有效内容 第三章 从零开始搭建扩散模型 有时候,只考虑事情最简单的情况反而更有助于理解其工作原理。本章尝试从零开始搭建廓庵模型,我们将从一个简单的扩散模型讲起,了解其不同部分的工作原理,…

IntelliJ IDEA快速查询maven依赖关系

1.在Maven窗口中点击Dependencies->show Dependencies 2.得到依赖关系图 此时原有快捷键Ctrlf可以查询jar包,如果没有查询菜单出来则设置快捷键方式为 File->Settings->Keymap->搜索栏输入find->在Main Menu下Edit下Find下Find双击算则Add keyboard…

云可观测性安全平台——掌动智能

云可观测性安全平台是一个跨架构、跨平台的可观测性方案,实现对云环境下的细粒度数据可视化,满足安全部门对云内部安全领域的多场景诉求,包括敏感数据动态监管、云网攻击回溯分析、攻击横移风险监控、云异常流量分析。本文将介绍掌动智能云可…