February 26, 2024

Train cycle 1.1 Как мы разрабатываем программу для велотренировок 

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

История вопроса и аналоги

Зимой, я тренируюсь на интерактивном велостанке. Это позволяет сохранять форму, занимаясь на балконе и выходить в сезон на хорошем уровне.

Использовал я программу zwift , почитать про нее можно по ссылке.

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

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

Так я решил, что буду разрабатывать программу для велотренировок и началось типичное путешествие на 20 минут)

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

Технологии и задачи

Разрабатывать я решил на python.

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

По сути, на первом этапе, необходимо было решить несколько задач:

  1. Поймать телеметрию со станка
  2. Отдать телеметрию станку
  3. Связать 3D модель велосипедиста и показания станка, которые получаются при кручении педалей.

Решение задач:

Для моделирования было решено использовать блендер.

Для телеметрии я скачал питоновскую библиотеку для работы с блютуз: PyBluez

Для работы с графикой использовал модуль от Дисней(открытый для всех) 3DPanda

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

Однако, когда ты понимаешь базовую логику, потом двигать камеру и модель становится сильно проще.

Итоги первого этапа разработки:

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

Смех на фото нервный))) я был рад, что наконец-то оно поехало.

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