为啥磁场的值固定为零?

Posted

技术标签:

【中文标题】为啥磁场的值固定为零?【英文标题】:Why the values of magneticField.field are fixed in zero?为什么磁场的值固定为零? 【发布时间】:2016-07-31 03:06:07 【问题描述】:

我需要对三轴磁场、三轴加速度和三轴旋转速率进行采样,所以我使用了DeviceMotion,这是我的代码:

 if manager.deviceMotionAvailable 
        if manager.magnetometerAvailable 
        manager.magnetometerUpdateInterval=0.01
        manager.deviceMotionUpdateInterval = 0.01
             manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: (data: CMDeviceMotion?, error: NSError?) -> Void in
         if(standard_time) 
         let data = [
                    "ax":data!.userAcceleration.x,"ay":data!.userAcceleration.y,"az":data!.userAcceleration.z,                      
                    "gax":data!.gravity.x,"gay":data!.gravity.y,"gaz":data!.gravity.z,
                    "gx":data!.rotationRate.x,"gy":data!.rotationRate.y,"gz":data!.rotationRate.z,
                    "mmx":data!.magneticField.field.x,"mmy":data!.magneticField.field.y,"mmz":data!.magneticField.field.z,
                   "roll":data!.attitude.roll, "pitch":data!.attitude.pitch, "yaw":data!.attitude.yaw]
                 
                )
  
 

但是,无论我多么努力地移动我的 iphone,我得到的 3 轴磁场值都固定为零。你能帮我吗???

【问题讨论】:

我同时需要 3 轴加速度和 3 轴旋转速率,所以我不能使用 startDeviceMotionUpdatesToQueue 和 startMagnetometerUpdatesToQueue 因为它的采样时间不同。事实上,虽然我设置了相同的磁力计更新间隔与 deviceMotionUpdateInterval ,如果我使用startDeviceMotionUpdatesToQueue和startMagnetometerUpdatesToQueue,不仅采样时间不同,而且采样数也不同 【参考方案1】:

您似乎调用了错误的方法来获取磁力计数据。

    if manager.deviceMotionAvailable 
        if manager.magnetometerAvailable 
            manager.magnetometerUpdateInterval = 0.01
            manager.deviceMotionUpdateInterval = 0.01
            manager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler:  (data: CMMagnetometerData?, error: NSError?) in
                // Do something with data
                print(data)
            )

        
    

【讨论】:

但是我同时需要3轴加速度和3轴旋转速率,我尝试使用startMagnetometerUpdatesToQueue和startDeviceMotionUpdatesToQueue,但它不能同时采样这些数据......所以我不知道该怎么办...

以上是关于为啥磁场的值固定为零?的主要内容,如果未能解决你的问题,请参考以下文章

ansyselectronics为啥添加不了线圈

为啥固定大小的缓冲区(数组)一定是不安全的?

为啥 Pytorch Dropout 层会影响所有值,而不仅仅是设置为零的值?

为啥相电流相反电势波形一致便可达成FOC控制目的

当我尝试使用 UserDefaults(watchOS)从共享组中读取时,为啥我的值为零

具有固定子集大小的 Sum-subset