понедельник, 19 июня 2017 г.

Программы выстрелов: немного о зонах расположения робота и мяча

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

Расположение робота

В отличие от настольных роботов, этот робот устанавливается на штативе.
Например по высоте робот может быть установлен в одном из следующих положений:
Это открывает гораздо больше возможностей для тренировок, потому как мы можем создавать гораздо больше различных выстрелов - как из под стола, так и из угла, ближней или дальней зоны стола. Можно создать и сохранить несколько программ из разных зон, а затем просто загружать их в память робота. Согласитесь - это удобно!
Но как потом отличить одну сохраненную программу от другой? Не открывать же каждую программу, чтобы посмотреть настройки каждого выстрела?
Чтобы решить эту проблему, в приложении введена вот такая система расположения робота:

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

Зоны попадания мяча

Итак, мы выбрали место для установки робота, и начали настраивать программу. В программе у нас может быть до 80 выстрелов, и все они будут отличаться как по скорости полета мяча, так и по вращению мяча. При составлении или выборе программы неплохо было бы сразу одним взглядом оценить, что именно данная программа делает. Поэтому различие в поведении мяча показывается вот такими условными обозначениями

Скорость полета мяча - от медленной до самой быстрой:



Верхнее вращение мяча - от слабого до сильного

Нижнее вращение мяча - от слабого до сильного


При сохранении программы мы обычно настраиваем выстрел, пробуя его на столе. Поэтому после окончания настройки мы точно знаем в какое место на столе попадает мяч. Для сохранения выстрела (пресета) нужно просто указать приложению, в какую точку стола попадает мяч. Например создадим пресет со следующими настройками:
  • по высоте робот находится на уровне стола - зона №1 вертикального расположения
  • робот находится в средней зоне около левого угла стола - зона №4 горизонтального расположения робота
  • медленный полет мяча - зеленая стрелка скорости полета мяча справа
  • со средним верхним вращением - желтая стрелка сверху мяча
  • мяч попадает в центр стола - зона №4 под изображением мяча
Очень большое описание, не правда ли? Делать его для каждого пресета или программы было бы очень утомительно. А в приложении это выглядит  вот так:

Мне кажется что наглядно, а вам?

Поиск пресетов в памяти приложения

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

На примере ниже используется фильтр пресетов (верхняя часть экрана). Там мы вручную указываем, что мы ищем пресеты, для которых :
  • вертикальная зона расположения робота - №1
  • горизонтальная зона расположения робота - №5
  • зона попадания мяча - любая (т.к. она не отмечена)
Как видно, поиск автоматически подобрал все пресеты в памяти приложения, которые соответствуют выбранным настройкам. В данном случае только один пресет, потому как большее число пресетов я просто поленился создавать:-)



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

16 комментариев:

  1. Мне кажется здоровский интерфейс, наглядный и интуитивно понятный. Но может всё таки стоит относиться к людям как к людям, а не как к программистам. Ты видел адрес с домом номер НОЛЬ? Или нулевую квартиру? Или на парковке нулевое место? Может троллейбус №0? Сделай по человечески чтобы позиции с 1 начиналось...
    А вот позиция по высоте действительно может иметь ноль. Только он будет не нижним. Внизу (под столом) будет "-1". На столе будет нулевая зона. А выше +1 и +2. По крайней мере это если хочется сделать понятней...
    P.S. Следующим этапом я так понимаю будет синхронизация между двумя и более роботами для совместной стрельбы? Для клубов это большая мотивация купить именно твой робот, так как они смогут поставить несколько для более сложных тренировок. У кого ещё такое есть?

    ОтветитьУдалить
  2. Ну да, может ты и прав. Но тогда последняя зона будет иметь номер 13, а мне число не нравится :-) Но может и поменяю ))
    Следующий этап - борьба с роликами. Нужно сделать их технологичными для производства. Как оказалось тут спрятано много проблем - с черной плотной резиной получается большой вес и инерция, моторы при резкой нагрузке останавливаются, блок питания проседает по напряжению, ... Сейчас буду возвращаться к пористой резине, так что эксперименты идут полным ходом.
    Первое общение с теннисистами показало, что им нужен интерфейс простой, не все хотят разбираться с настройками. Так что синхронизация пока откладывается ))
    Я возьму на заметку твое предложение по web интерфейсу, подумаю на досуге. А где ты живешь?

    ОтветитьУдалить
  3. Ах да, для чего я снова с роликами борюсь... Для иммитации мощного топ спина нужно сильное верхнее вращение мяча при высокой скорости. Тут начинается противоречие, потому что чем выше скорость полета мяча, тем меньшее вращение. Поэтому нужно:
    1) увеличить диаметр ролика
    2) увеличить скорость вращения двигателя
    Была попытка сделать ролики из резины, но я столкнулся с проблемами описанными выше

    ОтветитьУдалить
  4. У всех настольнотенисных роботов что я видел ролики не больше твоих в диаметре (вот для большого тенниса там где-то 20см). Но полностью соглашусь - ролики там выглядят в несколько раз легче, с каким-то тонким слоем сверху ( http://i.imgur.com/6AVBeq8.jpg )
    Вот кстати резиновый ободок, а колесо ты напечатаешь на 3Д-принтере: https://ru.aliexpress.com/item/4pcs-1-10-Scale-Black-Soft-Drift-Tires-With-Sponge-Liner-For-1-10-RC-On/32688419989.html?aff_platform=aaf&cpt=1498507695463&sk=eub6yrrBy&aff_trace_key=308e49bd41194dc8a7d2980acf5e34db-1498507695463-01404-eub6yrrBy
    По поводу цифры 13: когда я был в Японии удивился что у них не любят цифру 4. У нас есть 13 этаж, 13 автобус, а у них в домах нет 4-ого этажа! Но у них 4 произносится похожим на "смерть", а ты почему не любишь 13? Из-за того что в пятницу 13-того во Франции гугинотов порезали? Или оттуда самая не берущаяся подача? :) Это страшно? Смертельно? Может парашют с номером 13 я бы не взял, но тут-то чего бояться? Впрочем уверен что со временем у тебя будет режим "Эксперт" где зон будет больше чем 13.
    Или может просто надо купить моторы с 15-22 тысячами оборотов? Если конечно шар не разорвёт.
    Простой интерфейс для начинающих это нормально. Так и сделай при входе выбор режимов: "Простой режим" и "Точная настройка" ("Эксперт" и "Синхронная стрельба" уже потом когда-нибудь сделаешь). Можно даже ДЕМО режим сделать (поставил в центре стола и он бьёт в разные углы), а уже через пару дней ему захочется настроек.
    По идее в начале просто словами можно: полёт мяча быстрый или медленный, закручивание вперёд, назад или не надо. А то количество оборотов мотора действительно им ничего не говорит. Для этого человеку видео надо посмотреть 10-20 минут, а ведь он пришёл на 1 час поиграть, ты его заманить должен, а не заставлять читать и настраивать.
    Про веб - да, подумай. Мне кажется что регистрация должна быть из твоей программы (ведь она только чтобы загрузить или показать свои настройки). Там можно даже сохранение обычным Get-запросом сделать. Например:
    sets.vedroitt.com/Rezhim=Save,Zona=2,Visota=1,Speed1=9000,Speed2=-2000
    и он сохранил твою настройку. Впрочем у тебя и так атрибуты еть: M1:7350,M2:-1450,B:1420,Г:1970,t:2.0,R:8800 - можно и прямо такой строкой сохранять и загружать, а сайт на ходу будет по этой строке картинки строить и показывать твои разрешённые настройки в любом порядке: по дате сохранения, по дате последней загрузки, по количеству загрузок, по количеству лайков. Там важденй что и пользователей миллион будет, и из них надо выбирать. А значит нужны фильтры по клбу, по геолокации (GPS с мобилки), ну и стандартный по имени пользователя и ID сохранения. А ещё у тебя наверно есть или будут "Плей листы" (наборы из сохранённых настроек), когда человек хочет два коротких справа с отскоком, потом 3 в дальний угол с произвольным отскоком, потом 4 рандомных и повторяем это по кругу. Или это только в Эксперт-моде? :) В любом случае настроек и параметров у тебя видимо-не-видимо будет, так что длинна сохраняемой строки может быть разная. Про безопасность и авторизацию - там всё просто, ты и сам наверно знаешь. Если что - помогу. А где живу, кажется рассказывал - далеко в Евросоюзе, и у вас никогда не буду :)

    ОтветитьУдалить
  5. Я тебе подготовил большую подборку с разными колёсами, которые как мне кажется тебе подошли бы. Вчера отправил сюда (и даже видел что они тут были), а сегодня уже нету... :(

    ОтветитьУдалить
  6. Мне пришло на почту письмо с подборкой. Хотел вчера ответить,но здесь его действительно нету, наверное что то у гугла проглючило. Но я прочитал письмо, так что труд не пропал даром, большое спасибо :-)
    Я наверное все таки остановлюсь на микропористой резине, но с цангой на валу - для автоматической центровки.
    Колеса действительно лучше производить самому по нескольким причинам:
    1) дешевле
    2) можно произвести именно тот размер, который нужен
    3) самое главное - колесо должно быть точно отцентрировано. На скоростях выше 6000-7000 оборотов/мин начинается жуткая болтанка из-за биения колеса на валу. Любое купленное колесо не даст нужной центровки.
    4) микропористая резина, в отличие от жесткой листовой резины, лучше сжимается, поэтому не так требовательная к настройке расстояния между осями двигателей. В теории может получиться сделать универсальный ствол для мячей 40 и 40+ без перенастройки расстояния между двигателями.
    У меня тут сейчас небольшая запарка, но думаю через пару дней смогу попробовать этот вариант в действии

    ОтветитьУдалить
  7. Мысли в слух: ты показывал один из тестов робота во дворе своей дачи. Там ведь иногда ветер бывает... Может глупая идея, но если поставить анемометр, показывающий скорость и направление ветра, то можно вводить поправки по ветру на угол отклонения сервы и скорости мотора, чтобы при любом (адекватном) ветре мяч всегда попадал бы в нужный квадрат... Кстати, анемометры народ как раз из пинпонговых мячиков делают (и старых шариковых мышек или с колёсиком), ну или на Али 11€ взять. Понимаю что в клубах ветер вряд ли в зале будет (ну только если сквозняк при проветривании), а вот если кто-то для себя на дачу берёт - наверно актуальный вопрос, и солидности добавляет (Слоган для рекламы: Теперь ветер не помеха для вашей идеальной тренировки)

    ОтветитьУдалить
  8. А можно такие крылышки использовать (а внизу диод или октопара которая обороты считает)
    https://ru.aliexpress.com/item/Mini-Wind-Turbine-Blade-Vertical-Axis-Micro-generator-Blades-Small-Set-New/32760453758.html?aff_platform=aaf&cpt=1498988533572&sk=eub6yrrBy&aff_trace_key=a989ab22fb974ef8abe8e1bc63e7b519-1498988533572-03972-eub6yrrBy

    ОтветитьУдалить
  9. Думаю идея с анемометром не взлетит. Логика у меня тут такая: робота покупают для того чтобы оттачивать мастерство. На улице его оттачивать бессмысленно, поскольку там всегда грязно, мячи падают в пыль и от этого загрязняется накладка на ракетке. Играть с грязной накладкой очень некомфортно, так как ничего не получается сделать с мячом, она его просто не цепляет. Сам пробовал, знаю )))
    А для теннисистов, которые все таки решают использовать робот на улице, думаю скорость ветра уже не сильно то и важна, поскольку скорее всего для них на данном этапе важно хотя бы попасть мячом в стол - значит они играют на низких скоростях, и у них есть время среагировать на немного сместившийся в сторону мяч.
    Вообще от резких порывов ветра анемометр не спасет, а проблем в конструкции добавит - очень хрупкая она получится...

    ОтветитьУдалить
  10. Наверно ты прав... Но при этом у тебя ведь есть стол на улице. И я исходил из возможно ложного предположения, что ветер способен снести мяч вообще со стола (то есть, он даже не попадёт в стол). Однако основная логика моего рассуждения (и с поправками на ветер, и с синхронной работой двух и более роботов) не строится на том что человек сразу купит это. Логика в том, что человек делая выбор между двумя разными моделями выберет ту где больше потенциальных возможностей расширения. Человек видит чем он сможет обладать в будущем. Робот-А и Робот-Б стоят примерно одинаково, но Робот-Б можно запустить в паре, можно поставить поправку на ветер, можно скинуть, посмотреть и загрузить свои и чужие настройки с сети. Какой выберешь? При этом тебе не обязательно покупать это, если захочешь купишь потом. Аниеометр для клиента стоит 20$ (при себестоимости для тебя 11$ если брать с Али), ты фактически ничего не получаешь с него, но это фишка из-за чего выбирают именно твой аппарат...
    Ну и ещё одно предложение, которое ты так же посчитаешь бессмысленным для игрока, но которое я так же назову фишкой из-за чего возьмут тебя: WiFi модуль для передачи статистики работы. В данном случае это может понравиться владельцам клубов. Они ведь сдают эти аппараты за деньги. Докупив специальный модуль всего за несколько баксов, они смогут в любое время посмотреть статистику его использования на сайте. Бесплатный вайфай ведь есть в любом нормальном клубе, и робот в режиме реального времени передаёт когда он работает, а когда нет. Это Light Control. Они смогут видеть когда включался, когда выключался. Если ставишь GPS, то ещё и с указанием "где?". Но конечно надо отдавать отчёт что GPS не ловит в железобетонных зданиях (если дальше 5м от окон). И для тех кто хочет сдавать робота на вынос (посуточно), второй вариант с GPRS (SIM-картой). Сам модуль стоит 3$. А ты уже получаешь возможность передачи данных на сайт с "телефона" и определение местоположения по триангуляции сотовых вышек, как скажем в детских часах за 14$, по которым мама может найти где её ребёнок. Общая себестоимость для тебя - меньше 10$. А владельцы клубов получают огромные возможности по контролю за работниками которые сдают робота собирая оплату мимо кассы.

    ОтветитьУдалить
  11. Фух..., 3 дня выпали из жизни (вместе с двумя сгоревшими контроллерами) - боролся с роликами. Кажется победил. Инерция - страшная сила, особенно при скорости 9500 оборотов в минуту. Кажется поборол, завтра в клубе будем проверять.
    По поводу Wifi - идею одобряю, но тут еще надо подумать вот над чем. Приложение уже сейчас отправляет в облако немного статистики о использовании робота (в основном об ошибках и падения приложения), но это пока только для продолжения разработки и отлова багов. Тем не менее, владельцам клубов можно поставлять просто спец версию прошивки робота, которая будет работать только со спец приложением. А вот уже эта спец версия мобильного приложения для работы "обязана" будет иметь доступ в интернет (иначе робот не запустится). И уже приложение может отправлять данные владельцу клуба вместо wifi модуля. Таким образом нет затрат на доп. оборудование, а задача решена (хотя тут могут быть нюансы, нужно думать). Но это дело будущего. Местоположение уже сейчас можно передавать в сеть -даже если не работает GPS, примерное местоположение можно определять и без него (это пока только мой первый беглый поиск по документации, может все немного сложнее чем я думаю, или я в чем то ошибаюсь) - на основании данных о сети клиента. Я пока не добавлял это в приложение, т.к. нужно просить у клиента разрешения на доступ к местоположении при установке приложения, а мне пока это без надобности.
    Еще менее точное местоположение можно брать из IP адреса клиента (это уже сейчас видно в облаке), но тут совсем все может быть плохо, если клиент пользуется VPN или еще чем то.

    ОтветитьУдалить
  12. Привет. Пока я просто в ужасе от твоего ответа (и это не из-за сожжённых контроллеров :)
    1) Физический: с моей точки зрения НЕ ВОЗМНОЖНО научить пользователя производить прошивку (это личный опыт)
    2) Если ты что-то меняешь прошивкой - жди её на всех торрентах.
    3) Психологический (с точки зрения купившего для бизнеса): если я знаю что Line assist на моей машине включается прошивкой, я принципиально не буду за него платить, даже если он мне нужен. Я лучше постараюсь найти самоделкина кто мне это сделает. А вот когда я покупаю какую-то платку - я уже понимаю что я покупаю железо и оно сколько-то стоит.
    4) Психологический (с точки зрения купившего для себя): когда я покупаю что-то для себя, и понимаю что там куча железа для других, за которое я реально заплатил, но никогда не буду использовать, я очень недоволен. Ситуация: Нравится роутер, а там блок подключения оптики, но работать будет после покупки лицензии. Мне не надо оптику, и я знаю что это железо дорогое. Думаешь я стану покупать этот роутер, когда понимаю что там куча железа за которое я заплатил но никогда не использую? Нет, я буду искать другой, без этого железа...
    5) Я могу ошибаться, но читая твои мысли: у тебя нету в контроллере WiFi, у тебя есть BT. Поскольку роботом управляют через смартфон, ты пытаешься передать информацию в сеть через него. А если пользователь просто отключит сеть? Хорошо, у меня iPad вообще без SIM'карты! Неужели я обязан покупать другой для работы с твоей программой? А уж если я захотел провести деньги мимо кассы - я точно в нём выключу "передачу данных". Или представь я заказа стол для тренировок, а интернет рухнул (проблема у провайдера, у роутера, у мобильного оператора и т.п.) из-за этого не смогу тренироваться?
    6) По IP не вычислить место. Мобильные операторы на миллион клиентов обычно не имеют даже нескольких десятков сетей класса С (по 256 адресов). Получаемые адреса динамические и общедоступны. И ты и твой друг на другом конце страны могут выходить одновременно с одного IP адреса используя телефон, а завтра у вас обоих будет другой адрес (как у каждого сотого пользователя этой компании). Конечно у пользователя может быть куплена услуга "фиксированный адрес" за 2-5$, но и это ни как не поможет тебе как владельцу определить где находится устройство которое ты дал клиенту не 3 суток, и который уже неделю не берёт трубку.
    7) Определение местоположения телефона по вышкам - это LBS. Там ты определяешь по коду местности (LAC) и номеру сектора (CID или SAC). Но ты уверен сто народ разрешит делиться геолокацией твоему приложению? Я бы не дал :) А вот если у тебя SIM-карточка прямо в роботе - тут уже ни кто тебя не ограничит. Вопрос конечно для клиента - надо карточку с маленькой абоненткой и доступом к передачи данных. У нас за 1€ такую можно взять. А GPS-треккеры брелкового типа фирмы Garmin при продаже имеют Американскую карточку Vodafone и они бесплатно передают себе на сервер данные о тебе. Исходя из цены устройства 90€, предполагаю что цена обслуживания карточки НОЛЬ долларов в месяц при небольшом объёме передачи информации, в РОУМИНГЕ! Так что можно повесить это на клиента, а можно и самому поискать решение, чтобы при продаже уже с карточкой было, и клиенту вообще ничего не надо было.
    В общем моё мнение: Воткнунл плату Light Control и получил WiFi, воткнул Expert Control и получил GPS/LBS/SIM. А прошивка одинаковая во всех и знает как работать с обеими платами.
    P.S. Когда я заказывал контроллер для бесколлекторного двигателя - там были контроллеры, в которых можно было в инициализационных настройках установить поведение при прекращении работы: по умолчанию ничего не делать (как в дрелях оставляя инерцию), или жёстко тормозить (как в шуруповёртах). Я как бы не считал это проблемой. Хотя я не знаю насколько массивно у тебя новое колесо (раз ты всё ещё на 9500 оборотах, значит ты решил увеличть диаметр колеса, а не брать 15-20 тысяче оборотистый мотор).

    ОтветитьУдалить
  13. Прошивка может быть одна, просто в ней будет опция "для клубов", в которой активируется режим работы только с интернетом и постоянным контролем робота со стороны приложения. Без включенного интернета работать не будет.
    Но все таки моя идея имеет недостатки, тут я соглашусь. Можно пойти немного другим путем - добавить на плату робота память, которая будет хранить логи использования робота, а при подключении приложения с интернетом эти данные будут автоматически отдаваться в сеть (любым смартфоном с интернетом который подключился, либо ограничить только "доверенный смартфон" администратора). Тут конечно есть опасность взлома железа умельцами, но если данные хранить в памяти в зашифрованном виде с доп. блоками типа контрольной суммы, то может сработать - при взломе будет видно что с данными пытались что то сделать. Самое простое решение - владелец клуба вешает пломбировочную наклейку на корпус с платой (или даже при продаже еще пломбируется) - в этом случае никакой наемный работник уже не полезет туда что то вскрывать.
    Хотя это все тоже мысли вслух, возможно для клиента проще все таки действительно вставить симку с интернетом и забыть про проблемы.

    ОтветитьУдалить
  14. Ах да, забыл ответить про колеса.
    Я действительно остался на тех же двигателях, потому что более высокие обороты = более высокая мощность и более высокий износ подшипников. Также более высокий шум и сильнее вибрация. К тому же эти двигатели еще нужно подобрать, купить, разработать под них новую конструкцию (несложно, но это время). У меня есть опасения, что на оборотах 15-20 тыс. резина ролика будет просто протирать дырки в мячах :-). Короче проблем будет много.
    Но самая главная проблема (и отличие между покупным контроллером и моим) - это мощность блока питания. Сейчас я борюсь за то, чтобы робот работал от не особо мощного блока 12В-5А (может быть до 6А). Это 60-75Вт мощности блока питания - они относительно дешевые. Я без проблем мог бы поставить и более мощный блок (например от компьютера), но такие блоки более дорогие и тяжелые, а вся их мощность нужная только в моменты максимальных оборотов двигателя - такой режим используется далеко не всегда.
    У меня же происходило следующее - при высоких оборотах мне не хватало мощности блока питания, в нем срабатывала защита, от чего он кратковременно выключался. В этот момент моторы продолжали крутиться по инерции и по питанию происходил всплеск напряжения (за счет ЭДС самоиндукции в моторе). Мне пришлось принять меры для искусственного ограничения этих всплесков (благо дело прошивка и плата позволяли), а также настроить более плавные пуск и остановку двигателей. Раньше при меньшем диаметре ролика в этом не было необходимости, я и не заморачивался, а теперь пришлось.
    Теперь конечно реверс двигателя не будет происходить так быстро как раньше, но безопасность важнее.

    ОтветитьУдалить
  15. Идея наверно очень правильная! Пушка через любой подсоединяемый смартфон/планшет пытается передать на твой сервер информацию хранящуюся у неё в памяти. При этом она вначале запрашивает у web-сервера - "Какое самое последнее событие от меня ты получал?" Сервер говорит, допустим - "Последнее было вчера в 16:32". Ну и тогда пушка передаёт всё что у неё в памяти есть после этого события. Тогда даже если кто-то поиграл с пушкой с планшета без интернета, то потом стоит любому подключиться с интернетом (не обязательно директору), как вся информация перекинется на сервер и будет доступна руководству.
    Чтобы информацию в памяти или по пути ни кто не подменил, можно шифровать его асинхронными ключами (у всех пушек один ключ), а у твоего сервера другой. Зашифрованное пушками не может ни кто прочесть/модифицировать кроме твоего сервера, а сказанное сервером может прочесть только пушка.
    Чтобы избежать потерю информации из-за пропажи питания, просто раз в минуту перезаписывать сообщение "Работаю" с текущим временем, а уже по завершению эта запись меняется на "Завершил". В результате твой сервер и Работаю хх:хх и Завершил хх:хх будет обрабатывать как завершение (но если Работаю хх:хх - значит со сбоем). А может надо ещё количество сделанных выстрелов записывать. Как-то я не вижу для руководства больше полезной информации кроме:
    11:04 - Старт (+место по GPS/LBS, +ID мобилки/планшета)
    11:58 - Финиш (+количество сделанных выстрелов, +Был ли сбой)
    Сомневаюсь что руководство интересует какие программы использовал человек, хотя может и это можно записывать, но главное: время и нагрузка.
    Идея с "робот не работает если нет интернета", я боюсь не будет принята народом. Как это так - я купил пушку, а она не работает если что-то?
    Про мощность блока питания ничего не могу сказать, но если я не ошибаюсь то ты можешь поднимать напряжение до 24В и таким образом увеличить обороты, ведь маркировка скажем 950 - это 950 оборотов на вольт.
    Не совсем понял про боязнь что на больших оборотах испортишь мячик. Если я правильно понимаю физику - то без разницы: увеличишь ты скорость колеса в 2 раза или периметр колеса в 2 раза - для мяча при касании будет передана одинаковая энергия и мяч либо в обоих случаях разорвёт либо в обоих случаях ему ничего не будет. И в одном и другом случае поверхность колеса за 1 микросекунду пройдёт одинаковое расстояние.
    На остальное чуть позже отвечу.

    ОтветитьУдалить
  16. Ещё подумал: важно разделять какое устройство играло и какое устройство передало информацию, чтобы потом можно было легко увидеть что кто-то постоянно играет, но не передаёт информацию. Это повод руководству проверить - а в кассу положили деньги за эту игру? Впрочем структуру базы данных я позже выложу (если конечно ты сам не спец в этом).

    ОтветитьУдалить