相关疑难解决方法(0)

将方向存储到数组 - 并进行比较

我想实现以下目标:

我希望用户能够使用陀螺仪"记录"iPhone的运动.之后,用户应该能够复制相同的动作.我使用以下方法提取俯仰,滚转和偏航:

 [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
                                       withHandler: ^(CMDeviceMotion *motion, NSError *error)
     {
         CMAttitude *attitude = motion.attitude;
         NSLog(@"pitch: %f, roll: %f, yaw: %f]", attitude.pitch, attitude.roll, attitude.yaw);
     }];
Run Code Online (Sandbox Code Playgroud)

我想如果用户处于记录模式,我可以将这些值存储到数组中.当用户尝试复制该移动时,我可以将复制的移动阵列与录制的移动阵列进行比较.问题是,如何以智能方式比较两个阵列?它们永远不会具有完全相同的值,但它们可能有些相同.

我在这里走在正确的轨道上吗?

更新:我想也许Alis回答有关使用DTW的方法对我来说可能是正确的方法.但是我并不那么聪明(显然),所以如果有人能帮助我完成与阵列比较的第一步,我会是一个快乐的人!

谢谢!

iphone math android artificial-intelligence gesture-recognition

22
推荐指数
2
解决办法
1万
查看次数

无论设备旋转如何都能检测到移

无论用户如何握住手机,我都会搜索一种检测手机移动的方法.

一些例子:

  • 我感兴趣的是垂直运动(就像用户拉电话一样)'忽略'如果电话放在桌子上或握在手中(可能是颠倒的).
  • 对水平移动感兴趣(例如用户将手机推离身体)也"忽略"用户如何握住手机.

背景是我想要识别用户是否将手机从口袋中取出(例如向上拉30-40厘米,也可以在水平方向上拉几厘米).

我认为因此我必须从userAcceleration和态度中获得一个组合.但我没有找到正确的数学..

ios core-motion

12
推荐指数
1
解决办法
326
查看次数

在控制器内调用startDeviceMotionUpdatesToQueue时,我得到了OSSpinLockLock

在我的根控制器中,我有一个属性 CMMotionManager

@property (strong, nonatomic) CMMotionManager *MManager;
Run Code Online (Sandbox Code Playgroud)

在它的吸气器中我做懒惰的实例化.当控制器的视图加载时,我调用此方法

- (void)reloadAccelerometer {
    NSLog(@"Away we go");
    self.MManager.deviceMotionUpdateInterval = 10.0/60.0;
    [self.MManager startDeviceMotionUpdatesToQueue:self.queue withHandler:^(CMDeviceMotion *motion, NSError *error) {
        NSLog(@"Y values is: %f", motion.userAcceleration.y);
    }];
}
Run Code Online (Sandbox Code Playgroud)

我看到"离开我们去" NSLog然后立即应用程序崩溃,我得到这个线程日志

libsystem_platform.dylib`spin_lock$VARIANT$mp:
0x39a87814:  movs   r1, #1

libsystem_platform.dylib`OSSpinLockLock$VARIANT$mp + 2:
0x39a87816:  ldrex  r2, [r0]
0x39a8781a:  cmp    r2, #0
0x39a8781c:  it     ne
0x39a8781e:  bne.w  0x39a893ec                ; _OSSpinLockLockSlow$shim
0x39a87822:  strex  r2, r1, [r0]
0x39a87826:  cmp    r2, #0
0x39a87828:  bne    0x39a87816                ; OSSpinLockLock$VARIANT$mp + 2
0x39a8782a:  dmb    ish
0x39a8782e:  bx     lr …
Run Code Online (Sandbox Code Playgroud)

objective-c ios core-motion

7
推荐指数
1
解决办法
1692
查看次数