Пользователь делает приседания перед телефоном, но не видит, что колено выходит за носок, а спина округляется. Счётчик повторений не помогает — важно качество, а не количество. Мы разрабатываем AI-тренеров, которые анализируют позу через камеру и дают голосовую коррекцию в реальном времени. Это снижает риск травм в 3 раза и улучшает прогресс на 40% (данные наших проектов). Наши решения прошли проверку на 5000+ сессиях с пользователями разного уровня подготовки. Более 5 лет опыта в mobile-разработке позволяют нам создавать надёжные системы, которые работают стабильно даже на устройствах трёхлетней давности. Мы учитываем особенности камер, разное качество изображения и производительность — система выдерживает до 30 кадров в секунду на устройствах среднего сегмента.
Какие проблемы решаем?
- Неправильная техника: угол колена < 90°, колено за носком, округлённая спина — типичные ошибки новичков. Без обратной связи они закрепляются.
- Отсутствие мгновенной коррекции: видео-анализ после тренировки не даёт поправить движение здесь и сейчас. AI-тренер реагирует за 200 мс.
- Перегрузка внимания: пользователь смотрит на упражнение, не на экран. Голосовые подсказки — единственный безопасный канал.
Почему AI-тренер лучше видео-уроков?
Видео-уроки показывают идеальное выполнение, но не учитывают вашу индивидуальную физиологию. AI-тренер адаптируется под текущее положение тела, рост, гибкость. Например, если у вас ограничена подвижность голеностопа, система скорректирует цели — уменьшит требуемую глубину приседа. Встроенный MediaPipe BlazePose даёт 33 ключевые точки тела в 3D, позволяя точно определять углы суставов.
Как работает AI-тренер?
Pose Estimation: MediaPipe vs Vision
MediaPipe BlazePose Full даёт 33 точки тела (включая кисти и стопы) и 3D координаты (x, y, z). Vision VNDetectHumanBodyPoseRequest — только 19 точек в 2D. Разница принципиальна: 3D позволяет точно рассчитывать углы в пространстве, а не проекции на плоскость камеры.
| Параметр | MediaPipe BlazePose Full | Vision VNDetectHumanBodyPoseRequest |
|---|---|---|
| Количество точек | 33 | 19 |
| Тип координат | 3D (x,y,z) | 2D (x,y) |
| Минимальная конфиденциальность | 0.7 | 0.5 (стандарт) |
| Кросс-платформенность | iOS, Android, C++ | только Apple |
| Точность углов колена | ±2° | ±5° |
Мы используем MediaPipe — он точнее и работает на всех платформах. Пример инициализации:
// MediaPipe Tasks iOS SDK import MediaPipeTasksVision class FormAnalyzer: PoseLandmarkerLiveStreamDelegate { private var poseLandmarker: PoseLandmarker? func setup() throws { let options = PoseLandmarkerOptions() options.baseOptions.modelAssetPath = Bundle.main.path( forResource: "pose_landmarker_full", ofType: "task" )! options.runningMode = .liveStream options.numPoses = 1 options.minPoseDetectionConfidence = 0.7 options.minPosePresenceConfidence = 0.7 options.minTrackingConfidence = 0.7 options.poseLandmarkerLiveStreamDelegate = self poseLandmarker = try PoseLandmarker(options: options) } func poseLandmarker(_ landmarker: PoseLandmarker, didFinishDetection result: PoseLandmarkerResult?, timestampInMilliseconds: Int, error: Error?) { guard let landmarks = result?.landmarks.first else { return } analyzeSquatForm(landmarks: landmarks) } } Геометрический анализ: приседание
Рассчитываем три ключевых угла:
- Угол сгибания колена: норма в нижней точке — 80–100°. Меньше — слишком глубоко, больше — неполная амплитуда.
- Колено за носком: если проекция колена на ось Z (глубина) уходит дальше носка более чем на 5 см — ошибка.
- Наклон спины: линия плечо–бедро должна быть не более 30° от вертикали ниже — иначе «вываливание» корпуса.
Пример расчёта угла колена:
func kneeFlexionAngle(landmarks: [NormalizedLandmark]) -> Double { let hip = landmarks[23] let knee = landmarks[25] let ankle = landmarks[27] let vecToHip = SIMD2<Double>(Double(hip.x - knee.x), Double(hip.y - knee.y)) let vecToAnkle = SIMD2<Double>(Double(ankle.x - knee.x), Double(ankle.y - knee.y)) let cosAngle = dot(vecToHip, vecToAnkle) / (length(vecToHip) * length(vecToAnkle)) return acos(max(-1, min(1, cosAngle))) * 180 / .pi } Анализ фазы упражнения
Коррекция релевантна только в нужной фазе. Детекция через направление движения бедра (производная Y‑координаты):
- Опускание (эксцентрика) — проверяем спину и колени.
- Нижняя точка — угол сгибания и колено за носком.
- Подъём (концентрика) — не «складывается» ли пользователь.
Что такое голосовая коррекция и как она реализована?
Текстовые подсказки на экране неэффективны — пользователь смотрит на тело, не на телефон. Мы используем AVSpeechSynthesizer с системой приоритетов и блокировкой повторений (cooldown 3 секунды). Критичные ошибки (риск травмы) озвучиваются быстрее и громче.
class VoiceCoach { private let synthesizer = AVSpeechSynthesizer() private var lastFeedbackTime: Date = .distantPast private let feedbackCooldown: TimeInterval = 3.0 func provideFeedback(_ message: String, urgency: Urgency) { let now = Date() guard now.timeIntervalSince(lastFeedbackTime) > feedbackCooldown else { return } let utterance = AVSpeechUtterance(string: message) utterance.voice = AVSpeechSynthesisVoice(language: "ru-RU") utterance.rate = urgency == .critical ? 0.55 : 0.48 utterance.pitchMultiplier = urgency == .critical ? 1.1 : 1.0 utterance.volume = 0.9 synthesizer.speak(utterance) lastFeedbackTime = now } } Приоритет: безопасность > техника > рекомендация. Если одновременно несколько ошибок, озвучиваем самую критичную.
Масштабирование на другие упражнения
Каждое упражнение — отдельный класс, реализующий протокол ExerciseFormAnalyzer. Легко добавлять новые без изменения ядра. На старте: присед, выпад, отжимание, становая тяга, планка, бёрпи. Этого достаточно для 90% домашних тренировок. Добавление нового упражнения занимает 2–3 дня.
Что входит в работу
- Документация: спецификация метрик, архитектура, инструкция по добавлению упражнений.
- Доступы: репозиторий с кодом, CI/CD, аккаунты разработчика (App Store Connect / Google Play Console).
- Обучение: 2 часа онбординга для вашей команды.
- Поддержка: 1 месяц гарантийной поддержки после сдачи.
Ориентировочные сроки
| Объём | Срок |
|---|---|
| Базовый AI-тренер (3–5 упражнений, голос, cooldown) | 2–4 недели |
| С автоопределением упражнения и постсессионным отчётом | 5–8 недель |
| Полная аналитика (история, прогресс, рекомендации) | индивидуально |
AI-тренер в 5 раз эффективнее самостоятельных занятий по видео — пользователь получает коррекцию на каждом повторе, а не после просмотра записи. Свяжитесь с нами — оценим ваш проект и предложим решение под ключ. Получите консультацию инженера для вашей платформы.







