Back to Blog home

详解Qt Automotive Suite 2.0

Published on 星期四 四月 19, 2018 by Liang Qi in Automotive Biz Circuit Biz Circuit & Dev Loop Functional Safety qt-blogs-chinese | Comments

原文链接:罗淼 - Introducing Qt Automotive Suite 2.0

(译者:Richard Lin)

2月底,我们非常高兴地宣布Qt Automotive Suite 2.0正式发布,这是一次重大飞跃,为数字座舱提供了统一的人机界面(HMI)工具链和开发框架。

几年前,我们就看到该行业所面临的诸多挑战。首先,随着车内屏幕数量的不断增加,如何在保持品牌独特性的同时,在多个显示屏上创建并维系一致的数字用户体验无疑困难重重。这是为什么呢?因为要完美实现数字座舱中集成的数字用户体验,用户界面/用户体验设计仅仅是一个开始。在整车厂提出设计规范后,供应商通常会使用不同的软件工具、技术来开发仪表盘和中控面板(又名IVI或Infotainment)。因此我们不可避免需要优化HMI,确保每个屏幕上的数字用户体验相一致。

我们遇到的另一个挑战是,不同项目或客户间的代码复用率非常低。代码复用率的问题在开发中控面板中尤为突出。在开发中控面板的HMI过程中,诸多重复工作会严重降低工作效率。低复用率会导致行业无法实现快速创新,也不利于打造独特的HMI,开发周期过长且成本高昂。

我们遇到的第三个挑战是,传统的中控面板HMI是单体式,这意味着包括暖通空调(HVAC)控制、媒体播放、收音机在内的所有功能都被封装到单个软件中。这不仅可能引发开发错误,还会导致各个功能之间相互干扰。若其中某个功能崩溃,整个中控面板就要重启。这给HMI开发和维护带来了很多麻烦——很难将这些功能分解为更小的子项目并行开发,单一代码库也极难维护。当然,当某个功能需要更新时,整个中控面板也必须重建和重装。

通过与LuxsoftKDAB的战略合作,我们成功解决了上述问题,并于2016年发布了Qt Automotive Suite 1.0。我们为数字座舱开发了全球首个统一的HMI工具链和框架。

现在我们非常高兴地与大家分享,Qt Automotive Suite已被全球主要整车厂广泛采用,越来越多的客户正从传统的规格编写和编程外包转向自主设计和开发HMI。我们非常高兴地看到,市场转变的方向与我们的愿景相一致,这也证明了QtAutomotive Suite是最合适的解决方案。最重要的是,未来几年内我们将看到数百万辆用Qt Automotive Suite开发的汽车。

那么,Qt Automotive Suite 2.0都包含了哪些功能呢?

图1 Qt Automotive Suite 2.0
图1 Qt Automotive Suite 2.0

Qt Automotive Suite 2.0希望为设计师和软件开发者提供一套易于使用的工具,帮他们快速创建卓越的数字座舱。在介绍其中的关键特性前,让我们先来看一下用该解决方案打造的一个数字座舱参考用例,请点击视频

Qt for Device Creation

由于客户使用Qt Automotive Suite进行产品开发,我们必须在功能集与稳定性之间做好平衡。基于Qt 5.9的Qt Automotive Suite 2.0在提供长期支持版本(LTS)的同时,还大幅改善了性能、增加了功能集。

Qt 3D Studio

我们认为,一个真正统一的HMI工具链和框架也应为设计师提供先进的UI创作工具。随着3D在HMI中的地位日益重要,我们认为需要开发一款可以快速构思、设计3D用户界面/用户体验的工具软件。为此,我们也在新解决方案中添加了Qt 3D Studio。

Qt Safe Renderer

功能安全是我们客户必须面对的一个关键问题。Qt Automotive Suite 2.0整合了Qt Safe Renderer套件,确保重要安全警示灯的渲染可靠性,并通过ISO 26262第6部分ASIL-B的规范认证。

Qt Application Manager

Qt Application Manager为车载信息娱乐系统提供了一个现代化、多进程的图形用户界面(GUI)架构。通过将HMI分成不同的功能单元(如暖通空调和导航分别为独立单元),Qt Application Manager允许多个团队同时独立开发和测试,从而降低项目风险,缩短开发周期。同时,将用户界面分成更小的应用程序也便于系统更新。由于只涉及小部分的代码,OTA升级包也会更小。

Qt Application Manager是一个没有UI的核心组件。除了管理应用程序,Qt Application Manager要启用一个Reference UI,它包含一个系统UI和一个含应用程序图标的主页。

在Qt Automotive Suite 2.0中,用户可以定制Qt Application Manager。这将极大提高灵活性,并使客户特定系统设置的集成更加便捷。套件中加入了全新扩展的系统监控API,当前还允许通过独立的应用程序监测资源的消耗情况。在启动过程中,新日志可对应用程序做更精细的跟踪和分析。我们还改进了单进程模式,允许在单进程设置中也可像多进程能设置一样运行QML-runtime应用程序。

后台还有诸多改进,请务必查阅最新的文档资料。

Qt Application Manager Plugin for Qt Creator

由于Qt Application Manager控制应用程序的生命周期,目前已经可以使用QtCreator直接启动应用程序。我们开发了一个特殊的插件,打包Qt Application Manager中的命令行工具,并将所有重要步骤集成到Qt Creator IDE中。在Qt Automotive Suite 2.0中,该插件基于通用Linux设备,未来它将可以直接使用Boot2Qt设备,来统一设置。

QtIVI

为提高代码复用性,QtIVI包含了一层标准化的API抽象层,用于解决Qt生态圈使用和扩展汽车专用API的问题。即使底层平台不同,上一代程序中开发的应用程序也可以在下一代中重复使用。随着整车厂加大对汽车HMI开发的控制,这一点变得尤为重要。减少重复工作意味着大幅节省成本,并更加注重品牌的独特用户体验。Qt AutomotiveSuite 2.0将与GENIVI及AGL等行业领先的方案良好整合,进一步为行业提升平台层面的代码复用率。

QtIVI的核心是建立一种开发模式,即面向接口编程,也就是上层应用开发和底层实现分离。对于同一个功能,可能会有许多底层实现方式,核心模块提供一种简易的方式支持查找相应的底层实现。

驱使我们使用此类分离的几种常用情况包括:

  • 早期开发中,UI可依赖一个最原始的后端实现功能。
  • 测试/模拟过程中,后端可脱离应用程序单独测试,应用程序可使用专门的测试后端完成测试。
  • 根据不同的硬件配置,目标系统中的某些部分可用模拟的后端代替,其他部分则使用真实的硬件集成。
  • 动态显示可用服务中,服务有时可用但不稳定,后端会随着时间的推移而逐渐成熟。

该模块为汽车功能提供了一套可扩展的参考API,可用于开发汽车应用,并以结构化的方式为基于Qt的应用程序提供汽车功能。

我们添加了一种使用接口定义语言(IDL)描述接口的方法,并基于此定义生成了Qt/QML API代码。我们使用了QFace IDL及其自动生成的通用框架库。除了将基于QFace的自动生成功能集成到QtIVI Core中之外,我们还迁移了基于IDL的天气和车辆设置API。

从接口定义中,工具生成QML和C ++ API,代码允许属性(即,值)被其他如GammaRay和Squish在内的工具查看和覆写,代码也可允许开发人员在没有真车测试的情况下观察并控制车辆数据值。这在调试和自动化测试中都非常适用。

图2:Qt IVI自动生成器架构
图2:Qt IVI自动生成器架构

灰色框是唯一需要客户实现的部分。可见部分(对终端用户而言)是使用车辆数据的应用程序。不可见部分是与车辆数据服务的通信,其通常是通过IPC进行通信的独立进程。

GammaRay

Qt Automotive Suite将GammaRay深度整合至QtCreator中,该程序允许对场景图和状态机等内部结构进行运行时自检、可视化和操作。此功能可提供运行中的系统状态,以对棘手问题进行诊断并了解内存使用情况。

我们的合作伙伴KDAB为AutomotiveSuite 2.0增加了新的纹理检测功能,改进了Qt Quick布局诊断,支持QML绑定分析,完成其他诸多改进。此外,GammaRay的性能也得到了改善,减少分析对目标应用程序的影响,提高远程视图的响应速度。更多细节请参阅GammaRay相关文档。

图3:GammaRay 可以识别资源浪费情况甚至提供修改建议
图3:GammaRay 可以识别资源浪费情况甚至提供修改建议

参考UI:即将发布全新的设计的Neptune

Qt Automotive Suite第一版发布以来,QtQuick Controls 2.0就在性能和样式灵活性方面有了重大改进。Neptune参考用户界面已升级为使用Qt Quick Controls 2.0。用户界面初始化支持阶段性的加载以便获得更好的性能。该系统融入了一个包含通知中心的新的通知框架,应用控制中心可允许停止应用程序。查看文档。

Qt Automotive Suite2.0之后,我们将提供一个全新的用户体验设计应用。

图4:全新的Neptune UI
图4:全新的Neptune UI

Qt独特的窗口合成功能会是未来系统用户界面的一大亮点。看一下电话、地图、播放器等小应用的界面,它们都是单独运行的应用,但它们同时被系统UI整合在一个屏幕上,由ApplicationLauncher管理,与暖通空调控制互不干扰。

内容全面的文档

Qt Automotive Suite 2.0更加成熟,其中一个体现便是,我们为所有现有的和新增的工具、组件及API编写了更好文档。

SDK Creation

我们来重新介绍一下这个功能。很多时候,第二方和第三方厂商会提供部分系统功能,有时,第三方厂商会为您的平台定制应用程序。Qt Automotive Suite可轻松构建可再分发的SDK,包含特定HMI资产,附加中间件和允许第三方在最小干扰的情况下开发、测试应用的Qt工具。

开放式开发模式

Qt Automotive Suit的开发方式与Qt相同。您可在http://code.qt.io/cgit/找到代码,您也可以在http://lists.qt-project.org/mailman/listinfo/automotive加入Qt Automotive Suite邮件列表,我们会通过邮件与感兴趣的开发者和用户讨论产品开发和发展方向。

总结

Qt Automotive Suite 2.0为数字座舱的HMI开发提供一个真正的端到端解决方案,使设计师和开发人员能在Qt生态系统中协调工作,符合安全功能需求的同时,最大限度为所有屏幕提供一致的数字用户体验。随着设计开发周期和潜在成本的缩减,整车厂现在可以更多关注HMI的创新和品牌的独特性,这无疑对整个行业及你我这样的普通消费者来说是一种双赢。

Subscribe to Our Blog

Stay up to date with the latest marketing, sales and service tips and news.