问题标签 [imu]

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 投票
0 回答
59 浏览

python - 全局四元数对齐

我正在使用 imu 传感器,它参考全球 ENU 坐标系输出方向四元数。我想计算下半身 3 个传感器之间的关节角度(见图),但我找不到将传感器与分段对齐的方法?

分段传感器

0 投票
1 回答
78 浏览

mpu6050 - 设置 MPU6050 DMP 处理的俯仰和横滚初始值

当我的 MPU6050 断开并重置时,我想处理案例。不幸的是,在重新初始化 MPU6050 后,俯仰和横滚值显示为 0,并在大约 1-2 秒后以正确的值稳定下来。我想通过在重置之前写入最后读取的值来提示 DMP。它有任何接口吗?顺便说一句,无论我将 LPF 配置为 5 还是 188 - '问题' 仍然存在。

0 投票
0 回答
40 浏览

c - 16位精度的IMU校准

我想将 IMU 传感器校准到小数精度。我正在用 C 编程。我已经定义了一个名为加速度的结构,其变量 x、y 和 z 采用int16_t格式。

我从寄存器读数(即加速度)中获得的原始值(分别用于 x、y 和 z 轴)例如:218 -924 16312

我面临的问题是通过进行校准的乘法

这些值被四舍五入为整数,产生如下输出:0 0 9

我在这里想念什么?

0 投票
0 回答
92 浏览

device-driver - IMU 测量的集成

我有一个通过 SPI 接口与 Melopero LSM9DS1 惯性测量单元连接的 Raspberry PI 4。Raspberry 控制两个电机(左/右)的运动,我想获得集成 IMU 测量的姿态和速度信息。

IMU 驱动程序是一个 python 脚本,它重复:

整合策略如下:

为了简化,我假设:

  1. 重力都沿 Z 轴指向,所以我只忽略 Z 轴的速度值;
  2. 残余测量噪声可以忽略不计。

这种策略适用于态度值,但至于速度,我在所有三个轴上都得到不可靠的值。在制定此策略时,我可能没有考虑到什么?它基本上是求解常微分方程的显式欧拉方法:

在哪里

0 投票
1 回答
53 浏览

filter - 加速度数据降噪滤波器

我已经通过使用 madgwick 过滤器成功地补偿了我正在使用的 IMU 的重力。然而,线性加速度的结果相当嘈杂,读数之间的峰值很高。有没有什么过滤器或方法可以用来过滤我的线性加速度,以便更好地利用数据来获得速度和位移?

谢谢!

0 投票
0 回答
21 浏览

python - 在特征检测中整合imu数据和时间戳

使用 lucas kanade 光流在多个图像上测试了特征检测,并已成功执行。现在我希望将此代码与 IMU 数据和时间戳集成。

这是一个 python opencv 库,用于捕获图像上的特征。这用于运行多个图像并输出特征。我看到的问题是我们只在图像帧中获取特征数据,并且我试图在世界帧中捕获它,所以我需要 IMU 来这样做。

0 投票
0 回答
168 浏览

c# - 将 IMU Madgwick 的四元数转换为 Unity3D 中的 x,y,z 位置

我正在尝试实现这一点以及这一点,但在 Unity3D 中并使用 IMU ICM-20948 9-DOF 传感器:

到目前为止,我能够使用 Madgwick 算法并通过在空中倾斜传感器来旋转立方体。我现在不确定如何让它像鼠标指针一样移动。我的经验是——当我上下移动传感器(有点像遥控器一样向上倾斜)时,似乎工作正常。但是当我左右倾斜时,它不起作用。此外,值从正值快速跳到负值,这使得对象出现在屏幕的另一侧——这是针对 x 和 y 的。它起作用的唯一方法是,如果我轻轻地移动它,但它只会停留在一个很小的范围内。我希望能够将它移动到屏幕上的任何位置。

这是我的代码:

尝试对角度中的每个值都使用此函数,但这会使事情变得更糟。

还尝试使用校正的四元数(顺便说一下,这对旋转很有效):

这里有人可以帮助我吗?

0 投票
0 回答
655 浏览

python - 原始 9-D0F IMU 值(陀螺仪、加速度计、磁力计)的 Yaw-Pitch-Roll 转换公式

我从9 DoF IMU 传感器(MPU9250) 获取原始值,这些值包含Gyroscope(Gx,Gy,Gz)、Accelerometer(Ax,Ay,Az)Magnetometer(Mx,My,Mz)

我希望从 Python 上的这些值中获得Yaw、Pitch 和 Roll 。有人可以分享一个转换公式,我可以将这些原始传感器值转换为 Yaw-Pitch-Roll(欧拉角)吗?我发现的那些使用与我的问题无关的旋转矩阵。

此外,从这些 IMU 值中获取四元数的转换公式是什么?

任何帮助,无论是公式形式、对源代码的引用还是代码,都将受到高度赞赏。

0 投票
0 回答
77 浏览

stm32 - BNO055 SYS_STATUS 读取 0x01 而 SYS_ERR 读取 0

尝试从 BNO055 传感器读取数据,但一直为零。我正在使用博世提供的驱动程序,我适应了 STM32L476。我正在使用 Adafruit 开发的非现成 BNO055 板的定制板。我能够获得加速度计和陀螺仪的读数,但是在重新启动电路板并加载新代码后,我又回到了零读数。获取数据然后不获取数据(读取 0)发生了几次,所以我试图了解哪个设置使 BNO055 吐出 0。

现在我一直在检查 SYS_STATUS 寄存器 (0x39) 是否显示为 0x01(系统错误),我读取寄存器 SYS_ERR (0x3A) 以查看失败的原因。我从 SYS_ERR 读取 5(寄存器映射超出范围)然后通过 SYS_TRIGGER 寄存器(0x3F)通过将第二位设置为 1 进行复位。复位后 SYS_ERR 寄存器读取 0,这没有错误,但 SYS_STATUS 仍然读取 0x01,无论多少次我确实重置了 SYS_STATUS = 0x01。有谁知道如何完全重置系统以使 SYS_STATUS 返回 0?

我必须向社区提出的更大问题是为什么我不断从 BNO055 中获得零?我很幸运能从加速度计和陀螺仪而不是磁力计中获得值。

0 投票
0 回答
45 浏览

arduino - 无法使用 Arduino 将 IMU 传感器数据输入到 tflite(魔术棒的修改)

我正在使用 Arduino 编写代码,用于使用 tflite 模型识别来自 Adafruit_LSM6DSOX 传感器的 IMU 数据的手势。我正在使用函数读取数据:

此函数读取 50 x 6 传感器值并将它们复制到模型的输入层:

但是, input[i] 中的值会立即消失(在设置其值后的第二行)。上面的代码输出:

第二个值与在将任何值分配给 input[i] 之前打印它们的值相同。请提供一种将 IMU 数据获取到输入张量的方法。