ARM分享:如何优化汽车驾驶AR应用

与传统应用程序相比 , 增强现实需要更优的系统性能 。 由于长久的适应 , 人眼可以轻松感知到物理世界断断续续且缓慢发展的表现 。 但对于AR应用 , 即便渲染或帧率出现微小的错误 , 这都可能产生糟糕的用户体验 。
清晰一致的应用性能对汽车领域尤其重要 。 汽车厂商正越来越多地将增强现实纳入至核心用户体验 , 如通过直接在驾驶员的视场中渲染导航信息 。 在这种情况下 , 分散注意力的延迟或不清晰的可视化效果都会造成灾难性的事故 。
日前 , Arm通过博文介绍了其AR技术的用例和开发方法 , 尤其着重于如何优化性能以提供最佳用户体验 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
1.当前的状态
无论编码好坏 , 软件最终都取决于它所运行的硬件 。 当前 , AR应用没有专用于增强现实的ECU(电子控制单元) , 所以它们通常借助车辆中现有的ECU 。 这限制了性能 , 所以AR应用必须与在相同硬件运行的其他应用程序隔开 。 为避免用户出现晕动症及显示清晰度 , 应以稳定的帧频显示AR应用的内容 。 增强对象外观的延迟应保持在一定范围内 , 这对于优化AR应用功能至关重要 。 由于传感器或软件性能的原因 , 即使是行驶车辆的显示延迟很小 , 这都可能导致较大的失配 。 在以100km/h的速度行驶时 , 200ms的延迟将导致增强对象位置与现实世界最多错位5米 。 对于安全性至关重要的汽车而言 , 这种程度的误差不可接受 。
当前使用的ECU是SamsungExynosV9Auto汽车芯片 。 它必须运行AposteraAR应用程序和其他各种软件模块 , 并支持广泛的性能和I/O功能 。
AR应用需要实时运行才能发挥作用并提供无缝的用户体验 。 但大多数Linux变体不是实时 。 ExynosV9Auto汽车芯片所运行的OS是制造商提供的BSDLinux版本 , 并且不支持实时例程 。 为了支持算法能够正确计算增强对象的位置 , AR应用必须实现实时架构和方法 。 这可以通过向用户提供信息时补偿测量延迟来进行满足 。
对于严格的要求 , 至关重要的是:
持续监控效果分析AR应用程序以发现瓶颈确保所有操作均按时完成 , 并且输出中没有丢帧或数据放置错误 。
全面且易于使用的性能分析器工具是提供高质量解决方案的关键 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
2.用例
德国慕尼黑软件公司Apostera为汽车制造商开发了一种混合现实导航制导系统 , 并旨在为提高自动驾驶的未来铺平道路 。 当前的应用程序可以将汽车挡风玻璃转换成混合现实屏幕 , 并在其中显示重要信息 , 从而实现安全有效的导航 。
3.代码优化
3.1传统的方法
对于Apostera , 分析AR应用程序的性能通常意味着实现特殊的分析和性能指标库 。 所述库的输出是通过一个特殊的日志系统进行记录 , 并同时包含性能指标 。 接下来 , 系统将于运行时或运行后在脱机数据检索设置中从目标平台提取所述数据 。 对于复杂的调试和优化案例 , 内核轨迹可用于更深入的分析和瓶颈识别 。
使用所述数据来确定优化路线非常繁琐且效率低下 。 无法在运行时分析数据 , 并且无法长时间记录众多事件 。 全面理解系统性能并查看性能瓶颈是一项挑战 。
3.2新颖的方法
在将AR应用移植到新硬件时 , Apostera决定使用ArmStreamlinePerformanceAnalyzer(ArmDevelopmentStudio的一个组件)来优化性能 。 Streamline是完整的软件系统分析器 。 它会轮询系统的硬件计数器 , 从而确定在代码执行过程中耗时最大的地方 , 并显示在易于理解的GUI中 。 所述工具可快速识别ArmCPU和GPU中的代码“热点” , 例如在执行过程中占用最多硬件资源时间的软件 。 这可以帮助开发者专注于优化问题代码 。
设置Streamline来剖析AR应用非常容易 。 这个文档介绍了如何激活Linux内核的特定选项 , 以及如何在目标平台安装gatord精灵虚拟光驱 。
通过Streamline剖析应用程序的主要方法有两种:
精灵虚拟光驱(在线)模式:将目标接到Streamline工具 , 并在运行期间将应用程序性能直接实时记录到Streamline中 。 本地捕获(离线)模式:1.设置目标以将应用程序性能数据记录到内存中;2.使用Streamline将生成的文件传输到主机;3.运行完成后进行分析
对于Apostera的情况 , 任意一种模式都适用 , 而他们最后决定通过离线方法来收集数据 。 在设置并记录了数次AR应用运行之 , 他们将概要文件数据转移到Streamline并开始进行分析 。
4.分析
Streamline提供了几种不同的方式来可视化记录数据 。
“Timeline(时间轴)”选项卡显示随时间推移的CPU和GPU活动 , 以及指定的PMU指标图表 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
“Function(功能)”选项卡显示代码中所有功能的热图 。 在这里 , Linux内核在编译时没有调试符号 , 从而导致了未知的代码消息 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
“Code(代码)”选项卡显示指定源文件在每个源代码行所花费的时间 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
“CallPaths(调用路径)”选项卡显示代码线程的热图 , 并显示执行期间耗时最多的地方 。
ARM分享:如何优化汽车驾驶AR应用
文章图片
Apostera指出:“我们发现调用路径视图特别具有启发性 , 它显示了每个编译单元和子单元中调用的样本数量 。 我们立即在时间轴热图中确定了耗时最多的代码区域 。 另外 , 将源代码接到工具 , 并将应用程序调试信息加载到Streamline有助于我们发现问题代码的确切文件和行数 。 这种快速的问题识别和专一性简化了我们的性能分析和重构建议过程 。 ”
【ARM分享:如何优化汽车驾驶AR应用】Streamline工具简化了性能剖析和分析 , 为Apostera应用程序在运行期间的行为提供了简便的概览 。 作为ArmDevelopmentStudio的组件 , Streamline可以免费下载并使用30天 。


    推荐阅读