使用ST的智能传感器轻松创建概念验证,并探索关键构建块,以实现可靠、低延迟的化身。在这篇知识文章中,你将了解如何成功地将真实动作转移到你的化身中,从而在元宇宙中获得无缝体验。您将能够使用AlgoBuilder使用AI算法创建自己的PoC,其中包括一个易于使用的GUI,可以让您在不编写代码的情况下编程“边缘”功能和高级算法。

我们要建造什么?

在这篇知识文章(两篇文章中的第二篇)中,将解释如何使用AlgoBuilder的可视化编程以更复杂的算法实现上一篇文章中创建的MLC算法,以激活传感器融合,从而仅在验证条件时激活头部跟踪。

开始之前?

软件

我们将在这篇知识文章中使用的软件工具是:
Algobuilder–适用于Linux、MacOS和Windows的图形用户界面,允许构建复杂的人工智能算法,并使用我们MEMS传感器的“边缘”功能,而无需编写任何代码
Unicleo–Linux、MacOS和Windows的图形用户界面,允许以2D和3D显示AlgoBuilder算法的固件输出
Unico–适用于Linux、MacOS和Windows的图形用户界面,可快速创建机器学习算法(.UCF文件)

硬件

本教程将使用ST帽和sensitile.box来配置和开发LSM6DSOX MEMS 6轴传感器的MLC算法。而传感器融合算法将在STM32L4R9ZI传感器盒的MCU上运行。
在这篇知识文章中,该板将在DFU模式下使用。要在板上启用此模式,需要断开板与电源的连接

然后需要按下“引导”按钮,同时将USB电缆连接到电脑:
 
 

设置AlgoBuilder

1.配置

作为第一步,启动AlgoBuilder程序,然后进入“应用程序设置”并链接以下各项的所有.exe文件:
  • Unicleo GUI
  • STM32管
  • STM32管式编程器
  • Unico GUI

 

2.项目设置

然后,需要打开固件设置来选择项目位置,工具链将被自动选择,最后是目标板来闪存固件。
这个演示的目标是Sensotile.box。
 
 

如何构建传感器融合算法?只有当MLC条件得到验证时才会触发什么?

本章的目标是展示如何使用AlgoBuilder构建一个复杂的算法,该算法仅在MLC识别帽子位置为hat_On时才启用四元数9X
  • 帽子稳定时,四元数不显示任何数据
  • 当帽子戴在某人的头上时,四元数数据开始流式传输,传感器融合被执行到头部轨迹
要使用的第一个构建块是Sensor Hub块。

可以更改AXL和陀螺仪的特性:
  • 适用于AXL和陀螺仪的104Hz
  • 加速度计满刻度:16g
  • 陀螺仪满刻度:500dps

由于我们的目标是获得四元数9X数据并用3D面显示它们,因此需要在AlgoBuilder中引入两个块:
 

传感器融合有不同的模型来显示3D元素,它有一个茶壶、一辆汽车、一块Nucleo板和一个头。对于这篇链接到元宇宙中化身的知识文章,头部是选定的特征。
下一步是获取.UCF文件并在算法中实现它。为此,需要选择MLC/FSM块并单击load.UCF文件。
 

传感器集线器的数据将通过我们生成的MLC.UCF文件进行分析。
由于目标是在MLC显示帽子打开位置时激活9x四元数,因此需要在此处插入一些逻辑块:
首先,它需要放置一个带有的整数块,我们将其值设置为4。在前面的知识文章中,我们定义了两个类,类0表示帽子稳定时,类4表示帽子戴在某人头上时。
将MLC输出与具有“相等”块的该整数值进行比较,如果MLC输出不与值4匹配,则逻辑将返回0值,如果相反,MLC和整数值匹配,则返回1值,因此它们都是4。
 

为了检查逻辑是否正常工作,需要显示两个不同的整数输出——一个来自MLC,另一个来自相等的。
下一个要使用的块是Mux[2]块,它获得两个值作为输入
 

最后,使用需要设置一些参数的值块进行显示:
  • 数据类型:自定义
  • 数值数量:2
  • 窗口名称:状态
  • 值名称1:融合开-关
  • 值名称2:Hat On_Off
如果采用这种方式,则会出现一个状态显示,突出显示帽子是打开还是关闭,以及传感器融合是否正在运行。
最后,需要将相等块的输出连接到四元数9x,以这种方式,如果帽子戴上的条件得到验证并且相等块输出为1,则激活四元数,并且融合将显示头部移动后的移动化身。
 

最后一步不是强制性的,但可能很有用,那就是利用传感器盒上LED的开关向算法再添加一个块。
为此,需要以.xml格式编写一行代码,并将其添加到AlgoBuilder库中。
 

代码表示,如果相等输出等于1,则LED 2点亮,否则LED 2熄灭。在这种情况下,LED 2为绿色LED。
 

一旦实现了这一点,就可以构建固件,然后将其闪存到sensitile.box中,如前一部分所示(链接)。
最后打开Unicleo,可以检查我们算法的输出:
  1. 如果帽子在桌子上:
    1. hat状态为0,融合未运行,其值也为零。
    2. 绿色LED熄灭,头像头部不动
 
  1. 如果帽子在某人的头上,而帽子状态为4,则融合为1,并且它正在计算传感器融合,因此头部现在随着我的头部移动而移动。
  2. 最后绿色指示灯亮了

融合具有重置模型按钮,这非常有用,因为它允许模型相对于传感器位置的自校准。
例如,可以使面与屏幕平行:
 

或者化身将在后脑勺可见的情况下移动:
 

或者脸在屏幕前的头像:
 
 

结论

在这篇知识文章中,我们展示了如何使用上一篇知识文章生成的UCF配置来触发四元数9x数据,并仅在检测到特定类别(在本例中为戴帽类别)时才允许使用传感器融合算法移动头部。
如果你对同一主题感兴趣,但检测运动强度,你应该在GitHub上查看这篇文章。这里解释了如何使用AlgoBuilder来检测三种不同类型的强度运动。
此外,请查看以下链接以获取有关该主题的完整网络研讨会。