一文讲解Android车载系统camera架构 - EVS

2024-04-29 08:36

本文主要是介绍一文讲解Android车载系统camera架构 - EVS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android的camera开发中,使用最多的是camera2 以及现在Google主推的cameraX 架构,而这两个架构主要针对的是手机移动端上camera的流程。

而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构,针对Automotive的版本,也就是Android为车载开发的camera架构

图片

参考:https://source.android.google.cn/docs/devices/automotive/camera-hal?hl=zh-cn

更多技术文章,全网首发公众号 “极客钛” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

1.EVS概述 

EVS(Exterior View System),可以见名知义,EVS的使用场景是针对汽车外景系统,具体表现就是倒车影像,360全景这类影像系统。

图片

借鉴官方文档上的架构图,EVS主要分为四个部分:EVS APP、EVS Manager与EVS HAL,Vehicle HAL

图片

1.1 EVS APP 

在EVS APP中,最重要的任务就是通过EVS Manager拿到底层HAL传递的Camera数据,不过原生的EVS APP实现其实是相当不完善的,在Android12中仅支持简单的图像预览

APP的基本流程如图。

图片

枚举底层配置video设备节点,对video设备所支持的格式进行判断,最后符合条件的,会将device放入到sCameraList中。

在需要使用Vehicle HAL的前提下,连接Vehicle HAL,订阅车辆挡位信息与转向灯信息,当数据变化时通过listener回调处理。

开启EvsStateControl状态更新线程,在该线程内根据外部输入调整EVS APP的运行状态以及实现具体的图像绘制。

源码位置 /packages/services/Car/cpp/evs/apps/default

参考:

https://s.deepinout.com/android-14.0.0_r2/xref/packages/services/Car/cpp/evs/apps/default/

1.2 EVS Manager

EVS Manager作为中间嵌套的一层,为APP提供接入EVS HAL的接口。

EVS Manager实现与底层 HAL 驱动程序相同的 API,并通过支持多个并发客户端来提供扩展服务(多个客户端可以通过 EVS 管理器打开相机并接收视频流)。

图片

同时实现对两个重要抽象对象(EVS Camera与EVS Display)的集中管理,此外还提供了额外的诸如权限管理,诊断功能等。

EVS Manager本质上是对HAL接口的一层封装,只不过在此基础上增加了一些其他东西。比如数据统计、诊断相关以及对虚拟Camera设备的支持等。

源码位于packages/services/Car/cpp/evs/manager

参考:

https://s.deepinout.com/android-14.0.0_r2/xref/packages/services/Car/cpp/evs/manager/

1.3 EVS HAL

EVS HAL作为硬件抽象层的具体实现,将与内核驱动进行交互,获取具体摄像头数据。在这一层将会实现两个重要的抽象对象:EVS Camera与EVS Display。

EVS HAL作为隔离用户态程序(EVS APP)与底层驱动(Camera Driver)的HAL实现,是OEM产商最为关注的部分。这部分也是原生EVS架构中最为复杂的部分。

EVS HAL存在两个版本,即1.0版本与1.1版本。关于两个版本的具体差异,我们可以大致看一下HIDL接口上的差异。

从文件上来讲,在1.1中多了IEvsUltrasonicsArray.hal与IEvsUltrasonicsArrayStream.hal两个文件。

图片

这两个文件中定义的接口其实是为摄像头上可能存在的超声波Sensor提供相应的API,这部分新增的内容可能是为了未来的自动驾驶做考虑。

其源码路径位于/hardware/interfaces/automotive/evs目录。

参考:

https://s.deepinout.com/android-14.0.0_r2/xref/hardware/interfaces/automotive/evs/

1.4 Vehicle HAL

Vehicle HAL是整体Android Automotive版本中对外(与汽车其他控制器)沟通的桥梁。

一般而言Vehicle向下会接入CAN/Uart/Ethernet实现对外通信,向上接入CarService,服务于Java Framework,当然Native Framework也是可以接入的。

Vehicle HAL的接口定义与默认实现位于hardware/interfaces/automotive/vehicle/2.0目录。

参考:

https://s.deepinout.com/android-14.0.0_r2/xref/hardware/interfaces/automotive/vehicle/2.0/

2.EVS与camera2 的区别

控制难易程度 

EVS架构一般针对车外摄像头。车外摄像头的位置都是固定的,且都属于鱼眼视角,其他参数上也较为固定。

因此也注定了在EVS架构中,系统对摄像头的控制是比较少的

而camera2 本身是用于手机camera相关的控制上,或者可以用于车内中IMS(座舱检测系统)、DMS(驾驶员监测系统)等系统,camera需要更加灵活的调节方法与参数设定。

图片

因此,Camera2提供了丰富的API可以实现对摄像头的多项控制,如闪光,3A控制等。

启动时机 

EVS 在使用场景下一般都需要快速的启动,不能依赖太多的Android上层的service,开机启动一般不能超过2s

图片

如果基于手机端的Android启动方式,过于依赖Android native service,而这部分往往会耗时更多,导致整个启动后显示、使用都过于迟缓。

EVS具有更快的响应,更快的启动,以及更低的延时,这才是车载系统中最需要的部分。

例如,在汽车启动的时候,用户就需要开启倒车,整个系统的启动不能依赖Android JVM启动之后再启动APP,使用Native来实现的EVS由此应运而生。

开发难度 

Camera2在Java Framework层提供了丰富的API支持(CameraManager),使得开发者可以快速开发自己的应用。

图片

而EVS则需要开发者自己去构建诸如Input管理,View子系统等,也需要使用OpenGL ES的API去进行图像绘制,开发难度相对较大。

并且市面上关于camera2的架构以及开发的示例更多,关于EVS架构的分析是比较少的,本文也是对EVS进行一个基本的介绍分析。

综上,关于EVS 相关的软件架构到此结束,后续将会针对camera使用的细节进行分析。

感兴趣的同学也可以一起研究学习,并且帮忙指正文章中描述有误的地方,共同学习进步。

这篇关于一文讲解Android车载系统camera架构 - EVS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945609

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、