Richard Lin

Qt Automotive Suite 5.13汽车开发套件发布

Published 星期五 八月 9th, 2019
Comments Off on Qt Automotive Suite 5.13汽车开发套件发布
Posted in qt-blogs-chinese, qt-labs-chinese, qt-quarterly-chinese, qtearth-blogs-chinese, 嵌入式 | Tags: , ,

本文翻译自:Announcing the Qt Automotive Suite 5.13

原文作者:Miao Luo

翻译校审:Weijun Li、Elbert DUAN

很高兴,Qt Automotive Suite 最新的5.13版本发布了,该套件包含完整的HMI工具链和框架,主要用于下一代数字座舱开发。

三年前,我们推出了Qt Automotive Suite,以解决汽车行业在数字座舱人机界面开发中遇到的主要挑战[1][2][3]。Qt汽车套件融合了世界一流的工具和汽车专用的HMI组件,并针对Qt在嵌入式设备的应用进行了优化,最终实现只需通过一个平台就能提供独有的、完整的、端到端的人机界面解决方案。

在此版本中,我们将重点放在几个选定的领域,以改进和扩展产品。在市场上,我们会持续不断地看到越来越多的全球顶级车厂和一级供应商使用我们的技术。如果一切顺利,最快在2020年就会有搭载Qt汽车套件的量产车上市。

基础

Qt汽车套件5.13是以最新的Qt 5.13和其嵌入式产品—Qt Device Creation为基础开发的。在Qt 5.13中,我们做了很多改进,包括加入新功能,更新已有功能,修复缺陷等。更多有关信息,请参考官方发布公告:https://blog.qt.io/blog/2019/06/19/qt-5-13-released/

我们还改进了工具,以提升设计人员和开发人员在使用Qt进行设计、开发和配置时的工作效率。其中包括在Automotive Suite 2.4版本添加Qt 3D Studio和其Runtime组件

下面是一个完整3D仪表的例子,向您展示了Qt 3D Studio的能力:

e399f866707281-5b3e093981ba1

Silli Solution利用Qt 3D Studio构建的汽车数字仪表盘 (For more details)

组件

我们的UI参考设计,Neptune 3 UI ,现在可以使用Qt 3D Studio及其包含的Runtime来呈现3D内容。在实现方式上,默认采用Qt3D, 同时也支持用户在Qt 3D Studio Runtime和Qt3D之间任意切换。这个新场景直接从Qt 3D Studio项目载入资源,可以简化因设计人员变更设计方案时增加的整合工作。该实现仍然支持现有的“远程控制”功能,通过简单的QML语句来移动3D场景中的一些对象,如控制车门、天窗和3D车模的行李箱等。此外,用户界面的所有应用程序接口都已保留。

我们优化了3D车模,以改善其加载时间。为了最好地发挥硬件的能力,可以在三种不同的复杂度之间进行模型切换。在车辆应用程序的新“3D选项”面板中提供了这些新开关的UI控件。

我们的3D部分不止这些!除了现有的2D仪表,Neptune 3 UI主题中的仪表现在也可以使用Qt 3D Studio runtime来运行主题中已有的、用Qt 3D Studio设计的内容。您还可以在2D和3D之间进行切换。

qt-auto-cluster-animated

针对全新的3D仪表和3D车模,还可以在“常规设置”界面下根据自己的喜好变换不同颜色组合。

3d_runtime_selection_in_neptune

3D runtime的选项:Qt 3D或Qt 3D Studio

qt-auto-central-stack-animated

所有应用程序都随着System UI中主题颜色的变化而变化

仪表UI现在已集成Qt Safe Renderer功能,主要用于开发过程,因此我们在这些用例中可以使用一些“技巧”来提高开发人员的工作效率——即使用户使用不带安全渲染的标准硬件也可以采用这些方法。在桌面端,我们使用一个单独的应用程序,并在程序最上层窗口用Qt safe renderer进行内容渲染。我们把仪表窗口放在该窗口之上。如果Neptune 3 UI进程停止或崩溃, Qt Safe Renderer 窗口保留在桌面上,从新开发的Vehicle Data服务程序中获取数据,并继续进行渲染。在嵌入式目标设备上,如果作为主用户界面的Neptune 3 UI停止工作,我们会使用Qt Safe Renderer 1.1创建一个单独的进程继续进行渲染。

我们改进了汽车和嵌入式设备中的、在多个进程中运行的单独应用的HMI开发。在此版本中,我们改进了Neptune 3 UI应用程序的安装过程。随着应用程序不再保存在临时文件夹中,它现在也采用了新的配置方式。在系统对话框中,应用程序控件已可以提供生命周期状态的控制和设置。现在我们就可以定义哪些应用程序应该在开机时自动启动,哪些应用程序应该在崩溃并停止运行时重新启动。

neptune_apps

System UI Apps设置

如果您查看应用程序列表,您可能会注意到现在大多数Neptune 3 UI 都是由独立的应用程序组成。你可以在必要的时候关闭它们。最重要的是,这一改进使您能够各自独立完成各部分的开发和测试,还能实现跨团队协同开发。

在上个版本中,我们引入了用户界面工具(UI harness),而在这个版本中,我们给Neptune 3 UI加入了新的包装器,使得开发人员可以直接从Qt Creator运行UI hardness;您也可以单独运行这些包装器。有两个工具(harnesses)可供参考:一个是仪表工具一个是车辆工具。如果运行仪表工具,在QML Live可用的时候,它将在QML Live中独立启动仪表;在QML Live无法使用时,仪表将使用“qmlscene”运行。 在Qt框架下,基于和Neptune 3 UI完整运行时同样的代码,我们借用该工具,可以分离出Neptune 3 UI 中的部分程序并单独运行。

前面我们提到了新的车辆数据服务。在这个版本中,我们在旧的远程设置服务器的基础上引入了额外的进程外服务。这一改进对中间件基础架构很重要,使其现在更适合进程外服务的使用。

Neptune 3 UI 运行时,仪表显示的模拟数值可以自行变换。这个功能在Demo制作中很好用,在日常开发中也很实用。它能够帮助HMI开发人员测试在不同状态下的业务逻辑运行情况。整个模拟过程通过在上个版本的Qt IVI中添加的模拟引擎来实现。和Neptune 3 UI一样,这个模拟过程也是用QML写的。车辆数据服务在整个架构中实际上是一个完全自动生成的模拟服务器,它以中间件服务的形式、通过同样的API接口给HMI层提供数据。通过这套基于QML代码的程序,可以模拟多种现实用例的业务逻辑,促进早期样机或者其他阶段的HMI开发。

Qt IVI中的模拟引擎已经可以支持新的中间件基础框架,包括可以Qt Remote Objects作为传输层使用。结合自动生成的代码,在新的中间件基础框架上,用户可以专注于HMI开发,而无需对再去关注中间件的开发。

在中间件基础框架改进中,我们还修改了配套应用程序。这个程序最初是为测试而开发的,现在已经成为Neptune 3 UI中的一个新应用。它可以实现同一app在移动设备上运行并直接连接到抬头显示设备上,这种应用现在在汽车领域非常普遍。同时,我们改进了该程序的UI,使其更接近实际的用户场景。

qt-auto-companion-animated

配套移动App

配套应用程序采用和Neptune 3 UI一样的API接口来连接中间件。他们共享API和后端插件,这样可以节省开发时间和工作量。

最后,还有一点比较重要:Neptune 3 UI 现在使用Intent Management程序(在上个版本中Qt Application Manager的新功能),可以实现在调谐器和媒体播放器之间进行音源切换。

工具

我们已经发布Qt应用监控工具GammaRay的2.11.0版本,可以允许您在程序运行过程中实时监控其内部Qt代码的行为和数据结构。
GammaRay 2.11.0包括一个新的Qt事件处理检查工具,可以深入观察应用程序的内部工作。除了分析事件及其发生时的属性之外,事件监视器还可用于Qt Quick或Qt Widgets的输入处理,能够图形显示输入处理中事件的传播过程。

gammaray-event-monitor-log

此外,事件监视器现在提供了关于各类型事件发生频率的统计数据,知此恨根据您的兴趣进行事件的精细筛选,可以支持海量数据处理。

gammaray-event-monitor-types

一个主要的新功能是网络操作检查器,它允许您观察由QNetworkAccessManager触发的HTTP运行过程,并帮助您优化网络交互、识别可能已泄漏的QNetworkReply对象,以及确保所有操作都已加密。

gammaray-network-operations-monitor

GammaRay 2.11.0现在支持更多的数据类型,比如用作问题报告器线程关联检查的QJson*类,以及兼容最新Qt 5.13的数据类型。在其他看不到的地方,我们还对程序做了一些性能改进,尤其是提升了GammaRay检查大型和/或繁忙应用程序时的响应能力。

QML Live是本地和远程Qt Quick实时重装系统,允许您更改QML用户界面源代码并实时查看结果。

qml_live

运行中的QML Live

在这个版本中,QML Live有一个本质上的改变,就是可以支持多进程渲染,能够允许您启动多个runtime来观察多个上层HMI视图的变化。

我们还将积极开发用于Qt Application Manager的Qt Creator插件。除了内部改进之外,我们也简化了插件的UI并做了一些自动化处理,旨在减少配置步骤。

文档

在这个版本中,我们投入了大量的精力来改进和重写大部分文档。我们试图着重解释我们的核心开发概念和方法,以期能够帮助新用户全面掌握软件知识点并尽量减少阅读文档所带来的理解偏差: https://doc.qt.io/QtAutomotiveSuite/index.html。

展望未来

我们希望在未来能够:添加实体按键导航,实现对语音助理的基本支持,支持后台应用服务,捆绑软件包,把分发服务集成到Qt Creator的工作流中,并从源代码仓库自动生成分发应用程序。
此外,我们会继续改进对单SoC、多系统架构的支持,包括webOS, Android Automotive OS, AGL, GENIVI,并在上层实现跨系统交互。

cockpit_design_siili

Siili Solution公司的数字座舱

总结

我们的目标是:发挥Qt的力量,让用户能够更加简单方便地开发出极致的UX体验。随着Qt汽车套件5.13的推出,我们朝这个目标更近了一步。我们希望帮助客户将他们的愿景和概念转化为能最终搭载在实车上的、消费者可以随处体验到的HMI。

有一天,你可能会发现下一代带有酷炫HMI的样机是用Qt做的。

e-legend-interior-banner-455778-18

Peugeot(标志) 概念车型e-Legend数字座舱

最后,非常感谢我们的合作伙伴KDAB和Luxoft在产品开发中的精诚合作以及他们做出的贡献,也非常感谢已有客户和潜在客户持续不断的意见反馈和畅所欲言的讨论。

如果您对Qt汽车套件有任何疑问,请随时联系我们

 

Posted in qt-blogs-chinese, qt-labs-chinese, qt-quarterly-chinese, qtearth-blogs-chinese, 嵌入式 | Tags: , ,

Get started today with Qt Download now