Cornish Reps на главную

Как считается повторение

Счёт идёт не по звуку и не по камере. В наушнике стоит датчик движения, iOS отдаёт с него ускорение, угол головы и скорость вращения, а приложение ищет в этой линии повторения. Ниже что за линия, как из неё получается число и где оно врёт. Записи настоящие, их можно скачать и посмотреть самому.

Что отдаёт наушник

iOS отдаёт поток CMDeviceMotion от датчика в наушнике: около пятидесяти кадров в секунду, в каждом ускорение по трём осям, кватернион поворота головы и скорость вращения.

Приложение берёт оттуда три вещи. Ускорение вдоль вектора гравитации: подъём и опускание тела. Угол наклона головы (pitch): куда смотрит голова относительно горизонта. Гравитацию вдоль оси уха (gy): лежит человек или стоит.

Два способа считать

Пресс и отжимания с колен считаются по углу головы. Корпус вращается целиком, темп не важен, а болтанка тела в угле почти не видна. Повторение засчитывается на возврате из нижней точки: когда угол отыграл назад и размах от прошлого верха набрал свою величину. Абсолютных порогов тут нет: у одного человека верхняя точка ниже, чем у другого нижняя.

Отжимания, приседания и подтягивания считаются по ускорению вдоль гравитации. Порог свой на упражнение: у приседа сигнал огромный и порог 0.15 G, у отжиманий 0.06, у подтягиваний 0.07. У приседа и отжиманий цикл трёхфазный: спуск, толчок, возврат, и счёт идёт на возврате в исходную позицию, а не в нижней точке.

Пресс: 22 повторения подряд

Ровный подход без пауз. Каждая яма это скручивание, засечка это момент зачёта. Видно, что нижние точки гуляют по глубине, а счёт всё равно ровный: он смотрит на размах и на возврат, а не на абсолютный уровень.

situps-live: 22 повторений за 63.2 секунд

Почему одного порога мало

Порог по амплитуде ловит любое движение подходящей величины. Человек лёг в упор, сел, попил, потянулся за телефоном, потряс головой: всё это даёт цикл нужного размаха. Поэтому поверх порога стоят гейты, и каждый вырос из конкретного разбора записи, где счёт соврал.

Гейт по позе. Отжимания идут головой вниз: у живых повторений гравитация вдоль оси уха 0.55 и выше, а ложные приходят из положения стоя или сидя, там она около нуля. Присед наоборот делается с ровной головой, и наклон за чем-нибудь с пола раньше засчитывался как повторение.

Гейт по вращению. Тряска, кивки и повороты вращают голову: медиана модуля скорости вращения 1.4 и выше. Настоящее повторение едет линейно, там 0.85 и ниже. У пресса такого гейта нет: лёжа голова вращается законно.

Гейт по длительности цикла. Настоящее скручивание занимает от 0.5 до 2.4 секунды. Укладка в позу, питьё и втыкание в телефон дают 2.6 и больше.

Гейт по энергии. У ложного цикла сигнал жидкий: порог пересечён, а площади под кривой нет. Минимум по площади отсекает шум на слабом сигнале.

Рефрактерный период. После зачёта следующее повторение не раньше чем через 0.6 секунды у отжиманий и 1.2 у приседа.

Отжимания: выход из упора

Запись из тюнинга гейта по позе. К концу подхода человек садится и пытается отжиматься из полусидя. Сигнал по амплитуде остаётся похожим, а гравитация вдоль оси уха падает, и счёт останавливается.

pushups-outofpose: 9 повторений за 48.2 секунд

Отжимания с колен: старт подхода

Опускание из вертикали в упор занимает две-четыре секунды и даёт цикл угла больше, чем само повторение. Раньше укладка засчитывалась, а первое настоящее повторение терялось. Лечится скользящим окном верхней точки и требованием, чтобы возврат из нижней точки был не только абсолютным, но и долей размаха.

knees-falsestart: 8 повторений за 23.8 секунд

Приседания: паузы

Между повторениями человек стоит и дышит. Счётчик состояния не теряет: фаза сбрасывается только если завис в полуцикле дольше шести секунд.

squats-pauses: 21 повторений за 78.9 секунд

Где счёт врёт

Пороги я подбирал по записям своих тренировок и тренировок пары знакомых, все в AirPods Pro. Другие модели гонял меньше, и на них счёт может уезжать.

Слабые и очень медленные повторения теряются: размах не набирает порог. Уставшие скручивания ныряют мельче, для них порог уже опущен, но дно есть.

Лишнее приходит из движений, похожих на упражнение: перекладывание тела, разминка, потягивания в паузе.

Ошибку в подходе можно поправить голосом: плюс N, минус N. Это не костыль, а часть работы: счётчик оценивает движение, а не измеряет его.

Если модель мажет постоянно, выгрузи csv с экрана счётчика и пришли на hi@cornishreps.com. Одна запись помогает больше любого описания на словах.

Записи

Четыре записи с графиков выше, как есть, прямо с телефона. В каждой строке время, ускорение по трём осям, гравитация, угол головы, скорость вращения, сглаженный сигнал, состояние гейта и счёт на этот момент.

Личного в них нет: только числа с датчика и метки времени.

Поставить из TestFlight

iOS 18 и новее. Бесплатно, аккаунт не нужен. Идёт тестирование, что-то может не работать