问题标签 [mpu]
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.
arduino - 我可以只用陀螺仪和磁力计来抵消重力吗?
在设备上,我想检测一系列力:小力(最小约 0.01g)但也更强的力,如 0.1g - 0.15g。
该设备将在 3d 空间中具有不同的位置,因此为了检测小力,我必须知道它的角度才能减去 1g。因为设备可以有一个随机的位置(角度位置)。
到目前为止我所做的:我使用了 MPU6050 并使用了带加速的互补滤波器。和陀螺。它是这样的:
angle_acc
是从加速度计算的角度。传感器。就像是:
所以我感兴趣:
问题是:
如果我想检测一个非常快的小力,假设accelX_k+1
我想检测从 0g 到 0.01g 或更多但在非常小的时间范围内的变化。问题是我计算的角度也会受到加速度的这种小而快的变化的影响。传感器虽然角度并没有真正改变。
我想我必须独立于加速度进行角度计算。传感器。我可以用陀螺仪和磁力计做一个互补滤波器吗?这会和我上面描述的过滤器一样工作,但只是用 mag. 代替传感器?或者你会怎么做?我正在考虑使用MPU9250。
arduino-uno - 为什么索引 2、3、6、7、10、11 的“fifoBuffer”值未在 teapotPacket[] 数组中传递?
我正在使用 Jeff Rowberg 的 MPU6050 库。在代码中,整个fifobuffer 没有传递给'teapotPacket' 数组(用于处理,即图形仿真)。为什么在“teapotPacket”数组中只传递某些索引?(准确地说,只传递下面给出的索引)
请再澄清一件事,为什么 'teapotPacket' 数组是用 $ 、十六进制数字和 '\n' & '\r' 字符初始化的?
math - 改进了加速度计和陀螺仪的倾斜和滚动角计算
我正在开发一个 2axis 陀螺稳定万向节。我使用 10DOF 传感器:
MPU6050(陀螺仪和加速度计) HMC5983(磁力计) MS5611-01BA(高度计)
我已经用这种方法计算了倾斜角和滚动角
这些公式仅使用加速度计的数据。计算工作正常。并且伺服电机对计算命令的响应非常好,直到传感器被推向任何线性方向(线性,我的意思是不旋转),在这种情况下,我们会得到暂时的错误结果。
通常,当我们只得到线性运动或加速度而倾斜和滚动角度没有任何变化时,计算结果应该保持不变,但情况并非如此。
我想知道是否有任何倾斜和滚动角度的增强计算?可能是更复杂的计算,它还使用加速度计旁边的陀螺仪传感器
c - 如何改变MPU9150的灵敏度?
我想知道我在 mpu 9150 (+ Raspberry PI) 上使用的灵敏度。
我希望加速度计具有更高的灵敏度(所以我必须将其设置为 2+/-g ?!?)。
当我数步数时,还不够……我走了 10 步,我用 matlab 数了 3-5 步(有peakfinds
或数过零)
例子:
我脚下或胫骨上的加速度计(产生类似的输出)
accelerometer - 如何从真实加速度 3 轴中消除重力?
我想从我的 3 轴数据中移除重力,请帮我修复它。
arduino - 需要解释 acc_x = Wire.read()<<8|Wire.read();
wire.read()<<8|wire.read() 是做什么的?
c - MPU9255上的磁力计没有数据
从 MPU9255 上的磁力计读取数据时遇到问题。加速度计和陀螺仪工作正常,但我没有收到来自磁力计的任何数据。我正在研究 STM32F103 目标。
有谁知道下面的代码有什么问题?
arm - 覆盖 ARM Cortex-M3 中的默认内存访问行为
根据 ARM,Cortex-M3 的默认行为是阻止从某些内存区域执行。这里的信息:http: //infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/ CIHDHAEF.html
根据上面的信息页面:“可选的 MPU 可以覆盖默认的内存访问行为”。这一切都很好,因为我们希望从特定于实现的 0xF0000000 区域执行代码,默认情况下该区域设置了 XN“从不执行”标志。
我们能够对 MPU 进行编程以对内存区域施加额外的限制,因此 MPU 显然可以工作。但是如果我们将 MPU 设置为允许在 0xF0000000 区域执行,当我们尝试在 0xF0000000 执行时,CPU 仍然会进入异常。
有谁知道 Cortex-M3 MPU 是否应该能够解除默认限制,正如 ARM 页面所建议的那样?
arduino - 四元数问题
我正在使用 MPU9250 来控制 3D 位置。我有一个可以在 3 轴(滚动、俯仰和偏航)上旋转的物体,但我发现了一些问题。最初我试图从四元数计算欧拉角,但我发现欧拉角在 +/- 90 度内有 2 个不连续性,因此如果我将 MPU 旋转 365 度,它会给我错误的值,就像它在旋转时移动一样。我读到有可能将四元数转换为 DCM(方向余弦矩阵),但我发现这个算法填充了太多的 Arduino 处理器进行计算。
我想到的最后一种可能性是直接用四元数控制位置,所以当 MPU 给我相同的四元数时,我必须“预测”到达的四元数以停止旋转。
如果有人知道如何实现此功能或任何其他方式,请告诉我您的建议。
非常感谢,卢卡
arduino - MPU6500代码的配置?
我在配置 MPU-6500 时遇到困难。我不确定如何校准它以获得准确的读数,因为我对此仍然很陌生。我正在使用 MPU-6500 和我的 Arduino Uno。下面是我在参考了我可以在网上找到的资源后编写的代码,并试图对其进行评论以试图理解代码。MPU-6050 有许多可用资源,但 MPU-6500 却没有。