新闻中心

EEPW首页 > 物联网与传感器 > 设计应用 > Arm传感器融合

Arm传感器融合

作者:Simon Bramble时间:2020-03-30来源:电子产品世界收藏

  Phil Burr (Arm嵌入式产品组合管理总监),Bryan Cook (Hillcrest Labs/CEVA研发部首席工程师)

本文引用地址:http://www.eepw.com.cn/article/202003/411464.htm

  摘 要:出色的=出色的算法+出色的平台。要赢得一级方程式比赛,需要一名出色的车手和一辆出色的赛车。同样,要为用户提供最佳体验,需要出色的算法和出色的处理器。本文旨在揭示将Freespace算法与Arm设备结合使用能带来惊人的性能、高效的成本和功耗指标的关键原因。

  关键词:

  0 引言:及其他

  虽然基于惯性运动传感器的传感器融合已经存在了一段时间,但移动应用程序的最新发展使人们开始逐渐关注消费类和工业设备上传感器融合的算法、处理器以及基础结构。

  从游戏机到智能电视遥控器,再到最近的智能手机,传感器融合已被广泛用于为消费类电子产品创建更直观、有趣的交互体验。十多年来,Hillcrest一直是这一领域的先驱。Hillcrest开发了专有的信号处理技术,利用惯性和磁性传感器将人类的运动转化为高质量的、随时可使用的运动信息。

  随着越来越多新型智能手机和平板电脑开始采用“”传感器组,客户一直在向Hillcrest寻求有关如何从这些传感器中获得最大性能的建议,以及如何应用新的基于运动的应用程序使其产品与众不同。目标应用包括情境感知、室内导航和手势控制。但是,这些应用需要“always-on(永远在线)”的运动感应,传感器会不断采样数据并寻找有意义的动作。向“always-on”转变需要改变架构——将基于应用处理器(AP)进行的传感器管理,转变为专用的低功耗核心。

  随着功耗和性能优势的日益明显,这些传感器中枢已经迅速普及。但是,它们的成功将取决于算法和处理器的优化,以确保高性能和低功耗。本文将说明传感器融合算法(例如Hillcrest的Freespace软件)和处理器(例如Arm Cortex-M系列)如何协同工作,以形成兼具低功耗、传感无所不在这两大优点的成功产品。

  1 满足“always-on”传感要求的应用

  在讨论传感器融合在传感器中枢中的技术基础之前,让我们看一下这种发展背后的驱动力:利用技术基础来改善移动用户体验的应用程序。

  情境感知是涵盖其中某些应用程序的一类,从根本上讲,这些应用程序使用手机的传感器来检测正在发生的事情,并使用该信息来改变手机的行为。例如现在,某些手机内置了多达20个物理传感器(例如加速度计、GPS、Wi-Fi、气压计和照相机),每个传感器都检测手机、用户和环境的不同之处。也有虚拟传感器,例如您的日历和本地流量报告。就像人脑解释从其传感器(触觉、听觉、视觉等)传来的信息一样,移动设备可以充当“大脑”来解释来自这些传感器的数据,以确定设备和用户的情境,并利用这种情境提供更直观的用户体验。

  但是,情境感知取决于时间并受时间驱动。情境的变化取决于电话是正面朝下放在桌子上的时间是1 s还是1天,取决于某人只是将视线从屏幕上移开1 s,还是已经从屏幕上移开视线好几分钟。因此,为了确保正确解释情境,必须不断对其进行采样。如果移动设备依赖于零星的情境截图,则在解释该情境时会出错。由此感知所产生的情境对用户来说不仅没有益处,而且会破坏体验。因此,传感器的“always-on”对于这些应用程序的正常运行至关重要。

  如果我们能够为这些应用程序提供始终在线的智能情境感知信息,那么就可以为用户带来更有价值的体验。一些比较常见的使用场景包括:在检测到您正在驾驶并且不能用手和眼睛操作电话时启用音频通知和语音命令;在您离开办公室之前提醒您通勤路上交通繁忙;当您在图书馆时切换为振动;自动跟踪您白天的活动情况和燃烧的卡路里。

  2 可靠性和准确性始于精度

  1)算法端

  如果传感器仅具有12位精度,那么16位的处理精度就足以实现出色的算法。毕竟还多出4位,不是吗?

  好吧,不完全是。事实证明,对于算法设计师而言,最重要的事情之一是整个系统的数值精度。尽管传感器分辨率也是关键因素,但它并不是所需条件的唯一决定因素。有许多用于校准、解释、融合和其他功能的内部变量,它们需要各种级别的精度和范围。比如在Kalman滤波器中进行方差估计时,同一项需要较大才能处理主要调整,需要较小才能处理精细调整。实际上,有些甚至可能需要浮点。

  如果算法设计师无法提供足够的分辨率,很可能影响到算法的性能。如果算法设计师在任何地方都使用完整的浮点运算,则会导致较差的平台性能,产生额外的成本、运行时间变慢且功耗更高。正确的解决方案是将算法和平台融合在一起。

  由于变量范围是固定的,定点运算需要更高的精度以避免上溢和严重下溢。同样,复杂的定点算法在整个算法中通常需要二进制点(Q格式)的不同位置。

  2)平台影响

  对于算法设计师来说,最好的平台是在字长方面提供很大灵活性的平台。这允许不同的算法设计要求在函数甚至变量基础上与基础处理器进行自定义拟合。这正是Hillcrest使用Freespace所做的工作,而Arm的功能则可以使该过程更加顺利。

  在Cortex-M系列处理器中,有许多可确保高效算法性能的功能。

  3)Cortex-M0+

  Cortex-M0+和Cortex-M23设计采用二级流水线,为传感器融合应用提供一流的能效。它实现了Armv6-M指令集,并支持带有32位结果(MULS)的可选1周期乘法。这是传感器处理算法的关键指令。

  Cortex-M0+还支持可选的单周期I/O总线,专用于外设,并且独立于存储器子系统。

  4)Cortex-M3/Cortex-M4

  Cortex-M3实现了Armv7-M指令集,该指令集增加了一些功能,使其能够非常有效地使用定点算法实现复杂算法。

  ● 长乘法指令:SMULL。这将两个32位整数相乘并将结果保存为64位整数。该指令对于实现32位定点数乘法至关重要。具有32位结果的32位乘法是不够的,因为很少有仅需要最低有效的32位的情况。

  ● 长乘累加指令:SMLAL。该指令提高了定点矩阵乘法的内部循环和FIR滤波功能的效率。

  ● 对于大多数运算,灵活的操作数2允许按常数或寄存器进行移位。在定点算法中,例如,当对具有不同Q格式的定点变量进行运算或在定点变量之间进行转换时,需要进行一些移位。由于Q格式是固定的,并且是编译器通常已知的格式,因此可以将其嵌入单个指令中,从而大大提高了性能。

  ● 计算前导零指令:CLZ。该指令对前导零进行计数,并实现快速归一化和算法自适应,以提供浮点算法的某些优点。

  ● 整数除法(UDIV和SDIV)。与在软件中执行相同的除法相比,硬件除法提供了可衡量的性能优势。请注意,这仅提供32位除法。对于定点数学,通常的情况是将64位数字除以32位数字,得到32位结果(长乘法指令的反函数)。虽然未提供此长除法指令,但此长除法可以利用UDIV指令进行更有效的除法。Cortex-M4增加了对可选浮点单元的支持,这极大地加速了不容易适应定点计算的算法,例如本应依赖于软浮点实现的矩阵分解。此外,通过将许多DSP扩展利用到指令集,包括SIMD和具有饱和算法的指令,可以进一步改善定点数学。

  Cortex-M4处理器中的浮点单元(FPU)提供如下。

  ● 单精度(C浮点)数据处理操作的32位指令。

  ● 乘法指令和累加指令的组合可提高精度(融合MAC)。

  ● 对转换、加法、减法、与可选累加的乘法、除法和平方根运算的硬件支持。

  ● 对异常和所有IEEE舍入模式的硬件支持。

  ● 32个专用的32位单精度寄存器,也可寻址为16个双字寄存器。

  ● 解耦的三级指令流水线。

  Cortex-M33处理器增加了TrustZone安全性,使开发人员能够使用熟悉的编程模型来更轻松地实现软件隔离,并为当今的物联网和嵌入式设备所需的安全性奠定了基础。

  5)精度摘要

  Arm提供的字号选项和跨不同产品的智能功能安排可灵活地根据所需平台定制算法。对于Freespace,有针对Cortex-M0+、Cortex-M23、Cortex-M3和Cortex-M4的版本。虽然每个平台的具体实现各不相同,但是由于Arm设备中的智能体系结构,移植变得容易。然后,由于我们的算法在内部是完全模块化的,并且在结构和流程上都具有自适应性,因此Freespace与Arm平台的配对非常简单,并且可以在给定的功耗、成本和尺寸目标下实现最佳性能。

  3 如果没有接口,系统就没用了

  1)算法端

  根据定义,传感器融合是指读取多个传感器,然后计算并输出一组推断的组合输出,以供系统其余部分使用。如果处理器中没有良好的I/O接口和任务管理功能,则算法性能会受到影响。更好的算法至少需要减少采样检测、降低延迟和抖动、可靠的数据链接以及对输入和输出数据进行分组的能力。

  2)平台影响

  Cortex-M处理器支持线程模式和处理者模式,用于将应用程序与系统资源正确隔离,支持SysTick计时器,用于在任务之间进行时间分片,并支持具有复杂中断管理方案的嵌套矢量中断控制器,软件开销非常低。

  3)接口和平台摘要

  Arm Cortex-M处理器系列提供了一组接口,I/O管理和任务管理技术,以提供复杂的任务支持,例如Freespace传感器融合软件。复杂的算法需要复杂的硬件才能有效执行低功耗。

  4 传感器解释和校准

  1)算法端

  传感器数据包括许多损伤——噪声、非线性和失调。甚至对于许多传感器而言,哪怕知道基准点也是极其困难的。举例如下。

  根据加速度计读数计算出的重力矢量估算值将校准后的磁力计传感器读数转换为航向角。但是,航向的计算非常敏感。即使在零重力偏移(ZGO)估算中出现17 mg的误差,也会导致1°的俯仰角误差,进而导致多达2°的航向角误差。但是加速度计并不包含绝对零点或ZGO值。零重力偏移(ZGO)值随每个单独的传感器而变化,甚至对于给定的传感器也会随时间变化。

  请注意,此ZGO示例针对具体情况而言只是嘈杂的加速度计数据(当然针对一般情况而言只是嘈杂的传感器数据)的众多可能来源之一。每个传感器都有其自己的一系列噪声挑战,可以说磁力计构成了最大的困难(外界磁场变换导致的非线性偏移)。因此,高端算法(如Freespace)需要随着时间的推移以及环境变化自动学习并跟踪这些损害,以便从传感器数据中消除噪声。

  如果传感器融合算法转而将嘈杂的传感器数据作为输入,则生成的融合数据也将是嘈杂的。Freespace传感器融合软件具有卓越性能的主要原因在于尽力从输入的原始、嘈杂的传感器数据中找出真实的传感器信息,从而从根源上优化输出的结果中的噪声。

  2)平台影响

  从嘈杂的传感器数据中获取真实信息取决于能否使用正确的平台功能。首先,系统需要一种有效的方法来实现持久性存储。除了在会话中之外,还允许在会话之间进行累积学习。

  Cortex-M处理器通过支持闪存和EEPROM提供持久性存储。处理器可以通过闪存或RAM运行。由于指令流水线的存在和Thumb-2指令集的使用,闪存提取已经优化。

  该算法模块,特别对于磁力计而言,包括许多复杂的自适应滤波、模式识别和矩阵管理组件。为此,需要支持性的计算和分支指令集以及先进的内存管理技术。如上所述,这包括支持除法、计数前导零,立即数据指令等。

  3)传感器解释和校准摘要

  Arm处理器的丰富功能使Hillcrest能够定制传感器解释和校准模块的实施,同时保持算法性能和系统性能。

  5 有时所需的输出不是事实

  1)算法端

  想象一下,传感器是完美的,传感器融合算法也是完美的。进一步想象一下,我们正在使用显示器上的光标,在完美传感器上运行的完美传感器融合算法是否会产生用户喜欢的完美光标控制系统?其实不行。

  原因是手持设备的所有动作并不都是有意的。还有人为震动引起的无意动作。用户实际上只希望看到有意动作去驱动光标,而不是因震动产生的无意动作。试想一下,就相当于您将激光笔照在屏幕上时发生了抖动。但是这种抖动是用户根本不想看到的。

  由于这种情况远远超出了震动。传感器融合通常必须权衡平滑度和精度。有时所需的输出是预期错误最少的输出,有时则是与最近历史记录最一致的输出。在所有这些情况下,所需的输出并不是真正真实的信息,这代表了诸如Freespace的出色传感器融合实施中的额外处理步骤。

  2)平台影响

  Cortex-M4和Cortex-M33包括一个高效的单周期MAC,负责加速大多数DSP算法的运行,从而使自适应滤波特别容易实现。MAC支持16位和32位数据的各种单周期指令。例如,在一个周期内执行(32 x 32 +64 → 64)运算。

  3)所需的输出处理摘要

  Arm处理器的基本功能使此步骤易于实现,并使Hillcrest可以将实现与处理器的特定功能进行匹配,同时在保持低功耗的同时保持算法和系统性能指标。

  6 没有电源管理,我们就死定了

  1)算法端

  对于大多数客户来说,会使用户在10 min内耗尽电池电量的出色性能是不被接受的。实际上,即使长时间没电也不是很理想。因此,Freespace等复杂算法包括许多可优化功耗的特殊功能。

  这些功率优化技术包括混合模式运算、样本间预测、多速率运算等。它们还充分利用了传感器本身的电源管理功能,有时还会利用处理核心的电源管理功能。目标是在不影响性能的情况下最大化处理核心、传感器甚至I/O接口的空闲时间和范围。

  2)平台侧

  Cortex-M包括许多功能,可支持处理器级别和设备级别的电源管理。当处理器本身具有各种级别的睡眠模式时,可以按需关闭某些模块的电源。唤醒中断控制器可用于最大限度地节省功率。

  创建事件驱动的软件需要2个指令和1个控制位:

  ● WFI等待中断;

  ● WFE等待事件;

  ● SLEEP-ON-EXIT位。

  处理器保持睡眠模式,直到中断或事件到来。处理程序代码执行完成后,处理器将返回睡眠模式。

  3)电源管理摘要

  电源管理的目标是在不牺牲算法 性能的情况下实现出色的电源性能。通过将Freespace等复杂算法与Cortex-M等功能强大且架构合理的处理器相结合,可以实现出色的系统设计。关键是随着时间的推移提高能源效率,这是指能够在整个运算时间范围内以最低功耗执行具有等待时间的算法。诸如Cortex-M4之类的高性能处理器大部分时间都处于深度睡眠状态,因为它只需要短暂的活动时间即可执行代码。因此,平均功耗大大降低。最终结果是实现了更简单、更低功耗的系统设计。

  7 软件工具和生态系统

  毫无疑问,为传感器融合系统开发复杂的算法需要好的工具。Arm拥有当今市场上最大的工具生态系统,拥有来自各类竞争性供应商、开源社区和Arm的超过35种IDE和调试系统。构建复杂系统需要多种编译器、调试器、操作系统和各种软件模块。

  8 结论

  在配备适当工具的前提下,出色的传感器融合系统设计既需要出色的传感器融合算法,也需要出色的平台来运行。将两者组合在一起就像为顶级赛车配备顶级车手一样。Freespace和Arm就是这样的组合。

  在http://bit.ly/DSPCortex-M,可发现Arm DSP扩展、软件库、生态系统合作伙伴和资源。



评论


相关推荐

技术专区

关闭