问题标签 [magnetometer]
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.
iphone - iPhone 指南针显示错误的航向俯仰角 > 约 45°
这可能很难解释几何,所以我会小心拼写出来。这在标准 compas 应用程序和 CLLocationManager 中的数据中可见。
1) 竖握手机时,考虑俯仰角为0°
2) 当将相机指向天空时(例如拍摄云的照片),俯仰角从 0° -> 90° 变为 90° 是直线向上。
3)当手机向上倾斜(> 0 度并在“X”磁力计轴上旋转)并且当手机处于大约(但不完全)45 度时,指南针航向旋转 180 度。因此,当相机仍然指向“N”时,指南针将报告“S”。
4) 对于下一个(大约)90 度,罗盘航向旋转 180 度。
航向的这种旋转对我来说是破坏性的,它与加速度计并没有完全对齐。是否有关于使用 CLHeading 数据中的 RAW 数据(X、Y、Z)来计算航向数据的好的教程(我没有找到一个)?
最终结果是我希望指南针的航向始终与相机的航向匹配。
iphone - iPhone硬件功能:磁力计和陀螺仪
有人可以告诉我,对于已售出的任何 iPhone,它们是否配备了陀螺仪和磁力计?
作为补充,您知道有一个网站可以提供所售 iPhone 的硬件功能比较表吗?(我所说的 iPhone 是指任何具有电话功能的 iDevice,在“必需的设备功能”=“电话”plist 键的意义上。也许除了 iPhone 可以做到这一点?)
objective-c - iOS5:CLHeading 读数更新率低 -> 切换到 CoreMotion 有问题
在 iOS5 中,Compass 原始数据读取的更新频率CLHeading
急剧下降。这使得我的增强现实应用程序无法使用,因为它依赖于对原始指南针数据的接近实时读取。
因此,我现在正尝试切换到 CoreMotion。这提供了更频繁更新的磁力计数据:
magneticField
然后我可以在游戏期间随时访问数据:
我遇到的问题如下: 中的数据与x/y/z 数据CMMagneticField
的单位不同。CLHeading
我想将CMMagneticField
x/y/z 数据转换为与 CLHeading / CLHeadingComponentValue 相同的单位——以便能够使用我现有的 AR 代码。
这里有一些读数:
iphone - iPhone - CMMotionManager 属性和 iPhone 硬件
有人知道,对于 CMMotionmanager.deviceMotion 的每个属性及其子属性,它们基于什么样的硬件(磁力计、加速度计、陀螺仪......)?
我的问题是关于HARDWARE,而不是软件。
我需要知道 CMMotionManager 从哪块硬件获取其值,以了解我的 CMMotionManager 调用将在哪种 iPhone 上工作。并在我的网站上写下相应的文本。
那么使用什么硬件来构建:
deviceMotion.attitude.roll
deviceMotion.attitude.pitch
deviceMotion.attitude.yaw
deviceMotion.rotationRate(唯一陀螺仪?Iphone 4 / 4S with iOS4)
deviceMotion.gravity(唯一加速度计?所以它应该适用于所有使用iOS4的iPhone)
deviceMotion.userAcceleration(唯一的加速度计?所以它应该适用于所有带有 iOS4 的 iPhone)
deviceMotion.magneticFied(唯一的磁力计?带有 iOS4 的 Iphone 3GS / 4 / 4S)
android - Android:如何控制 onSensorChange 采样率
我对 Android 中的传感器读取率有点困惑。下面的代码报告了约 53 毫秒的延迟(ZTE Blade,速率传感器事件设置为 SENSOR_DELAY_FASTEST)。
日志:
如果我们要平均说 100 个样本,然后保存数据,则每 100 个样本之间的时间将有很大差异。这大概是因为传感器值在常规时间段内没有变化。
但我错过了什么吗?有没有办法获得(更多)定期测量(例如 100 毫秒)?或者也许我应该在特定时间段内进行平均而不是样本数?
50ms 似乎也有点长。这可能是设备的硬件限制吗?这个数字会在不同的平台上有所不同吗?
任何建议表示赞赏。
accelerometer - 谁能告诉我重力传感器是否可以作为倾斜传感器来提高航向精度?
当手机与当地地面水平时,磁力计的 X 轴和 Y 轴可用于计算北向。但是在滚动或俯仰手机时,我们应该使用滚动和俯仰度来消除倾斜误差。
现在,我想知道是否将重力传感器用作倾斜传感器来获取横滚和俯仰以帮助提高向北航行的准确性?
android - 如何在android中使用磁力计查找磁场强度
我想从 Android 设备的磁力计中获取磁场强度。
使用 android 设备的磁力计,我可以在 Micro Tesla 中以 x、y 和 z 轴的形式获得磁场数据。
但我不知道如何找到磁场。
任何建议、想法或示例代码表示赞赏。. .
java - Android getRotationMatrix 为所有值提供 0
我正在尝试使用磁场和加速度计来计算方向。但是,计算出的 Az、Pitch 和 Roll 为 0。代码如下:
知道有什么问题吗?
ios - 传感器与指南针和陀螺仪融合:0 到 360 度之间
我正在开发一个小型室内导航应用程序,我在其中使用陀螺仪和指南针进行设备定位。我使用陀螺仪来平滑罗盘数据。我的传感器融合如下所示。这是我的motionHandler,一切都发生在这里。
实际的传感器融合公式是这一行:updatedHeading = (19.0*updatedHeading + 1.0*heading)/20.0;
。这是我的 didUpdateHeading 函数,它接收最新的标题信息:
diffYaw
是陀螺仪计算的航向变化。rotation
是最后一个四元数。这很完美,除了一种特殊情况:在 0 到 360 度之间的过渡。
如果updatedHeading
接近但小于 360 并且mHeading
刚好高于 0,则结果会移动一个圆圈。例如如果updatedHeading
= 355 和mHeading
= 5,正确的结果应该在 360 和 5 之间。但是我的公式计算的是 337.5 度,这显然是完全错误的!
我认为必须有任何常见的解决方法来解决这个问题……</p>
android - 从磁性传感器获取电压
这很可能是一个非常愚蠢的问题,所以我提前道歉。
我有一个潜在的客户,让其他人声称我们从某些 Android 设备的磁传感器收到的值可以通过公式(使用时间)来实际计算附近的电压。这个想法是在靠近设备时使用设备测试相当小的电压量(大约 5-7v)。
我查看了一个又一个文档,并且我们已经使用了一些人提供的现有计算,但似乎没有任何东西可以可靠地工作。看起来很有趣的是,当靠近电压产生器时,X/Y/Z 值确实发生了显着变化(它们似乎在大多数情况下变为负值),但似乎没有可靠的方法来将值转换为电压,当我考虑到远离电压源时这些 x/y/z 值是什么(它们保持不变,但只有正值)。
我知道可以通过公式 SQRT(x^2+y^2+z^2) 找到实际磁场,但我还没有找到将其转换为电压的可靠算法。
再次为愚蠢的问题感到抱歉,但是这样的事情甚至可能吗?我想这是问的正确地方。提前非常感谢!