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

阅读这篇知识文章你学到了什么?

在这篇知识文章中,这是两篇文章中的第一篇,它解释了如何使用AlgoBuilder和sensitile.box创建MLC算法来检测两个类:帽子的稳定位置和人何时戴帽子。
在下一个知识文章章节中,将解释如何只有当用户戴上帽子时才可以使用这种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算法。而传感器融合算法在sensitile.box的MCU上运行。
在这篇知识文章中,该板是在DFU模式下使用的。要在板上启用此模式,需要断开板与电源的连接。


 

 

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

 

设置AlgoBuilder

  • 配置

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

  • Unicleo GUI

  • STM32管

  • STM32管式编程器

  • Unico GUI

 

 
  • 项目设置

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

 
 

如何创建.UCF文件

本章的目标是展示如何使用AlgoBuilder获取AXL和陀螺仪的数据日志,并使用它们创建.UCF文件来检测两个类:

  • 稳定的位置,意味着帽子在桌子上或表面上时

  • 帽子打开的位置,意思是当有人戴着帽子时

要使用的第一个构建块是Sensor Hub块。
可以更改AXL和陀螺仪的特性:

  • 104Hz,适用于AXL和陀螺仪

  • 加速度计满刻度:16g

  • 陀螺仪满刻度:500dps

 

 

由于目标是获取AXL和陀螺仪的数据日志,因此需要添加相应的块。
 

 

一旦完成,就可以构建固件,通过点击下面的图标打开Unicleo GUI将其上传到板上。

在sensitile.box中闪存固件后。单击Unicleo–GUI图标

软件打开,点击开始并选择两个图形图标和数据日志图标,如下图所示:

可以:

  1. 检查与相应轴一起显示的角速率和加速度数据

  2. 生成Angula速率、加速度或两者的一些数据日志。数据将保存为选定文件夹中的.CSV文件。


已记录了两个类别以进行识别:
当帽子放在桌子上时,获得AXL和陀螺仪数据的稳定位置。


以及当一个人戴着帽子时,Hat_On位置获得AXL、陀螺仪数据。



 

要创建.UCF文件,需要向AlgoBuilder再添加一个块,即MLC/FSM块:


下一步是导入在Unico GUI的MLC工具中获取的数据日志。在MLC工具的“数据模式选项卡”中,点击“浏览”按钮可以选择相应的数据日志文件(同一类可以同时选择多个文件)。
 

对于导入的所有数据日志和每个类,都需要分配一个标签,即与该数据关联的类。
正确导入所有日志后,单击“配置”选项卡,然后继续创建决策树和配置文件。
该配置适用于LSM6DSOX:

  • 机器学习核心的104 Hz数据速率(与用于获取数据日志的数据速率相同)

  • 必须根据我们用于获取数据日志的参数选择加速计数据和陀螺仪:

    • 16克全刻度

    • 500 dps


 


 

然后,需要通过选择1个决策树和104个样本的窗口长度来进行配置。window参数指定机器学习核心每次必须识别类时阐述的样本数。它可以是从1到255,并且MLC结果的延迟将与这个数字相关。在这种情况下,数据速率为104 Hz,窗口中的104个样本将获得1秒的等效时间窗口。
 


 

在本例中跳过了过滤器配置部分,这意味着没有对输入数据使用过滤器。
在功能配置部分,可以选择在构建决策树时使用哪个功能。
由于从数据日志中可以清楚地看出,加速度计和陀螺仪轴上存在一些变化,因此可以在这些轴上以及加速度计范数上选择一些特征(如均值、方差、能量、峰值2峰值)。

 


 

这是MLC配置过程的第3步,我们将在其中构建决策树,它使用了我们之前定义的一些功能。我们只需要点击Generate按钮,或者我们也可以导入由外部工具生成的决策树。然后我们有了元分类器,它是决策树结果的可选过滤器,我们可以跳过这个例子。最后,我们可以为LSM6DSOX生成具有机器学习核心配置的UCF文件,以将决策树嵌入传感器配置中。
最后,点击next可以保存要在Sensortile.box中实现的文件.UCF。
关闭Unico GUI,可以使用AlgoBuilder上传并验证ML算法是否正常工作。
为此,需要向AlgoBuilder中再添加一个块,即值块。

 

由于我们只需要显示一个值,因此需要在此块上设置一些参数:

  • 数据类型:自定义

  • 值的数目:1

  • 窗口名称:Hat_Config

  • 值1名称:Hat_On

现在可以重新构建固件并在sensitile.box中闪存。打开Unicleo GUI并单击“启动”,可以立即检查实现结果:

  • 如果帽子在桌子上,则MLC输出为0



 

  • 如果帽子戴在头上,则MLC输出为4



 

结论

我们已经看到了如何使用LSM6DSOX中的MLC检测两个不同的类,方法是使用AlgoBuilder对sensitile.box进行可视化编程,以获取数据日志,创建和实现MLC配置。

如果你对同一主题感兴趣,但检测运动强度,你应该在GitHub上查看这篇文章。这里解释了如何使用AlgoBuilder来检测三种不同类型的强度运动。
此外,请查看以下链接以获取关于话题