Train cycle 1.1 Как мы разрабатываем программу для велотренировок
Немного предыстории о том, как я пришел к тому, что мне необходимо сделать программу для велотренировок и какие шаги я предпринял после.
История вопроса и аналоги
Зимой, я тренируюсь на интерактивном велостанке. Это позволяет сохранять форму, занимаясь на балконе и выходить в сезон на хорошем уровне.
Использовал я программу zwift , почитать про нее можно по ссылке.
На мой взгляд она имела ряд недостатков, тем не менее, до начала санкций, я ее использовал. После того, как ввели санкции, оплата приложения стала даваться с трудом - это мне не понравилось.
Да, я не понимаю, почему рядовые пользователи должны быть объявлены маргиналами и страдать, если исправно платят и используют прогу годами.
Так я решил, что буду разрабатывать программу для велотренировок и началось типичное путешествие на 20 минут)
Технологии и задачи
Разрабатывать я решил на python.
На других языках опыта разработки я не имел, поэтому решение это далось легко. Хотя язык этот, признать честно, высокоуровневый и для разработки всего связанного с железом подходит слабо.
По сути, на первом этапе, необходимо было решить несколько задач:
- Поймать телеметрию со станка
- Отдать телеметрию станку
- Связать 3D модель велосипедиста и показания станка, которые получаются при кручении педалей.
Для моделирования было решено использовать блендер.
Для телеметрии я скачал питоновскую библиотеку для работы с блютуз: PyBluez
Для работы с графикой использовал модуль от Дисней(открытый для всех) 3DPanda
Также я активно использовал помощь старших товарищей, которые имели большой опыт работы с 3D-графикой. Это сложная область разработки, где нужно хорошо владеть линейной алгеброй и другим математическим арсеналом.
Однако, когда ты понимаешь базовую логику, потом двигать камеру и модель становится сильно проще.
Итоги первого этапа разработки:
После двух-трех месяцев разработки(в свободное от основной работы время) получилась чудесная, хоть и чуточку криповая модель, которая реагировала на движение педалей.
Смех на фото нервный))) я был рад, что наконец-то оно поехало.
Этим закончился первый этап разработки, что было дальше, расскажу в дальнейших статьях.