Приложение Yoga teacher под iOS

ДНЕПР, УКРАИНА

Нью-Йорк, США

WhatsApp, Telegram, Skype

Yoga teacher - это уникальное приложение для занятий йогой дома с интерактивным измерением точности выполнения поз (асан) с помощью камеры и алгоритма распознавания движений пользователя.

Приложение сделали под iPad, так как это наиболее удобное устройство для занятий йогой и просмотра поз на экране.


 

Постановка задачи


Дать возможность новичкам заниматься йогой и улучшить свое мастерство с помощью интерактивного обучающего тренажера. Тренажер заменит тренера, поэтому нет необходимости посещать студии йоги.

Новички занимаются по картинкам, но они могут стать в асану (позу) неправильно. Приложение - самоучитель, который может с помощью камеры устройства определять положение человека, сверять с параметрами выполняемой позы и выдавать процент точности выполнения.
 

приложение Yoga teacher под android
 

Исследование


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

Алгоритм должен рассчитывать соотношения точек эталона и пользователя, тем самым рассчитывая процент точности выполнения поз.

При поиске решения испытывали различные математические формулы. Например, по формуле евклидовой метрики высчитывали расстояние от угловых точек, далее по ним определяли позу, но в дальнейшем эту формулу отбросили. 

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

Создание минимального продукта


Мы создали технологию для MVP, а для тестирования устраивали настоящие занятия йогой. В тестировании участвовали как умелые йоги, так и новички. Было принято решение разделить девушек и парней для лучшего распознавания качества выполнения поз.
 

создания приложения Yoga teacher


Для пользователей, в зависимости от уровня владения йогой, была построена таблица: насколько точно надо принять асану, чтобы выполнить упражнение правильно. Проверяли параметры каждой асаны приложения (84 позы) с каждым тестируемым по 3 повторения, чтобы иметь максимально точные базовые показания. У каждой позы был свой предел точности – картинка, взятая как идеальный вариант.


параметры асаны - приложение yoga teacher

асана в приложении Yoga teacher


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

йога приложение Yoga teacher
 

Технология


При поиске решения пришли к выводу, что аналогов технологии распознавания сложной позы человека через фронтальную 2D камеру нет: консоль XBox Kinect 360 выполняет схожую цель, но она имеет 3 камеры, которые снимают в 3D. В нашем же случае мы нашли решение с одной фронтальной 2D камерой iPad. 

Наши специалисты специально для создания нужной технологии изучали OpenCV (библиотеку компьютерного зрения) и нашли способы его внедрения в iOS (технология работает только на этом языке). Встраивание модуля распознавания в iOS оказалось непростой задачей. Технология писалась на языке C++, который не является объектно  ориентированным, поэтому он конфликтовал с objective-c.


технология йога приложения Yoga teacher
 

Концепции дизайна


Поставили задачу сделать приложение простым в использовании, людям должно быть легко и удобно взаимодействовать с приложением.  

Визуальное оформление должно быть приятным, но в тоже время настраивать на занятие йогой.

Исходя из этого, было подготовлено 3 концепции:


дизайн приложения для йоги Yoga teacher

дизайн приложения Yoga teacher
 

приложение Yoga teacher
 

UI-дизайн


После всех исследований начался процесс разработки и создания UI-приложения, которое имеет следующий функционал:

 

приложение yoga teacher - UI-дизайн

UI-дизайн приложения Yoga teacher
 

Yoga teacher

история тренировок в приложении Yoga teacher
 

приложение Yoga teacher под android

приложение Yoga teacher для йоги
 

Требования наших клиентов на стадии оценки проекта:



 

Расчет проекта

Что будем делать? Каждая мелочь и мысль может помочь нам составить необходимое представление о проекте

  • United States+1
  • United Kingdom+44
  • Afghanistan (‫افغانستان‬‎)+93
  • Albania (Shqipëri)+355
  • Algeria (‫الجزائر‬‎)+213
  • American Samoa+1
  • Andorra+376
  • Angola+244
  • Anguilla+1
  • Antigua and Barbuda+1
  • Argentina+54
  • Armenia (Հայաստան)+374
  • Aruba+297
  • Australia+61
  • Austria (Österreich)+43
  • Azerbaijan (Azərbaycan)+994
  • Bahamas+1
  • Bahrain (‫البحرين‬‎)+973
  • Bangladesh (বাংলাদেশ)+880
  • Barbados+1
  • Belarus (Беларусь)+375
  • Belgium (België)+32
  • Belize+501
  • Benin (Bénin)+229
  • Bermuda+1
  • Bhutan (འབྲུག)+975
  • Bolivia+591
  • Bosnia and Herzegovina (Босна и Херцеговина)+387
  • Botswana+267
  • Brazil (Brasil)+55
  • British Indian Ocean Territory+246
  • British Virgin Islands+1
  • Brunei+673
  • Bulgaria (България)+359
  • Burkina Faso+226
  • Burundi (Uburundi)+257
  • Cambodia (កម្ពុជា)+855
  • Cameroon (Cameroun)+237
  • Canada+1
  • Cape Verde (Kabu Verdi)+238
  • Caribbean Netherlands+599
  • Cayman Islands+1
  • Central African Republic (République centrafricaine)+236
  • Chad (Tchad)+235
  • Chile+56
  • China (中国)+86
  • Christmas Island+61
  • Cocos (Keeling) Islands+61
  • Colombia+57
  • Comoros (‫جزر القمر‬‎)+269
  • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
  • Congo (Republic) (Congo-Brazzaville)+242
  • Cook Islands+682
  • Costa Rica+506
  • Côte d’Ivoire+225
  • Croatia (Hrvatska)+385
  • Cuba+53
  • Curaçao+599
  • Cyprus (Κύπρος)+357
  • Czech Republic (Česká republika)+420
  • Denmark (Danmark)+45
  • Djibouti+253
  • Dominica+1
  • Dominican Republic (República Dominicana)+1
  • Ecuador+593
  • Egypt (‫مصر‬‎)+20
  • El Salvador+503
  • Equatorial Guinea (Guinea Ecuatorial)+240
  • Eritrea+291
  • Estonia (Eesti)+372
  • Ethiopia+251
  • Falkland Islands (Islas Malvinas)+500
  • Faroe Islands (Føroyar)+298
  • Fiji+679
  • Finland (Suomi)+358
  • France+33
  • French Guiana (Guyane française)+594
  • French Polynesia (Polynésie française)+689
  • Gabon+241
  • Gambia+220
  • Georgia (საქართველო)+995
  • Germany (Deutschland)+49
  • Ghana (Gaana)+233
  • Gibraltar+350
  • Greece (Ελλάδα)+30
  • Greenland (Kalaallit Nunaat)+299
  • Grenada+1
  • Guadeloupe+590
  • Guam+1
  • Guatemala+502
  • Guernsey+44
  • Guinea (Guinée)+224
  • Guinea-Bissau (Guiné Bissau)+245
  • Guyana+592
  • Haiti+509
  • Honduras+504
  • Hong Kong (香港)+852
  • Hungary (Magyarország)+36
  • Iceland (Ísland)+354
  • India (भारत)+91
  • Indonesia+62
  • Iran (‫ایران‬‎)+98
  • Iraq (‫العراق‬‎)+964
  • Ireland+353
  • Isle of Man+44
  • Israel (‫ישראל‬‎)+972
  • Italy (Italia)+39
  • Jamaica+1
  • Japan (日本)+81
  • Jersey+44
  • Jordan (‫الأردن‬‎)+962
  • Kazakhstan (Казахстан)+7
  • Kenya+254
  • Kiribati+686
  • Kosovo+383
  • Kuwait (‫الكويت‬‎)+965
  • Kyrgyzstan (Кыргызстан)+996
  • Laos (ລາວ)+856
  • Latvia (Latvija)+371
  • Lebanon (‫لبنان‬‎)+961
  • Lesotho+266
  • Liberia+231
  • Libya (‫ليبيا‬‎)+218
  • Liechtenstein+423
  • Lithuania (Lietuva)+370
  • Luxembourg+352
  • Macau (澳門)+853
  • Macedonia (FYROM) (Македонија)+389
  • Madagascar (Madagasikara)+261
  • Malawi+265
  • Malaysia+60
  • Maldives+960
  • Mali+223
  • Malta+356
  • Marshall Islands+692
  • Martinique+596
  • Mauritania (‫موريتانيا‬‎)+222
  • Mauritius (Moris)+230
  • Mayotte+262
  • Mexico (México)+52
  • Micronesia+691
  • Moldova (Republica Moldova)+373
  • Monaco+377
  • Mongolia (Монгол)+976
  • Montenegro (Crna Gora)+382
  • Montserrat+1
  • Morocco (‫المغرب‬‎)+212
  • Mozambique (Moçambique)+258
  • Myanmar (Burma) (မြန်မာ)+95
  • Namibia (Namibië)+264
  • Nauru+674
  • Nepal (नेपाल)+977
  • Netherlands (Nederland)+31
  • New Caledonia (Nouvelle-Calédonie)+687
  • New Zealand+64
  • Nicaragua+505
  • Niger (Nijar)+227
  • Nigeria+234
  • Niue+683
  • Norfolk Island+672
  • North Korea (조선 민주주의 인민 공화국)+850
  • Northern Mariana Islands+1
  • Norway (Norge)+47
  • Oman (‫عُمان‬‎)+968
  • Pakistan (‫پاکستان‬‎)+92
  • Palau+680
  • Palestine (‫فلسطين‬‎)+970
  • Panama (Panamá)+507
  • Papua New Guinea+675
  • Paraguay+595
  • Peru (Perú)+51
  • Philippines+63
  • Poland (Polska)+48
  • Portugal+351
  • Puerto Rico+1
  • Qatar (‫قطر‬‎)+974
  • Réunion (La Réunion)+262
  • Romania (România)+40
  • Russia (Россия)+7
  • Rwanda+250
  • Saint Barthélemy+590
  • Saint Helena+290
  • Saint Kitts and Nevis+1
  • Saint Lucia+1
  • Saint Martin (Saint-Martin (partie française))+590
  • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
  • Saint Vincent and the Grenadines+1
  • Samoa+685
  • San Marino+378
  • São Tomé and Príncipe (São Tomé e Príncipe)+239
  • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
  • Senegal (Sénégal)+221
  • Serbia (Србија)+381
  • Seychelles+248
  • Sierra Leone+232
  • Singapore+65
  • Sint Maarten+1
  • Slovakia (Slovensko)+421
  • Slovenia (Slovenija)+386
  • Solomon Islands+677
  • Somalia (Soomaaliya)+252
  • South Africa+27
  • South Korea (대한민국)+82
  • South Sudan (‫جنوب السودان‬‎)+211
  • Spain (España)+34
  • Sri Lanka (ශ්‍රී ලංකාව)+94
  • Sudan (‫السودان‬‎)+249
  • Suriname+597
  • Svalbard and Jan Mayen+47
  • Swaziland+268
  • Sweden (Sverige)+46
  • Switzerland (Schweiz)+41
  • Syria (‫سوريا‬‎)+963
  • Taiwan (台灣)+886
  • Tajikistan+992
  • Tanzania+255
  • Thailand (ไทย)+66
  • Timor-Leste+670
  • Togo+228
  • Tokelau+690
  • Tonga+676
  • Trinidad and Tobago+1
  • Tunisia (‫تونس‬‎)+216
  • Turkey (Türkiye)+90
  • Turkmenistan+993
  • Turks and Caicos Islands+1
  • Tuvalu+688
  • U.S. Virgin Islands+1
  • Uganda+256
  • Ukraine (Україна)+380
  • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
  • United Kingdom+44
  • United States+1
  • Uruguay+598
  • Uzbekistan (Oʻzbekiston)+998
  • Vanuatu+678
  • Vatican City (Città del Vaticano)+39
  • Venezuela+58
  • Vietnam (Việt Nam)+84
  • Wallis and Futuna (Wallis-et-Futuna)+681
  • Western Sahara (‫الصحراء الغربية‬‎)+212
  • Yemen (‫اليمن‬‎)+967
  • Zambia+260
  • Zimbabwe+263
  • Åland Islands+358