首页 > 其他分享 >通过 IMU 绘制物体移动的空间轨迹

通过 IMU 绘制物体移动的空间轨迹

时间:2023-08-03 13:13:16浏览次数:318  
标签:轨迹 开源 算法 Tracking IMU 传感器 加速度 绘制

一般 IMU 由加速度传感器、陀螺仪组成,也叫 6 轴 IMU。还可以外加一个磁力计,构成 9 轴 IMU。关于加速度传感器和陀螺仪的工作原理,可以参考:

  1. 加速度传感器的原理和应用-手机翻转、失重检测、运动检测、位置识别
  2. MEMS 三轴加速计、三轴陀螺仪、三轴磁力计)6轴IMU+磁力计,9轴传感器讲解
  3. IMU与惯性导航基础知识介绍

加速度传感器测得加速度(acc)积分得到速度,再积分得到位移:

  1. Gyroscope and Accelerometer Calibration with Raspberry Pi
  2. 【翻译】利用加速度求解位置的算法——三轴传感器

陀螺仪测得角速度(gyr)积分得到姿态:

  1. 三维旋转:欧拉角、四元数、旋转矩阵、轴角之间的转换
  2. 四元数微分方程的推导和解算实现
  3. 三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理

所以可以通过加速度传感器+陀螺仪的组合得到比较准确姿态,在去除重力加速度分量影响下二次积分可以得到位置。

其中的难点在于:

  1. 姿态不准导致重力影响去除不了;
  2. MEMS 器件本身的零点漂移不能去除。

这导致使用 IMU 定位时,始终存在不可避免的漂移,且漂移会随着积分越来越大。所以需针对具体应用设计相应的处理算法。目前使用较多的步态定位

  1. Oscillatory-Motion-Tracking-With-x-IMU,Matlab开源项目;
  2. Gait-Tracking-With-x-IMU,Matlab开源项目;
  3. Gait-Tracking-With-x-IMU,Python开源项目;
  4. Gait Tracking with x-imu Python,Python开源项目;
  5. Gait-Tracking,Python开源项目。

就目前来说,第二个项目的算法效果最好。但需要注意的是:

  1. Script 中 samplePeriod 需要与传感器采样频率一致;

  2. 注意单位转换,我这里传感器采集的角速度单位为rad/s,但是项目中角速度的单位为deg/s。两者的转化关系为:

    \[π/180*deg = rad \]

  3. 算法对于 IMU 的放置和运动模式都做了要求。IMU 必须放置在脚背上,不能是脚踝。在脚踝上 IMU 抖动会导致数据漂移。出于同样原因,算法不适用于跑步,只能用于步行。事实上,对于简单、低频的动作,算法都能够绘制出较为精准的空间运动轨迹。但是对于复杂、高频的动作,算法没有表现出很好的兼容性,数据漂移很严重。

标签:轨迹,开源,算法,Tracking,IMU,传感器,加速度,绘制
From: https://www.cnblogs.com/wonderhoi/p/17603044.html

相关文章

  • [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北
    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。它提供了一组强大的工具,可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas,用户可以轻松地处理和分析移动对象数据,并从中提取有关行为、模式和趋势的见解。无论是处......
  • Android View绘制原理 - SkCanvas
    上一篇文章介绍了在Android框架中的各种Canvas,其中C层的RecordingCanas承上启下,在SkiaRecordingCanvas的绘制方法会通过调用它的mRecorder来记录,而这个mRecorder的类型正好就是SkCanvas,准确的说是它的子类RecordingCanas。而各种绘制方法会对应生成一个Op对象来描述这个绘制操作,Rec......
  • MATLAB plot绘制图像
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Revit二次开发-用GDI+绘制线样式
      最近有个需求就是将动态讲当前文档中的线样式绘制出来,并且显示在自己的UI上。查阅了一下api文档以及吉米大佬的博客,并且这篇博客中受到启发填充样式绘制然后自己琢磨了一下,成功将线样式绘制出来了。但是目前有个问题就是圆点我在dashpattern里面设置的是1f的单位,如果图片......
  • 2023-07-31 在uniapp使用canvas绘制一个圆角为50%的图片【代码来自chatGpt,稍作修改】
    <template><view><canvasid="myCanvas":style="{width:'200px',height:'200px'}"></canvas></view></template><script>exportdefault{onReady(){this.......
  • 前端系列21集-vue3,轨迹展示
    AMap.InfoWindow<template><div><div:style="customStyle"class="custom-box"><!--Yourcontenthere--></div></div></template><scriptsetup>import{ref,reactive......
  • SimultaneousSwap
    [ABC296F]SimultaneousSwap首先,若对\(a_i\)和\(b_i\)排序后,\(a_i\)和\(b_i\)仍不相同,则一定不行。注意到有:\(a_i=\quad{A\B\C}\),换\(AC\)\(b_i=\quad{A\B}\C\),换\(AB\)变为\(a_i=\quad{C\B\A}\),换\(CA\)\(b_i=\quadB{A\C}......
  • MinimumBoundingBox2
    [ABC297F]MinimumBoundingBox2考虑解决一个稍简单的问题。给你一个\(n\timesm\)的矩形棋盘,要在上面放\(k\)个棋子,使得矩形\(4\)条边上都要有至少一个棋子。问方案数。样例输入:222样例输出:2总方案数\(C_{n\timesm}^k\)。发现不好做,我们于是试着求解\(4......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 使用clip-path将 GIF 绘制成跳动的字母
    前言之前看到过一个有趣的CSS效果,今天我们也来实现一遍,将动图GIF通过clip-path绘制成一个个跳动的字母。效果如下:GIF随便找的,嗯?这不是重点,重点是下面的实现过程,别被GIF吸引了。如果这篇文章有帮助到你,❤️关注+点赞❤️鼓励一下作者,文章公众号首发,关注前端南玖第一时间获取最新文章~绘......