SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨
在本次技术研讨会上,来自汽车与科技领域的专家们围绕汽车软件定义及自动驾驶技术展开了深入交流与探讨。从 SOAFEE 蓝图计划的创新性理念,到 Autoware 开源项目及 Open AD Kit 在实际应用中的探索,再到 Edge Workload Abstraction and Orchestration Layer(EWAOL)的技术落地,为汽车行业迈向智能化、软件定义化的未来提供了宝贵的思路与方向。
SOAFEE 蓝图介绍
SOAFEE 蓝图计划
SOAFEE 蓝图是一项由成员共同推动的关键计划,其核心目标是将软件定义汽车这一前瞻性愿景背后的概念具象化。通过部署领域特定的应用程序,并充分利用容器化等先进技术,为软件定义汽车的实现奠定坚实基础。对于参与其中的用户而言,能够在自己的终端完整复现蓝图至关重要,这不仅依赖于成员之间的高效信息共享,更需要精心编写的详尽且清晰的文档支持。用户既可以直接参照蓝图步骤,从中获取灵感,了解行业内的先进实践,也能将其作为基础框架,依据自身独特需求进行灵活修改,使其完美适配不同的项目场景。
SOAFEE 蓝图架构
从高层次架构视角来看,SOAFEE 蓝图的最上层是特定领域应用程序。这些应用程序针对特定的汽车功能任务而编写,通过容器技术进行部署,以实现高效的运行与管理。应用程序运行于 SOAFEE 参考实现之上,该参考实现的关键要求是能够全面支持 SOAFEE 及其架构所规定的各项功能。采用标准空间固件,能有效实现不同硬件平台之间的一致性,使得用户在遵循相关固件标准的各类硬件上,都能轻松快速地启动操作系统。例如 Arm System Ready Program,作为基于一组硬件和固件标准的合规认证程序,为这种一致性提供了有力保障。
SOAFEE 的核心愿景是实现软件与硬件的深度解耦,从而为硬件带来更高的灵活性。在实际应用中,这种灵活性体现在多个方面。在边缘端,嵌入式设备可以灵活部署在桌面或汽车内部,满足不同场景下的功能需求;利用云服务,能够根据实际需求动态提供可用性和可扩展性,以满足高强度测试时的计算需求;虚拟硬件则为用户提供了在当前无法获取,甚至尚未实际存在的硬件上部署软件的可能性,极大地拓展了软件的应用范围与创新空间。
为了充分激发 SOAFEE 成员的创造力,蓝图的描述设计得简洁而通用,旨在避免任何不必要的限制,鼓励成员按照自己的想法自由创建蓝图。若想深入了解更多关于蓝图的详细信息,可访问 SOAFEE 的 GitLab 网站(gitlab.com/SOAFEE-blueprints)。
Autoware Open AD Kit 蓝图
Autoware Open AD Kit 介绍
Autoware Open AD Kit 蓝图作为首个落地的蓝图,其开发历程充满挑战,但如今已取得了显著的成果。Open AD Kit 由 Autoware Foundation 主导开发,相关工作在 Open ADKit 工作组中有序推进。该项目的核心目标是将软件定义的先进最佳实践引入开源自动驾驶软件栈 Autoware,具体措施包括引入云原生开发和现代化生产方法,以提升软件的性能与可靠性。
Open AD Kit 的部署模型采用先进的微服务架构,具备广泛的适应性,能够支持云、边缘和虚拟硬件等多种运行环境。Autoware Open AD Kit 蓝图将 Open ADKit 工作组的输出应用工作负载,以多样化的方式进行部署,通过丰富的实际示例,生动展示了如何将 SOAFEE 关于软件定义车辆的愿景转化为现实。在架构的右上角,通常可以看到第三方应用程序,例如数据收集节点或更新服务,这些应用程序为整个系统提供了额外的功能扩展。工作负载可以根据实际需求,灵活部署在 Linux 环境的容器中,或者其他适配的环境中,这种灵活性为用户提供了更多的选择与便利。
Autoware Open AD Kit 蓝图版本
目前,Autoware Open AD Kit 蓝图有多个版本正在同步开发中。其中 1.0 版本基于 Autoware Foundation 大约一年前发布的 Open ADKit 1.0 版本构建。自发布以来,该版本已经取得了许多重要进展,后续 Christian 将在研讨会上进一步详细介绍。Open AD Kit 1.0 版本基于 Autoware 的四个核心功能:地图、感知、规划和车辆接口,运行在 Ava 开发者平台的 ewo 上。通过以太网连接的 Linux 机器,运行着 Arvis(可视化工具)和 Scenario Simulator(模拟工具),用于全面测试 Open AD Kit 软件栈的性能与稳定性。同时,1.1 和 1.2 版本也在持续开发中,这两个版本对部署方式进行了优化改进,但都保留了容器技术,以确保软件的高效运行与灵活扩展。
Edge Workload Abstraction and Orchestration Layer(EWAOL)
EWAOL 概述
Edge Workload Abstraction and Orchestration Layer(缩写为 EWAOL)作为 SOAFEE Linux 参考实现,具备强大的功能,能够有效实现 SOAFEE 所设想的软件部署方式,即采用先进的容器化和虚拟化技术,提升软件部署的效率与灵活性。
EWAOL 组成部分
EWAOL 由多个关键部分协同组成。其中,Docker 作为用于运行容器的容器引擎,为容器的高效运行提供了基础支持;k3s 是用于容器编排的轻量级 Kubernetes 发行版,能够实现容器的智能调度与管理;Send 是用于硬件虚拟化的 1 型管理程序,为硬件资源的虚拟化提供了技术保障。EWAOL 是使用 Octo 项目精心构建的自定义 Linux 发行版,通过开源存储库 meta - ewall 提供。该存储库位于 SOAFEE GitLab 下,具体路径为gitlab.com/SOAFEE,其中有一个名为 ewall 的文件夹,meta - ewall 就托管在此处,方便用户获取与使用。
EWAOL 部署方式
EWAOL 提供了两种完全不同的构建与部署方式。一是裸机方式,即 EWAOL 直接在硬件上运行,应用工作负载以容器形式运行,这种方式能够充分发挥硬件的性能优势;二是虚拟化方式,即可以部署运行应用工作负载容器的虚拟机,为用户提供了更加灵活的部署选择。需要注意的是,这些容器化的应用工作负载不属于 EWAOL 本身,用户可以根据自身需求自行提供容器,实现个性化的应用部署。Octo 项目的优势之一是其独特的层模型开发方法,这是实现定制化的关键技术,使用户能够根据自身的具体需求,对 EWAOL 进行深度修改与优化。
EWAOL 在硬件上的部署
在当前的蓝图中,EWAOL 部署在边缘的 Ava 开发者平台上。此前,EWAOL 也已在云环境和 AWS Graviton 实例上进行过成功部署,但尚未在该蓝图中完全实现。通过在 Ava 开发者平台上部署 EWAOL,可以在云和边缘实现运行时的高度一致性,这一成果得益于 Octo 项目的先进技术,以及硬件供应商对标准空间固件的广泛认同和积极实施。我们选用 EWAOL 的裸机版本,因为它便于在 Ava 和云环境中进行部署,能够有效提升部署效率。AWS 拥有多种 Graviton 版本,如 C60(基于 Neoverse N1 核心,与 Ava 开发者平台的核心相同)、G5G(新版本,支持 GPU,为图形处理提供强大支持)和 C7G(最新版本,基于 Neoverse V1 核心,具有额外的向量能力,向量引擎比 N1 更大,计算性能更强劲)。在蓝图中使用的 Ava 开发者平台采用 Amper 的芯片,配备 Neoverse N1 CPU,类似桌面开发机器,带有用于加速的 PCIe 插槽,这种硬件配置非常适合进行原型开发,能够快速验证技术方案的可行性。
Autoware 项目
Autoware 项目概述
Autoware 是由 Autoware Foundation 管理的重要开源项目,它是基于 ROS2 构建的完整自动驾驶软件栈,采用 Apache 2.0 框架进行开源许可。其架构具有高度的模块化特点,自动驾驶栈的不同组件,如感知、规划、控制等,都是定义明确的独立模块,基于 ROS2 构建 API,这种架构设计使得 Autoware 非常适合采用微服务架构,便于进行功能扩展与优化。
Autoware 应用示例
Autoware 凭借其强大的功能和灵活的架构,已成功集成到多种类型的车辆中。目前,全球已有数百个项目在使用 Autoware,涵盖小型移动服务班车、全尺寸巴士、乘用车等各种车辆配置。Autoware 的显著优势在于其模块化、可适应性和可集成性。它能够根据车辆运行的特定环境,灵活修改不同模块的功能,以满足不同场景下的自动驾驶需求。这种强大的适应性使得 Autoware 能够被广泛应用到众多不同的车辆配置中,并在全球不同的运营设计领域进行部署,为自动驾驶技术的普及与发展做出了重要贡献。
Autoware - Open AD Kit 介绍
Open AD Kit 是 Autoware 开源项目的另一个重要组成部分,它汇聚了 Autoware Foundation 的多个联盟合作伙伴,包括 Autoware Foundation、SOAFEE、e - sync 和 mih。其基本思路是将 Autoware 栈部署在 SOAFEE EWAOL 框架之上,通过与 e - sync 合作,将其服务作为框架内的另一个工作负载应用程序,实现对 Autoware 应用的高效管理和更新。在 mih 方面,重点是定义开放 V 平台,明确 EEA(电子电气架构)的规范,以及 ADAS(高级驾驶辅助系统)应用软件与车辆其他组件,如传感器、中央网关、控制平面、数据平面功能、信息娱乐系统等的接口。这些 API 在 mih 工作组中经过深入研究与讨论后定义,并作为 Autoware 栈的一部分进行实现,使得公司可以将 Open AD Kit 作为现成的解决方案,用于快速实现 mih 规范,降低开发成本与周期。
Autoware - Open AD Kit 架构
当前,Open AD Kit 已发布 1.0 框架。在这个版本中,将 Autoware 实现为 EWAOL 之上的容器,并与 e - sync OTA 代理集成作为框架内的另一个应用程序。同时,成功展示了在 AWS Graviton 实例(云环境)和 Ava 开发者平台(边缘环境)上运行该框架的 ISO 级别一致性。然而,目前这还不是真正意义上的微服务架构,整个 Autoware 应用在一个容器中运行,在实现 SOAFEE 中汽车工作负载作为微服务应用的真正愿景方面,仍有大量的工作需要持续推进。
Autoware - Open AD Kit 未来发展
未来的工作重点是将 Autoware 的各个模块拆分成单独的容器,并在 EWAOL 框架上实现,以构建更加灵活、高效的微服务架构。同时,引入 SOAFEE 未来版本中关于管理程序和硬件抽象层的功能,以便在异构计算平台上进行构建。这些平台将包含安全岛,即安全能力的 MCU 与高计算解决方案,如 GPU、CPU 和用于感知和定位功能的专用加速逻辑集成在一起,使这一切成为 Open AD Kit 框架的有机组成部分。在未来几个月,Autoware Foundation 将展示更多关于在 SOAFEE 上实现这一目标的详细计划,为行业发展指明方向。
Autoware - Open AD Kit 云边架构
Open AD Kit 框架的另一个重要方面是云原生开发,即提供在云中使用该架构进行应用开发和验证的能力。为此,基金会正在全面研究所需的各种工具和能力,包括从车辆收集数据并上传到云,对数据进行机器学习操作和开发操作,如开发注释工具、构建各种模拟场景以验证应用栈及其功能。同时,提供各种模拟工具,如云或测试台上的硬件在环模拟工具,如场景模拟器、传感器模拟器套件、完整栈的端到端模拟器等。在云中完成验证后,通过添加 e - sync 客户端服务实现 OTA 能力,对车辆进行更新,然后开始新一轮的数据收集、上传和新功能验证,形成一个持续优化的闭环。
本次 SOAFEE 技术研讨会对汽车软件定义及自动驾驶技术的深入探讨,为行业发展提供了丰富的技术思路和实践方向。相信在这些先进技术的推动下,汽车行业将朝着智能化、软件定义化的方向加速迈进。 期待未来 Autoware Foundation 和相关合作伙伴能够在这些技术的基础上,不断创新和突破,为我们带来更加智能、安全、便捷的出行体验。
相关文章:

SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨
在本次技术研讨会上,来自汽车与科技领域的专家们围绕汽车软件定义及自动驾驶技术展开了深入交流与探讨。从 SOAFEE 蓝图计划的创新性理念,到 Autoware 开源项目及 Open AD Kit 在实际应用中的探索,再到 Edge Workload Abstraction and Orches…...

R语言学习笔记之开发环境配置
一、概要 整个安装过程及遇到的问题记录 操作步骤备注(包含遇到的问题)1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖,试错逐步下载并安装…...

多版本并发控制:MVCC的作用和基本原理
多版本并发控制:MVCC的作用和基本原理 1、MVCC简介1.1 快照读与当前读的区别1.1.1 快照读1.1.2 当前读 1.2 数据库的读写问题1.3 MVCC的作用 2、MVCC实现原理之ReadView2.1 什么是ReadView2.2 ReadView的设计思路2.3 MVCC整体操作流程 1、MVCC简介 1.1 快照读与当前…...

ubuntu18.04安装nvm管理本机node和npm
ubuntu18.04安装nvm管理本机node和npm nvm的使用方法1. 安装nvm2. 加载nvm3. 安装执行版本4. 设置默认版本(可选)5. 检查:6. 将配置加入到shell配置文件中(默认已经加入) 如果系统全局的 Node.js 存在,但被 nvm 覆盖了,可以通过禁用或卸载 nvm 恢复到系统…...

【数据结构进阶】红黑树超详解 + 实现(附源码)
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、红黑树介绍 二、红黑树原理详解 三、红黑树的实现 1. 节点定义 2. 红黑树类型定义及接口声明 3. 红黑树的插入(重点&a…...

leetcode_3092. 最高频率的 ID
https://leetcode.cn/problems/most-frequent-ids/description/ 看到这个数据范围 最极端情况 如果nums全为一个数 并且数量取到最大 那么范围是10的10次方 需要longlong储存 这题主要运用了哈希表配合multiset实现 哈希表主要用作存储某个数的出现次数 mst则用于记录出现次…...

鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)
目录 1)仓颉的SDK下载 1--进入仓颉的官网 2--点击图片中的下载按钮 3--在新跳转的页面点击即刻下载 4--下载 5--找到你们自己下载好的地方 6--解压软件 2)仓颉编程环境配置 1--找到自己的根目录 2--进入命令行窗口 3--输入 envsetup.bat 4--验证是否安…...

数据统计–图形报表(day11)
Apache ECharts 介绍 Apache ECharts 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 入门案例 Apache Echarts官方…...

源码分析之Openlayers样式篇CircleStyle类
访问Openlayers网站(https://jinuss.github.io/Openlayers_map_pages/,网站是基于Vue3 Openlayers,里面有大量的实践和案例。觉得还不错,可以 给个小星星Star,鼓励一波 https://github.com/Jinuss/OpenlayersMap哦~ 概述 在 Ope…...

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题
操作系统:CentOS 9 Zabbix版本:Zabbix7.2 问题描述:主机图形中文字符乱码 解决方案: # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体: fc-list :lan…...

AF3 FourierEmbedding类源码解读
FourierEmbedding 是一个用于扩散条件的傅里叶嵌入类,其核心是将输入的时间步噪声强度或控制参数(timestep)转换为高维的周期性特征。 源代码: class FourierEmbedding(nn.Module):"""Fourier embedding for diffusion conditioning."""de…...

vsftpd虚拟用户部署
vsftpd虚拟用户部署 案例提供两个用户如下,使用centos7验证可行。 test *AO9ih&7 ftp DTx4zp_shell脚本运行一键安装vsftp #!/bin/bash yum -y install vsftpd ftp >/etc/vsftpd/vsftpd.conf cat <<EOL >> /etc/vsftpd/vsftpd.conf anonymous_enableNO l…...

MySQL 容器已经停止(但仍然存在),但希望重新启动它,并使它的 3306 端口映射到宿主机的 3306 端口是不可行的
重新启动容器并映射端口是不行的 由于你已经有一个名为 mysql-container 的 MySQL 容器,你可以使用 docker start 启动它。想要让3306 端口映射到宿主机是不行的,实际上,端口映射是在容器启动时指定的。你无法在容器已经创建的情况下直接修改…...

汇编实验·顺序程序设计
一、实验目的: 1.能够熟练的进行顺序程序的编写,掌握基本的汇编语言指令的用法 2.通过程序设计理解掌握不同类型的数据混合运算的基本规则 3.熟练掌握各种寻址方式,深入理解逻辑地址和物理地址的相关概念 二、实验内容 有三个长度分别为1、2、4个字节的数据,编写程序求…...

AIGC视频扩散模型新星:Video 版本的SD模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓,而慕尼黑大学同样不容小觑,…...

HarmonyOS:通过(SQLite)关系型数据库实现数据持久化
一、场景介绍 关系型数据库基于SQLite组件,适用于存储包含复杂关系数据的场景,比如一个班级的学生信息,需要包括姓名、学号、各科成绩等,又或者公司的雇员信息,需要包括姓名、工号、职位等,由于数据之间有较…...

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析
10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析 文章目录 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析1. 规则持久化1.1 Nacos Server 配置中心-规则持久化实例 2. 最后: 1. 规则持久化 规则没有持久化的问题 如果 sentinel 流控规则没有…...

STM32更新程序OTA
STM32的OTA(Over-The-Air)更新程序是一种通过无线通信方式,为设备分发新软件、配置甚至更新加密密钥的技术。以下是关于STM32 OTA更新程序的详细介绍: 一、OTA升级流程 STM32的OTA升级流程通常包括以下几个关键步骤:…...

MarsCode青训营打卡Day10(2025年1月23日)|稀土掘金-147.寻找独一无二的糖葫芦串、119.游戏队友搜索
资源引用: 147.寻找独一无二的糖葫芦串 119.游戏队友搜索 今日小记: 回乡聚会陪家人,休息一天~ 稀土掘金-147.寻找独一无二的糖葫芦串(147.寻找独一无二的糖葫芦串) 题目分析: 给定n个长度为m的字符串表…...

vue(33) : 安装组件出错解决
1. request to https://registry.npm.taobao.org/semver/download/semver-6.1.1.tgz?cache0&other_urlshttps%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.1.1.tgz failed, reason: certificate has expired 这个错误提示表明你在尝试从https://reg…...

ChatGPT结合Excel辅助学术数据分析详细步骤分享!
目录 一.Excel在学术论文中的作用✔ 二.Excel的提示词✔ 三. 编写 Excel 命令 四. 编写宏 五. 执行复杂的任务 六. 将 ChatGPT 变成有用的 Excel 助手 一.Excel在学术论文中的作用✔ Excel作为一种广泛使用的电子表格软件,在学术论文中可以发挥多种重要作用&a…...

stm32f103 单片机(一)第一个工程
先看一个简单的 系统上已经安装好了keil5 与ARM包,也下载好了STM32固件库 新建一个工程,添加三个组 加入如下文件 在options 里作如下配置 准备在main.c 中写下第一个实验,点亮一个小灯。 像51单片机一样直接对引脚赋值是行不通的 在…...

云计算和服务器
一、云计算概述 ICT是世界电信协会在2001年的全球性会议上提出的综合性概念,ICT分为IT和CT,IT(information technology)信息技术,负责对数据生命周期的管理;CT(communication technology),负责数据的传输管理。 CT技术…...

Spring 框架:配置缓存管理器、注解参数与过期时间
在 Spring 框架中,可通过多种方式配置缓存具体行为,常见配置方法如下。 1. 缓存管理器(CacheManager)配置 基于内存的缓存管理器配置(以SimpleCacheManager为例) SimpleCacheManager 是 Spring 提供的简单…...

Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
ℹ️大家好,我是练小杰,今天周四了,距离除夕只有4天了,各位今年卫生都搞完了吗!😆 本文是接着昨天Linux 系统C/C编程的知识继续讲,基于Qt的图形用户界面编程概念及其命令,后续会不断…...

并发编程 - 线程同步(一)
经过前面对线程的尝试使用,我们对线程的了解又进一步加深了。今天我们继续来深入学习线程的新知识 —— 线程同步。 01、什么是线程同步 线程同步是指在多线程环境下,确保多个线程在同时使用共享资源时不会发生冲突或数据不一致问题的技术,保…...

PyTorch入门 - 为什么选择PyTorch?
PyTorch入门 - 为什么选择PyTorch? Entry to PyTorch - Why PyTorch? by JacksonML $ pip install pytorch安装完毕后,可以使用以下命令,导入第三方库。 $ import pytorch...

leetcode刷题记录(八十六)——84. 柱状图中最大的矩形
(一)问题描述 84. 柱状图中最大的矩形 - 力扣(LeetCode)84. 柱状图中最大的矩形 - 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾…...

Android GLSurfaceView 覆盖其它控件问题 (RK平台)
平台 涉及主控: RK3566 Android: 11/13 问题 在使用GLSurfaceView播放视频的过程中, 增加了一个播放控制面板, 覆盖在视频上方. 默认隐藏setVisibility(View.INVISIBLE);点击屏幕再显示出来. 然而, 在RK3566上这个简单的功能却无法正常工作. 通过缩小视频窗口可以看到, 实际…...

开源鸿蒙开发者社区记录
lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛...