Користувач робить присідання перед телефоном, але не бачить, що коліно виходить за носок, а спина округлюється. Лічильник повторень не допомагає — важлива якість, а не кількість. Ми розробляємо 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: "uk-UA")
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 разів ефективніший за самостійні заняття по відео — користувач отримує корекцію на кожному повторі, а не після перегляду запису. Зв'яжіться з нами — оцінимо ваш проєкт та запропонуємо рішення під ключ. Отримайте консультацію інженера для вашої платформи.







