Рассчитайте небольшое пройденное расстояние по вертикали на iPhone - PullRequest
4 голосов
/ 24 января 2020

В настоящее время я работаю над приложением, которое должно определить, запускается ли iPhone и останавливается ли движение по вертикали. Мне нужно уметь обнаруживать довольно короткое (50-100 см) пройденное вертикальное расстояние, т. Е. Если человек выполняет приседания.

Есть ли способ подсчитать, что Базовая основа движения ?

let motion = CMMotionManager()

if motion.isDeviceMotionAvailable {
    self.motion.deviceMotionUpdateInterval = 1.0 / 60.0
    self.motion.showsDeviceMovementDisplay = true

    self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: .main, withHandler: { (data, error) in
        if let validData = data {
            // Just a random minimum acceleration threshold                    
            if validData.userAcceleration.y > 3 {
               print(validData.userAcceleration.y)
            }
         }
     })
}

Ответы [ 2 ]

2 голосов
/ 26 января 2020

Можно ли рассчитать расстояние по вертикали, пройденное с помощью инфраструктуры Core Motion?

Core Motion может определять ориентацию (как телефон ориентирован) и ускорение (как телефон запускается или останавливается, ускоряется или замедляется). Плавное вертикальное движение не будет регистрироваться вообще. Возможно, вы знаете, что движение началось и закончилось, но не насколько далеко друг от друга произошли эти события. Вы можете догадаться об этом, основываясь на начальном ускорении (которое могло бы подсчитать, насколько быстро мы начали движение) и времени до замедления. Но это было бы намного больше, чем предположение.

1 голос
/ 02 февраля 2020

Ну, пришлось сделать немного похожей работы для одного из приложений, над которыми я работал ранее. Таким образом, ключ состоит в том, чтобы использовать все датчики, к которым у вас есть доступ. Акселерометр, гироскоп, GPS и магнитометр (вероятно, не GPS и компас в вашем случае). Затем следующим шагом будет выполнение нескольких полных приседаний (надеюсь, ваш офис в порядке с этим :-), так как вы ожидаете, что ваш пользователь получит базовые данные. Тогда вы можете построить модель на этом.

Ну, если вы хотите быть по-настоящему дерзким, вы можете сделать то, что мы сделали, мы отправили эти данные датчика в ML API / Model. Со временем это стало действительно точным. Теперь мы более чем на 90% точны. Тем не менее, это может быть излишним в вашем случае.

...