LSM6DSV16X基于MLC智能笔动作识别(2)----MLC数据采集

news2024/11/28 18:46:01

LSM6DSV16X基于MLC智能笔动作识别.2--MLC数据采集

  • 概述
  • 视频教学
  • 样品申请
  • 源码下载
  • 输出速率
  • 执行流程
  • 速率设置
  • 量程设置
  • 检测状态
  • 数据单位
  • 采集数据
  • 静止(Steady)
  • 闲置(Idle)
  • 书写(Writing)
  • 其他(other)

概述

MLC 是“机器学习核心”(Machine Learning Core)的缩写。在 LSM6DSV16X 传感器 中,MLC 是一种嵌入式功能,它使传感器能够直接运行基于决策树的机器学习算法。通过这种功能,传感器可以独立完成诸如活动识别、运动强度检测和误报过滤等任务,而无需将数据处理转交给外部的微控制器。MLC 通过处理来自加速度计、陀螺仪或外部传感器的数据,计算统计参数、应用滤波器,并将分类结果输出到专用寄存器中(AN5804)。

最近在弄ST的课程,需要样片的可以加群申请:615061293 。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV14V45eyEh9/

LSM6DSV16X基于MLC智能笔动作识别(2)----MLC数据采集

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

源码下载

输出速率

在 AN5804 文档的 Table 1. Machine learning core output data rates 中,表格列出了机器学习核心(MLC)的输出数据速率(ODR),用于配置 MLC 数据生成的频率。
具体来说,MLC 的输出数据速率决定了机器学习核心处理传感器数据并输出结果的频率。不同的应用场景可能需要不同的速率来平衡功耗和性能。这个表格的目的是让用户根据应用需求选择合适的输出数据速率。

在这里插入图片描述

执行流程

根据 AN5804 第三页的描述,LSM6DSV16X 传感器的 机器学习核心(MLC) 的流程可以分为以下几个步骤:

  1. 收集传感器数据:
    ○ MLC 从内置的加速度计、陀螺仪以及通过 I²C 接口连接的外部传感器(如磁力计)中收集三轴传感器数据。这些数据包括 X、Y、Z 轴的加速度和角速度。
  2. 处理传感器数据(计算块):
    ○ 在这一阶段,传感器数据经过预处理。MLC 会应用一些滤波器(如高通、低通或带通滤波器),并计算出用户配置的统计特征(例如均值、方差、能量、峰值等)。这些特征基于用户定义的时间窗口(window length)进行计算,时间窗口的长度决定了统计数据的覆盖范围。
  3. 构建决策树:
    ○ 处理后的特征作为输入被传递到决策树。决策树是一个二叉树结构,在每个节点中,特征值被与某个阈值进行比较,以决定继续走向下一节点的哪一条路径。这个过程会在决策树的各个节点中重复,直到生成最终的分类结果(例如:静止、行走、跑步等)。
  4. 输出分类结果:
    ○ 当决策树到达叶节点时,它会输出一个分类结果,这个结果表示所检测的动作或状态。结果会被存储在 MLC 的专用输出寄存器中,供外部微处理器读取。
  5. 可选的元分类器过滤:
    ○ 输出的分类结果还可以通过一种称为 meta-classifier(元分类器) 的过滤器进行处理。元分类器会根据多个分类结果的统计情况,减少短时的错误分类或不稳定的输出。例如,如果短时间内结果频繁变化,元分类器会稳定输出。

在这里插入图片描述

速率设置

设置了加速度计和陀螺仪的输出数据速率(ODR)为480Hz,这将使传感器以较高的速率采样数据。这种设置适用于需要高动态精度的应用场景,比如需要精确跟踪快速运动的应用。

  lsm6dsv16x_xl_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
  lsm6dsv16x_gy_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);

量程设置

量程和分辨率的平衡:较大的量程适合高速动态的应用,但会降低测量的分辨率。如果你需要检测较小的变化或在低动态场景下使用,建议选择较小的量程,以获得更高的精度。
与MLC配合使用:如果你使用这些数据进行机器学习核心(MLC)的处理,确保量程设置适当,以便捕捉到足够的动态数据,同时保持数据的分辨率。

  lsm6dsv16x_xl_full_scale_set(&dev_ctx, LSM6DSV16X_2g);
  lsm6dsv16x_gy_full_scale_set(&dev_ctx, LSM6DSV16X_125dps);

检测状态

铅笔运动检测应用的构建,检测的四种不同场景(类别)。

  1. 静止(Steady):笔在桌子上,不在手中。
  2. 闲置(Idle):笔在手中但未书写。
  3. 书写(Writing):笔在手中并在书写。
  4. 其他(other):未被其他类别覆盖的情况。

数据单位

加速度计 的数据单位为 mg。
陀螺仪 的数据单位为 dps。
陀螺仪数据也可以导入mdps。

在这里插入图片描述

采集数据

轮询获取数据,使用串口打印传感器的数据,依次是ACC_X、ACC_Y 、ACC_Z、GYR_X、GYR_Y、GYR_Z。

在这里插入图片描述

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    lsm6dsv16x_data_ready_t drdy;
    /* Read output only if new xl value is available */
    lsm6dsv16x_flag_data_ready_get(&dev_ctx, &drdy);
    if (drdy.drdy_xl & drdy.drdy_gy) 
		{
			memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
			memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));
				
			lsm6dsv16x_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
			lsm6dsv16x_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);
				
			acceleration_mg[0] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[0]);
			acceleration_mg[1] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[1]);
			acceleration_mg[2] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[2]);
				
			angular_rate_mdps[0] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[0]);
			angular_rate_mdps[1] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[1]);
			angular_rate_mdps[2] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[2]);
				
			printf("%4.2f\t%4.2f\t%4.2f\t%4.2f\t%4.2f\t%4.2f\t\r\n",
					acceleration_mg[0], acceleration_mg[1], acceleration_mg[2],
    				angular_rate_mdps[0], angular_rate_mdps[1], angular_rate_mdps[2]);
        }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

      

将采集到的数据保存。

在这里插入图片描述

静止(Steady)

器件放置在桌子上。

在这里插入图片描述

最好多几个方向。

在这里插入图片描述
这里采集4组数据。

在这里插入图片描述

闲置(Idle)

器件在手中不动。

在这里插入图片描述

采集多几个方位数据。

在这里插入图片描述

这里采集4组数据。

在这里插入图片描述

书写(Writing)

笔在手中并在书写。

在这里插入图片描述

这里采集4组数据。

在这里插入图片描述

其他(other)

未被其他类别覆盖的情况。

在这里插入图片描述
可以采集例如逆时针数据。

在这里插入图片描述

这里采集4组数据。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2186652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全球购的智能引擎:AI与RPA如何重塑跨境电商帝国?

在全球化的大潮中,跨境电商已成为连接世界的桥梁。随着人工智能(AI)和机器人流程自动化(RPA)技术的飞速发展,跨境电商领域的运作模式正在经历一场革命性的变革。 一、跨境电商的挑战 随着互联网技术的普及…

D3.js中国地图可视化

1、项目介绍 该项目来自Github,基于D3.js中国地图可视化。 D3.js is a JavaScript library for manipulating documents based on data. It uses HTML, SVG, and CSS to display data. The full name of D3 is "Data-Driven Documents," which means it a…

在VirtualBox中安装OpenEuler操作系统保姆级教程

前言 OpenEuler是一个由中国华为公司主导开发和维护的开源操作系统项目,旨在打造一个开放、可信且可扩展的企业级操作系统,适用于多种应用场景。 该项目致力于通过开放和协作的方式推动操作系统的创新与发展。OpenEuler采用开源软件模型,允…

多模态:Florence2论文详解

文章目录 前言一、介绍二、方法1.模型结构1)Vision encoder2)Multi-modality encoder decoder3)Optimization objective 2.数据工程1)Image Collection2)Data Annotation3)Data filtering and enhancement4…

spring学习日记-day8-声明式事务

一、学习目标 声明式事务是Spring框架提供的一种事务管理方式,其主要特点是通过声明(而非编程)的方式来处理事务。这种方式让事务管理不侵入业务逻辑代码,从而提高了代码的可维护性和可读性。 定义:声明式事务…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

【数据结构笔记13】

408数据结构答题规范 原视频 视频参考,以下为视频的笔记 需要写的部分 如果题目要求了函数名、参数列表、返回值类型就按题目的来 函数的类型可以是返回值类型或者void类型,如果函数名不清楚里面的功能是什么,在函数title下面最好写一行注…

磁盘存储和文件系统管理【1.9】

磁盘存储和文件系统管理【1.9】 12、磁盘存储和文件系统12.1.管理存储12.1.1.新加10G硬盘并识别12.1.2.备份查看MBR分区表二进制信息12.1.3.删除破坏分区表12.1.4.恢复MBR分区表12.1.5.完整步骤12.1.6.fdisk分区12.1.7.gdisk分区12.2.文件系统12.2.1.查看支持的文件系统格式12.…

音视频入门基础:FLV专题(11)——FFmpeg源码中,解析SCRIPTDATASTRING类型的ScriptDataValue的实现

一、引言 从《音视频入门基础:FLV专题(9)——Script Tag简介》中可以知道,根据《video_file_format_spec_v10_1.pdf》第80到81页,SCRIPTDATAVALUE类型由一个8位(1字节)的Type和一个ScriptDataV…

Java类的生命周期-连接阶段

Java类的生命周期-连接阶段 上篇讲述了类的加载阶段,通过类加载器读取字节码文件后在方法区与堆区生成对应的存放类信息的对象,本篇将讲解他的下一阶段-连接阶段 上篇说到类加载的五大阶段: #mermaid-svg-6YmaEnIO4rCKbIZg {font-family:&quo…

Cpp::STL—vector类的模拟实现(11)

文章目录 前言一、各函数接口总览二、默认成员函数vector();vector(size_t n, const T& val T( ));template< class InputIterator> vector(InputIterator first, InputIterator last);vector(const vector<T>& v);vector<T>& operator(const v…

腾讯云SDK基本概念

本文旨在介绍您在使用音视频终端 SDK&#xff08;腾讯云视立方&#xff09;产品过程中可能会涉及到的基本概念。 音视频终端 SDK&#xff08;腾讯云视立方&#xff09; 应用 音视频终端 SDK&#xff08;腾讯云视立方&#xff09;通过应用的形式来管理您的项目&#xff08;Ap…

C/C++进阶(一)--内存管理

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏&#xff1a; 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…

免费录屏软件工具:助力高效屏幕录制

录屏已经成为了一项非常实用且广泛应用的技术。无论是制作教学视频、记录游戏精彩瞬间&#xff0c;还是进行软件操作演示等&#xff0c;我们都常常需要一款可靠的录屏软件。今天&#xff0c;就让我们一起来探索那些功能强大录屏软件免费版&#xff0c;看看它们是如何满足我们多…

ARTS Week 42

Algorithm 本周的算法题为 2283. 判断一个数的数字计数是否等于数位的值 给你一个下标从 0 开始长度为 n 的字符串 num &#xff0c;它只包含数字。 如果对于 每个 0 < i < n 的下标 i &#xff0c;都满足数位 i 在 num 中出现了 num[i]次&#xff0c;那么请你返回 true …

【数据结构强化】应用题打卡

应用题打卡 数组的应用 对称矩阵的压缩存储 注意&#xff1a; 1. 2.上三角的行优先存储及下三角的列优先存储与数组的下表对应 上/下三角矩阵的压缩存储 注意&#xff1a; 上/下三角压缩存储是将0元素统一压缩存储&#xff0c;而不是将对角线元素统一压缩存储 三对角矩阵的…

接口隔离原则在前端的应用

什么是接口隔离 接口隔离原则&#xff08;ISP&#xff09;是面向对象编程中的SOLID原则之一&#xff0c;它专注于设计接口。强调在设计接口时&#xff0c;应该确保一个类不必实现它不需要的方法。换句话说&#xff0c;接口应该尽可能地小&#xff0c;只包含一个类需要的方法&am…

SKD4(note上)

微软提供了图形的界面API&#xff0c;叫GDI 如果你想画某个窗口&#xff0c;你必须拿到此窗口的HDC #include <windows.h> #include<tchar.h> #include <stdio.h> #include <strsafe.h> #include <string>/*鼠标消息 * 键盘消息 * Onkeydown * …

实验 3 存储器实验

实验 3 存储器实验 1、实验目的 掌握静态随机存储器 RAM 的工作特性。掌握静态随机存储器 RAM 的读写方法。 2、实验要求 (1)做好实验预习&#xff0c;熟悉MEMORY6116 芯片各引脚的功能和连接方式&#xff0c;熟悉其他实验元器件的功能特性和使用方法&#xff0c;看懂电路图…

CSS | 响应式布局之媒体查询(media-query)详解

media type(媒体类型)是CSS 2中的一个非常有用的属性&#xff0c;通过media type我们可以对不同的设备指定特定的样式&#xff0c;从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强&#xff0c;是CSS 3的重要内容之一。随着移动互联网的发展&#xff0c;m…