问题标签 [sensor-fusion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
60 浏览

c# - BNO055 usb-stick 的 UserApplicationBoard.dll 中的不可调用成员

我正在尝试使用C# 代码将BNO055 USB_STICK连接到我的电脑。找了又找,终于找到了一本博世的手册,讲的是GENERIC API。伟大的。因此,我将 UserApplicationBoard.dll 添加到我的 Visual Studio 项目中,并尝试读取/写入我的 IMU 传感器。可悲的是,它在 C# 中不起作用。阅读手册,我可以在 IronPython 和 MatLab 中使用这些 API(我在 IronPython 中对其进行了测试,它工作正常)但是当我尝试在 C# 中从这个 .dll 调用方法时,我遇到了这个错误:

虽然在 IronPython 中一切正常,但我可以读/写每个注册表。下面是我的简单代码:

有谁知道如何解决这一问题?

0 投票
1 回答
933 浏览

sensors - 不同采样率的卡尔曼滤波器

我似乎无法找到有关此特定问题的主题,因此我自己发布了一个。

我正在从事一个大型导航项目,在该项目中我可以访问车辆的里程计和从 LiDAR 数据得出的位置估计。我可以将来自 LiDAR 估计的样本从 1 到 20 赫兹以不同的质量进行更改,并且里程计数据以 40 赫兹的频率传输。

我已经实现了一个标准的卡尔曼滤波器,遵循这些方程(来自维基百科):

预言

在此处输入图像描述

在此处输入图像描述

更新

在此处输入图像描述

我现在的问题是,当来自不同信息源的采样率不同时,您如何(最佳)使用卡尔曼滤波器?

0 投票
1 回答
152 浏览

embedded - 融合来自多个传感器的异步测量

我在机器人手臂的末端执行器上安装了一组 12 个 IMU,我使用微控制器读取它们以确定它的运动。使用我的控制器,我可以使用直接内存访问同时读取两个传感器。在获得测量结果后,我想将它们融合以弥补传感器错误并生成比只有一个传感器更可靠的读数。

经过一些研究,我的理解是我可以使用卡尔曼滤波器来达到我想要的结果,但仍然存在所有传感器值具有不同时间戳的问题,因为我一次只能读取两个,即使两个时间戳都会完美同步,如果仅在 µs 范围内,下一对将具有不同的时间戳。

现在我知道控制工程原理,但对传感器融合这个话题完全陌生,谷歌向我展示了太多结果,无法在合理的时间内找到解决方案。因此,我的问题是,任何人都可以通过命名我需要寻找的某个关键字或我应该努力更好地理解该主题的文献来为我指明正确的方向吗?

谢谢!

0 投票
1 回答
726 浏览

python - 卡尔曼滤波器 - 两个相等传感器的融合

我对在 Python 中实现卡尔曼滤波器很感兴趣。首先,我编写了一个非常简单的 K-Filter 版本——只有一个状态(Y 方向的位置)。我的状态转换矩阵如下所示:

其中 v 和 t 是常数。

我用一个简单的线性函数模拟测量

并为其添加噪音:

它工作得很好,我可以重新定义 R 和 Q 来改变测量和处理噪声值(直到现在,它还不是矩阵)。

现在我有一个想法...

如果我要进行第二次测量会怎样?

我怎么能处理它?我应该像这样预过滤测量:

还是有更合适的方法/解决方案涉及卡尔曼滤波器?

0 投票
1 回答
143 浏览

math - 如何使用传感器数据计算移动设备的行进路径?

我想使用加速度计、陀螺仪和其他智能手机传感器绘制设备在 3D 空间中的运动。

经过一番研究,我发现了一个方程,它说可以通过对a*t^2方程进行双重积分来完成,但这引入了巨大的累积误差和漂移余量。我对此的解决方案是跳过双重积分,而是计算梯形的面积 -((a(t) - a(t-1)) * dt / 2) + (dt * a(t))但是这会给出离散的结果,当加起来时不会提供正确的路径(即使没有应用重力过滤器并且在平面上移动设备时)。

考虑到在时间 N*dt 采集第 N 个样本的每个时间间隔,我有一个恒定的增量时间值和一个传感器数据样本,因此是否有更准确的方法可以实时执行这些计算。

0 投票
0 回答
151 浏览

android - 如何选择 AOSP 重力传感器而不是获得三星的实施?

所以我在这里找到了重力传感器代码https://cs.android.com/android/platform/superproject/+/master:frameworks/native/services/sensorservice/GravitySensor.cpp

这是由 Android 实现的重力传感器。但这显然不是我得到的传感器。使用 Sensor Kinetics 应用程序时,我可以看到手机上的重力传感器来自三星电子。所以看起来制造商还捆绑了重力传感器的实现。

这解释了为什么我在不同设备上看到不同的重力传感器值结果,而陀螺仪 + 加速度计值非常相似(因为陀螺仪加速度相似,我希望重力值也有很大相似性,因为重力来自加速度 + 陀螺仪)。

那么有没有办法注册一个特定于Android实现的事件监听器?或者更好的是有一个能够过滤掉重力的 Java 传感器(陀螺仪和加速度)融合库。这将是最好的,因为我不会依赖于 Android 版本和/或制造商的实现。

我目前注册的方式:

谢谢。

更新:我的假设似乎是正确的。在此页面上,他们正在讨论一种选择辅助重力传感器(如果制造商提供)的方法,但没有描述如何。如果我使用 SensorManager.getSensors() 并列出它们,不幸的是谷歌辅助传感器没有列出。请参阅https://developer.android.com/guide/topics/sensors/sensors_motion#android-open-source-project-sensors

Galaxy A40(版本 1)上的重力传感器。 Galaxy S9 上的重力传感器,来自三星,版本 3 - 不同的算法。在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
41 浏览

python - 时间序列:预测变量何时达到某个值(季节性传感器数据)python

所以我有一个带有 2 个变量“时间”和“传感器测量”的季节性时间序列,我想预测该测量值达到某个值的日期。任何人都可以建议可以提供帮助的模型/算法(我是初学者) PS:使用 python

0 投票
0 回答
638 浏览

python - 如何在 python 中创建贝叶斯数据融合?

我一直在研究数据融合方法,引起我注意的是使用卡尔曼滤波器的想法,它研究数据融合数据,研究高斯分布的均值和方差,并实现从弱传感器到更强/更准确传感器的预测和校正. 我查看了以下 GitHub 链接以进一步了解融合技术:

  1. Python 中的卡尔曼和贝叶斯滤波器
  2. 一维卡尔曼滤波器

所以,在第一个链接中,我发现他们在谈论离散贝叶斯滤波器,但是,他们没有提到连续贝叶斯滤波器。所以,我想用卡尔曼滤波器的想法做同样的步骤,在 PyMC3 包的帮助下实现一个连续的贝叶斯滤波器。所涉及的步骤可以在第二个链接中找到,代码如下。

因此,根据我使用的数据,我实现了以下链接,

用 Scipy 将经验分布拟合到理论分布

从上面的链接和分布列表中,学生 T 分布符合我的数据。实现数据融合的思想是能够获得初始数据,然后使用来自第一个模型的参数并将它们实施到预测模型中,并从预测模型收集参数到校正模型。这是我的融合方法(我为冗长的代码道歉),

但是,我不确定我是否正确执行了这些步骤。我是否正确地接近了这个想法?如果没有,我该如何修改代码?另外,如果可能的话,分享一个教程解释了将两个分布相乘并获得组合概率分布的比例和位置的想法?

编辑1:

我正在和某人谈论这个概念,他提到进行贝叶斯更新。如何在我的代码中实现这种方式并使用 PYMC3 包?

0 投票
1 回答
68 浏览

javascript - 合并传感器数据数组的最佳方法

我正在使用 AHRS 库来创建位置数据的传感器融合阵列。

从 Go Pro 遥测数据中,我有加速度计、陀螺仪和磁力计数据阵列,每个样本的时间戳具有以下形状:

我想将这些合并到一个对象中

每个时间戳的所有 3 个值

我已经可以使用减速器了

但这似乎不是非常优雅的代码。

有没有更有效的方法来处理它?

0 投票
1 回答
520 浏览

python - 正确安装 micropython 库(BNO055/IMU)

尝试在 micropython 下将 BNO055 IMU 9DOF 传感器与我的 ESP32 一起使用。

为此,您需要安装/使用库。但是,当我按照 adafruit/circuitpython 说明进行操作时,无法识别。

这是我的设置:

  1. ESP32 + MU 编辑器(alpha 版本,适用于 ESP32)
  2. BNO 正确连接(并经过测试)到 ESP32 的 I2C 端口
  3. Windows 10 计算机 + 安装了 python 3.7.4(和 python 2.7)。
  4. pip3 install adafruit-circuitpython-bno055根据指南安装我使用的库
  5. 基本的眨眼草图和 python REPL 控制台似乎工作正常

我试过了:

  • 谷歌搜索
  • 确保 MU 环境在 python 3 中运行
  • 在管理员模式下运行 MU
  • 更多的东西...

代码:下面的简单闪烁草图 + 导入 bno055。如何调试此错误使我难以理解,并且文档稀少(根据我的口味),任何指导都非常感谢。

错误:

编辑:即使在识别模块之后,它似乎也不起作用。再次有极少的调试信息(即哪个文件引发错误以及它位于何处......),否则将很乐意提供。我对此感到非常困惑,欢迎任何建议。在 MU 管理控制台下方,代码和错误。

在此处输入图像描述

代码:

错误: