Создаём систему электронного хронометража гонок

    185282-11516937085b2ed4ea7e36b


    По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.


    В течение месяца вечерами написал первую версию судейской программы. Для реализации использовал C# и WPF, просто потому что их я лучше знаю и не нужно тратить время на изучение документации. В программе можно было записать участников со стартовыми номерами, разбить на классы и заезды. Во время гонки нужно было успевать руками вбивать номер участника, который едет через финишную черту. Всё работало хорошо, а учитывая небольшое количество участников в первой гонке (около 40 человек) посчитать всех руками было несложно.


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


    _racelog01


    На рисунке современная версия программы с поддержкой RFID и дистанционного управления со смартфона. В первой версии было гораздо меньше элементов.


    Выбор оборудования


    Конечно эта тема не новая, есть много готовых вариантов, но большинство из них не очень устраивало по цене. Например, профессиональная система гоночного хронометража от итальянской фирмы AMB стоит примерно 13000€ и имеет в комплекте 20 прокатных транспондеров. Каждый дополнительный чип стоит 100€ и они одноразовые, то есть через 3-5 лет, когда в них умрет аккумулятор, его не заменить штатным способом. В остальном система отличная, используется на всех мировых гонках, имеет точность до тысячных долей секунды и так далее. Для хоббиста, который организует гонки для друзей в свободное время эта система не подходит. Также я нашел много готовых систем хронометража марафонов, триатлонов и других подобных соревнований. Системы использовали RFID метки. Но там смущала специфика — люди финишируют марафон в лучшем случае на скорости 20км/ч, а в мотокроссе принято давать финиш по самому большому трамплину, на который заходят на скорости 70-80км/ч. Зато цена RFID метки около 11 рублей за штуку позволяла раздавать их в любом количестве.


    Используем RFID


    Вообще, RFID технология изначально не предназначена для засечки гонок, если почитать спецификации чипов и ридеров, можно найти ограничения по скорости движения чипа относительно антенны в несколько метров в секунду. Но я знал, что подобная система уже много лет успешно применяется в известной гоночной серии xsr-moto.ru, в которой я сам много раз участвовал и имел на шлеме их RFID метки. Сергей Миндин — организатор той серии любезно поделился информацией и указал мне на сайт motosponder.com, где он приобрел свою засечку.




    Это помогло определиться с выбором первого ридера — Alien Technology F800, потому что я точно знал, что он будет работать в нужных мне условиях. Кроме Alien я рассматривал Imping Speedway Revolution R420 и глядя на качество SDK и документации собирался купить его. Но в итоге остановился на F800 как заведомо проверенном решении.


    Ридер обошёлся мне примерно в 1600$, покупал в Москве, сразу докупил две антенны и 5 метровые ВЧ кабели к ним. Неприятным сюрпризом оказалась цена ВЧ кабелей. 10 метровый кабель будет стоить дороже самой антенны, а ещё его легко сломать, например перегнуть или раздавить ногой.


    Решение: покупать готовый комплект оборудования и софта от motosponder за 3500$ дорого и не спортивно. Надо купить только оборудование, которое обошлось примерно в 2200$, а софт написать самому. Чего там сложного может быть? :)


    Глядя на цены выше возникает закономерный вопрос: а нельзя ли было сэкономить? Купить китайский ридер, цены на которые начинаются от 200$ Такие мысли были, но ещё была мысль, что у меня сильно ограничено время, и важна стабильность итоговой конструкции и простота разработки. До этого я не имел никакого практического опыта работы с RFID и не представлял с какими физическими ограничениями могу столкнуться. Поэтому мысль о китайских ридерах была отложена, но не позабыта.


    Обзор вариантов RFID


    RFID — это общее название целого семейства технологий различающихся по частоте и протоколу обмена данными.


    • LF RFID — килогерцовый диапазон, низкая дальность и скорость чтения.
    • HF 14 Мгц — обычно это “магнитные” пропуска в здание, домофонные ключи, бесконтактные платежные карты, NFC в телефонах. В общем, очень распространенная частота, но радиус связи до одного метра. Опять же не подходит для моего случая. Однако я знаю одну отлично работающую систему хронометража построенную на смартфонах и карточках от метро. Только для отметки гонщика он должен остановиться и судья должен приложить телефон к метке.
    • UHF ~840 — 930 MHz — диапазон, на котором построены все системы  хронометража массовых мероприятий. В оптимальных условиях метки читаются на расстоянии более 10 метров, скорости передачи данных достаточно, чтобы считывать метки по 50 и более раз в секунду, волны этих частот не настолько сильно поглощаются водой, как у следующего диапазона.
    • UHF 2.4 GHz — возможно я плохо искал, но я сделал вывод, что эта частота является изобретением китайцев, потому что такие ридеры я не нашел у брендовых производителей. В любом случае, я решил не использовать эту частоту, потому что она слишком хорошо глушится водой, грязью, туманом и другими помехами.

    Чуть более подробно описание частот и стандартов можно почитать по следующей ссылке rfidcenter.ru/page/frequencies-ranges


    UHF RFID


    И так, я сделал вывод, что лучший вариант для моего применения — это диапазон UHF в зависимости от региональных ограничений это будут частоты примерно от 840 до 930 МГц и количество каналов от 2 до 30.


    Мой F800 предназначен для европейского региона и настроен на работу в диапазоне 865-867 Мгц. Вместе с ридером я купил несколько разных меток, все они имели характеристики дальнобойных по описанию производителя, конкретная дальность и скорость чтения обычно нигде не пишется, т.к. сильно зависит от условий. Я провёл довольно много экспериментов чтения разных меток, в разном количестве и конфигурации антенн. Вот сжатые выводы:


    • На открытой местности если точно сориентировать метку на антенну, вполне реально получить стабильное чтение на расстоянии 10 метров.
    • Форма поля у антенны похожа на каплю, поэтому самое уверенное чтение получается на расстоянии 3-5 метров от антенны — в самой широкой части капли. Конечно форма диаграммы направленности зависит от модели антенны, я применял плоские панельные антенны с заявленным усилением 10dbi, 60/65° antenna31.ru/?product=rfid-panelnaya-antenna-pa868-10-rhcp
    • Антенны бывают круговой и линейной поляризации. При линейной поляризации дальность чтения значительно выше, но ориентация метки должна совпадать с ориентацией антенны.
    • Все “дальнобойные” метки работают примерно одинаково. Тут нужно уточнить, что я использовал метки одного бренда — Alien, возможно они все на одном чипе.
    • Включить максимальную мощность передачи далеко не всегда оптимальное решение. Дома в небольшой комнате из-за переотражений скорость чтения очень сильно падала. Тоже самое может случиться на открытом пространстве, если две антенны смотрят друг на друга, они будут работать как зеркала.
    • Вообще с RFID больше проблем случается от слишком большой мощности и дальности чтения, чем наоборот. Если «светить» в поле на максимальной мощности можно получить много случайных чтений с большой площади (десятки квадратных метров). Поэтому важно регулировать мощность и расположение антенн таким образом, чтобы чтение проводилось на наименьшей площади.
    • Скорость чтения меток зависит от их количества в поле зрения ридера. Капитанское заявление, но я изменил конкретные цифры для оптимальных условий:
      • Одна метка — 50-70/сек
      • 5 и более меток — 250-280/сек
      • Примерно 280 чтений в секунду — это предел для любого количества меток в поле, и конечно, если меток будет несколько десятков, скорость сильно упадёт из-за коллизий
    • Метка на реальном мотоцикле движущемся со скоростью более 80 км/ч читается, но не в любом положении, желательно, чтобы метка и антенна были ориентированы таким образом, чтобы смотреть немного друг на друга. Например антенна слегка направлена в сторону гонщика, а метка наклеена где-то на передней части мотоцикла. При меньших скоростях метка и антенна могут быть строго перпендикулярно трассе.

    На данном этапе всё выглядело неплохо, 50 чтений в секунду, означали, что среднее время между чтениями 20 миллисекунд, но это тоже нужно было проверить. Программа для сбора статистики была дополнена расчетом разницы времени между чтениями, она выводила худшее, лучшее время и восемь долей измеренных в миллисекундах. Тут выяснилось, что читает ридер далеко не равномерно. Это объясняется протоколом, по нему ридер обязан прекращать вещание хотя бы на 10 миллисекунд каждые несколько секунд. Вот так выглядел тест для двух меток в поле:


    _alien-rfid-tag-stat


    • 44 мс — худшее
    • 20 мс — десятый дециль
    • 1 мс — лучшее
    • 3.2 мс — среднее время
    • 104 чтения в секунду

    То есть за 5 тестовых секунд большая часть чтений шло с разрывом в одну миллисекунду, а потом тишина в 44 миллисекунды. Это неприятная особенность для гонок, за 44 миллисекунды при скорости 20 метров в секунду гонщик проезжает 80 сантиметров и в случае помех может просто проехать мимо антенны. Примерно такая ситуация и воспроизвелась в реальном тесте описанном выше. И решение тоже есть — направлять антенны в сторону гонщиков, тогда пространство, а значит и время для чтения сильно увеличивается. И конечно нужно добавлять запасные способы отслеживания гонщиков, например: запись видео, человек с бумажкой и карандашом, человек, который вводит номера в программу руками.


    Конфигурация линии финиша


    Одно дело считывать метки с антенной на столе, а другое в реальном заезде с гонщиков. Я рассматривал два основных варианта конфигурации линии финиша.


    Первый — антенны расположены на штативах по бокам от трассы. В идеальном варианте, антенны вообще стоят только с одной стороны и “светят” поперек трассы. Но при этом расположение меток на гонщиках становится несимметричным, нельзя, например запустить заезд в обратную сторону. К тому же чтение только с одной стороны не так надёжно. Тогда нужно ставить антенны с обеих сторон трассы, чтобы они “светили” друг на друга. Это уже требует сооружения рамки над трассой, по которой будут проложены ВЧ кабели и даже в такой конфигурации остаётся проблема ширины трассы. Бывает так, что трасса шириной 8-10 метров, а с учётом запаса на установку штативов может получиться и 12-13 метров. На таком расстоянии легко могут случаться сбои чтения.


    Второй вариант, проверенный за много лет motosponder и xsr-moto — установка антенн на рамке над трассой и направление их вниз. Метки нужно клеить на шлемы гонщиков или верхнюю часть туловища. В итоге получается, что расстояние от антенны до метки всегда будет не больше 1.5 метра ( высота рамки 3 метра, но гонщик редко проходит финишную черту со шлемом на уровне земли). А большую ширину трассы можно немного урезать самой рамкой.


    _rfid_frame


    На данный момент я использую рамку шириной 6 метров с тремя антеннами, ее ширину можно увеличить дополнительной секцией до 8-9 метров. После этого потребуется уже 4 антенны, расположенные немного шире. По опыту двух гонок в 2018 году ширины в 6 метров вполне достаточно, если установить рамку на медленном участке трассы. Это же повышает вероятность чтения меток — убиваем сразу двух зайцев.


    Засекаем время


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


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


    Данные, которые даёт ридер и оператор проходят через фильтр для дедупликации и превращается в дорожку номеров. Это одномерный массив номеров гонщиков, в том порядке в каком они пересекали линию финиша. Например: [1, 2, 3, 2, 3, 1]. Из такой дорожки можно увидеть, что гонщики прошли два круга, на первом круге позиции гонщиков были 1, 2, 3. Но на втором круге у номера первого случилась проблема и он оказался в конце. В итоге победил номер два, за ним номер три и потом номер один. Для расчёта финишного протокола используется именно порядок, а не временные метки. Это сделано для совместимости с классическим ручным хронометражём, когда судьи записывают дорожку номеров в тетрадку. Хотя такой функции пока нет, но легко внедрить загрузку дорожки номеров от дополнительного судьи. В результате подсчёта получается следующая таблица:

    _session_rating


    Заключение


    Эта статья описывает только небольшой кусочек опыта, который я получил за последние 1.5 года. Дальше хотелось бы рассказать о создании сайта для регистрации гонщиков и публикации результатов в режиме Live, разработке второй версии аппаратного комплекса засечки на базе китайского RFID модуля и Orange Pi, процессе подготовки трассы, организации массового мероприятия и о многом другом. Если тема интересна, оставляйте комментарии.


    Проект открытый, значительная часть кода опубликована на github.com/maxbl4 остальное тоже скоро будет, надо только подчистить пароли и ключи API из кода :-) Если Вам интересно помочь развитию проекта, узнать что-то новое, например научиться гонять на мотоциклах, писать на .Net Core и Angular, обращайтесь. Стэк технологий на данный момент .Net 4.7, .Net Core 2.2, Docker, Angular 7.1, MySql 10.3


    На данный момент в открытом доступе весь код для работы с двумя типами RFID ридеров, которые я использую: github.com/maxbl4/RfidDotNet
    .Net Standard 2.0 библиотека, полная реализация протоколов, внешняя зависимость только на SerialPorlStream для работы с последовательным портом на Линуксе.


    Посмотреть систему в действии, пообщаться и отлично провести время на спортивном мотофестивале можно 16 февраля поблизости от Сергиева Посада vk.com/event74123582 на этом мероприятии я обеспечиваю хронометраж

    Поделиться публикацией

    Похожие публикации

    Комментарии 37

      0
      Спасибо!

      Скажите, а какова точность такой системы? Насколько далеко должны быть друг от друга гонщики, чтобы система уверенно определила кто из них лидер?

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

      Не в теме радиометок и мотоспорта, извиняюсь за ненаучные вопросы)
        0

        Вопросы вполне логичные, я их сам себе задавал в начале разработки :)
        Во первых, крайне редко случается так что лидеры едут ноздря в ноздрю. Всегда есть одна оптимальная траектория, по которой едет тот кто впереди. Чтобы обогнать, нужно выйти на альтернативную траекторию. Ворота засечки довольно узкие и через неё просто нет двух траекторий.
        Также, на случай любых споров ведётся видеозапись, плюс к этому на финишном створе стоит судья, который глазами видит кто в каком порядке приехал. Всё это важно для тройки лидеров. Если где-то в конце заезда поменяются местами 50й и 51й участники, это не так уж важно.
        На практике достаточно 50см для уверенного различения гонщиков.
        По расположению метки нужно учитывать, что гонки проходят по грунтовой трассе и дождь не является причиной для отмены заезда :) поэтому бывает и такое



        Нижняя сторона козырька шлема обычно самая чистая и сохраняется больше шансов на чтение.

          0
          Для велогонов, к сожалению, не подойдет. Прошлой осенью у нас впервые была организована велогонка, после которой у организаторов возникли сложности с определением времени финиша. Все гонщики едут в большой пачке, считай ноздря в ноздрю, и система трекинга не смогла корректно всех отследить
            +1

            Видимо имеются в виду дорожные велосипеды? Думаю там правда могут быть проблемы. Можно поискать на прокат профессиональную систему mylaps, она очень точная

              0
              Да, имел ввиду групповые гонки на шоссейных велосипедах. В других дисциплинах, например триатлоне, таких проблем нет ввиду большей распределенности спортсменов по трассе
                0

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

        0
        Метки должны быть на транспортных средствах — это точнее и не зависит от того, что кто-то просто прибежал. Ну и узкие рамки — запрет на фотофиниш 3 гонщикам.
        Фотофиксацию отменили?;) А разбор уже потом…
          0

          Кто читает эти статьи? :))
          Конечно ведётся видеозапись финишного створа и все споры могут быть разрешены.
          По расположению меток, не всё так просто. Я уже упоминал, что грязь и вода очень сильно ослабляют чтение, также на чтение радикально влияет близость металлических объектов. Поэтому расположить метку на мотоцикле так, чтобы она надёжно читалась и крепилась одинаково на всех мотоциклах пока не представляется возможным. А объяснять каждому из 150 участников, где именно на его мотоцикле лучше разместить метку займет слишком много времени

          0
          Отличный опыт, интересная статья, спасибо! Добавьте, пожалуйста, ссылки на репозитории в конец статьи.
            0

            Ссылка на мой гитхаб профиль есть в статье, пока открытый репозиторий с кодом системы только один https://github.com/maxbl4/RfidDotNet
            Это .net standard 2.0 библиотека для работы с двумя типами rfid ридеров, которые я использую. Полная реализация протоколов, внешняя зависимость только на SerialPortStream для работы с последовательным портом под линуксом.

            0
            Очень интересно!

            В порядке бреда. Можно ли сделать систему на основе GPS с локальным репером? Там вообще до сантиметров точность может быть. На каждый мот по небольшой платке с ардуино и писать трек. И можно дополнить датчиком ускорения, чтобы точно засекать момент старта. Хотя… Для эндуро это не актуально, но все-же?
              0
              С этим есть несколько проблем:
              1. Сложность в установке и дороговизна локального GPS маяка, который должен давать точные координаты.
              2. Одного маяка не хватит, ведь GPS работает в прямой видимости, а трасса эндуро идёт по лесу и бывает от 2-3 до нескольких десятков километров.
              3. Стоимость каждого устройства. RFID метки стоят 11-60 рублей за штуку, я их выдаю участникам и просто прошу не выкидывать, т.к. они пригодятся на следующем этапе.
              4. Дорогие метки нужно не только выдать, но и собрать после гонки. За метки нужно взять залог, а потом его вернуть. И повторить это для 100-200 участников. При этом, в сложных гонках, бывает так, что половина участников сошли с заезда и хотят расстроенные и уставшие просто уехать домой, а им нужно ждать, чтобы вернуть метки… А те кто остался хотят узнать результат, но его не будет, пока я не скачаю трек со всех меток…
              5. Момент старта не нужно засекать, старт даётся общий по команде судьи. Для защиты от фальстарта в мотокроссе есть стартовые машины. В длинных эндуро заездах фальстарт на 0.1 секунды обычно мало влияет на результат. А больший отрыв судья увидит глазами и назначит рестарт.

              Но идея с GPS не тупиковая. Есть программы для смартфонов, которые умеют записывать трек и по нему считать круги, это очень удобно для тренировки, когда гоняешься сам с собой и анализируешь как едешь трассу. В своём проекте, я хочу создать подобную программу, только попроще, которая будет записывать трек и передавать его на центральный сервер. Тогда, я могу выдать дешёвые телефоны с программой не всем, а нескольким известным успешным гонщикам и показывать их трек в реальном времени на сайте для интереса зрителей.
                0
                Если точность нужна только на старте и финише, то можно обойтись одним маком.
                Десятки устройств, это проблема…
                В эндуро старт не очень актуален, а кто гоняет на треке — для личного контроля важный параметр.
                Много дешёвых смартов будут иметь те же проблемы — выдать /забрать, а стоить дороже ардуино с парой датчиков.
                  0

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

                    0
                    Если немного — тогда можно смартами ограничиться. Но у недорогих смартов GPS очень фиговый, прям совсем совсем. Настоятельно рекомендую протестировать в разных условиях, прежде чем покупать партию.
              0
              Добавил в конец статьи ссылку на ближайшее мероприятие, которое я буду считать vk.com/event74123582
                0

                отличный востребованный продукт. спасибо за внятную статью!


                пара вопросов:


                1. какова вероятность срабатывания (или несрабатывания) метки? в сухих условиях, в условиях дождя и грязи?
                2. одинаково ли хорошо работают метки, наклеенные на поверхности разных материалов?
                3. при расчете итоговых результатов проводится ли проверка на полноту и непротиворечивость последовательности засечек? например, если одно или несколько пересечений финишного створа не были зафиксированы? или если гонщик застрял в поле действия антенн, и система зафиксировала лишние прохождения?
                4. как организован процесс привязки в системе гонщика к выданной ему метке? метки имеют какой-то явный идентификатор, или нужно сканировать каждую метку при выдаче?
                5. проводились ли сравнительные тесты rfid-меток разных конфигураций?
                  0
                  1. Это зависит от многих факторов. Лучше всего после выдачи метки проверить как она читается. Обычно, если с меткой всё хорошо, она будет читаться 50-70 раз в секунду в любой ориентации. Если метка битая или плохо установлена, чтения будут реже и будут сильно зависеть от ориентации метки относительно антенны.
                    Вода сильно влияет на чтение, в сильный туман я не проверял лично, но слышал, что чтение становится гораздо хуже. Тоже самое когда очень много грязи. В таких случаях приходится подключать судей людей с карандашом и бумажкой, потому что возможны массовые пропуски чтения.
                  2. Нет, никакие метки не могут работать на поверхности металла, карбонового волокна и других проводящих материалов. Чтобы метка начала работать, нужно отделить ее от металла на 3-5мм. Есть готовые метки в корпусах, которые обеспечивают это расстояние. Либо можно просто наклеить кусок пенки, а потом метку.
                  3. Защита от лишних прохождений заложена во входном фильтре, система агрегирует все метки внутри интервала минимального круга. Например, я знаю, что лучшее время лидера на трассе одна минута, тогда я ставлю минимальный круг на 40 секунд и знаю, что никто не повторит чтение, даже если остановится под рамкой. Также судья, который всегда стоит у рамки будет прогонять стоящего участника и может записать его номер, чтобы потом исправить ошибку.
                    Факт недостающего круга фиксируется либо визуально судьей (он на смартфоне в реальном времени видит считанные метки и может вручную вбить пропущенный номер), либо по жалобе участника и тогда разбираем видео.
                  4. Rfid метки с завода чаще всего имеют уникальный номер epc id. Но я также покупал и чистые метки, все забитые нулями. В любом случае свои метки я кодирую последовательными номерами и пишу этот же номер на метке. Можно заказать печать меток, тогда перед продажей их закодируют нужными номерами и напечатают на каждой любой текст, но эта услуга как и оборудование довольно дорого стоит, потому пока я покупаю чистые метки и кодирую сам.
                    Например motosponder продает метки с уникальным кодом, который напечатан на метке по 1$, я покупаю чистые метки по 0.22$
                    Дальше во время выдачи метки участнику я просто сканирую её и уникальный номер попадает в поле ввода на форме регистрации.
                  5. Проводил. На моих простых тестах на коленке я не заметил разницы. Общий принцип: чем больше размер метки, тем она лучше будет читаться. Я пробовал метки разных производителей и конструкций, но все они рекламировались как дальнобойные и имели размеры примерно 8х1.5см. измеримой разницы в качестве чтения я не заметил.

                  Вы задаёте очень конкретные вопросы, есть опыт?

                    0

                    Благодарю за развернутые ответы! Опыт есть — я в течение нескольких лет обслуживал систему motosponder в составе судейской бригады xsr-moto.ru. Идея написания собственного софта под готовое оборудование впервые посетила нас на 2 или 3 год работы с американской системой — в период интенсивной её кастомизации под нужны нашего кантрикросса. Отрадно видеть, что хорошая идея нашла прямые руки;)


                    1. Жаль, что и у вас не 100% результат. Когда мы только внедряли систему в наш процесс, "мечта" была включить ноутбук с программой и курить бамбук.
                    2. Установка метки через прокладку — отличный workaround!
                    3. При большом количестве участников и/или плохих погодных условиях даже визуальный контроль не всегда позволяет зафиксировать все прохождения. Пропущенные засечки в 80% случаев выявляются через поиск времени круга +- кратного среднему времени круга гонщика.
                    4. Метки от motosponder имеют одно отличительное свойство — на них нанесен штрихкод, который можно считывать сканером штрихкодов. Это удобно во время регистрации. Я связывался со многими продавцами меток в России, никто не взялся изготавливать метки с таким принтом. Собственный rfid-принтер слишком дорог для объемов мотогонок — тут я с Вами согласен.
                      0

                      Для улучшения точности есть много идей, нужно время и силы. Например можно с помощью компьютерного зрения считать количество проезжающих участников и сравнивать сколько меток считалось. Если есть разница — отмечать это место и давать возможность судье посмотреть видео этого момента. Технически всё это несложно сделать, нужно только в эту сторону покопать.
                      Да, среднее время круга я тоже использую и есть план сделать сигнализацию о пропущенных кругах на основе этих данных. Но я уже сталкивался с ситуацией, когда человек упал и лежал ровно время одного круга :)
                      Чтобы удобно читать метки во время регистрации, я купил маленький настольный rfid ридер с usb. В феврале буду в первый раз пробовать с ним регистрацию, по идее должно быть гораздо удобнее, чем с большой антенной

                        0

                        Ещё можно рассмотреть battery assisted метки, это обычные пассивные метки, но с батарейкой. За счёт этого не тратится время на заряд конденсатора и запуск процессора метки, по идее они должны читаться более уверенно. Но я пока не покупал образцы.
                        Ещё один вариант это active rfid, там метки сами постоянно передают сигнал, как транспондеры, но цена значительно выше и протокол другой, нужен другой ридер

                    0
                    Отсечка срабатывает за какое-то расстояние до ворот — т.е. не в момент пересечения створа? На лыжных соревнованиях закапывается петля — там не rfid метки, другая технология?
                      0

                      А как выглядят метки?
                      Если это коробочки, где вероятно стоит батарейка, то у вас система с транспондерами. Петля это пассивная антенна, которая ловит сигнал транспондера и выдает чтение, когда транспондер между частей петли. Так работает mylaps.
                      Для марафонов и других забегов есть антенны в виде плоских ковриков, они модульные можно любую ширину сделать, но их не закапывают и метки используют пассивные в виде наклеек, манишек или на ногу/шнурки браслетики всякие

                        0
                        Да, система с траспондерами российская alt-timing. Интересно, можно самому сделать аналог с траспондерами и сколько будет стоить?

                        Можно дополнительно фиксировать момент проезда через створ с помощью датчика пересечения луча, ик — если не сработала метка, то брать время с луча.
                          0

                          Интересно узнать какое у них оборудование.
                          Если rfid, то метки с батарейкой стоят от 15$ штука.
                          Пересечение луча будет работать только для одного гонщика и оно позволит лишь зафиксировать факт, что метка не считалась. Ведь луч не выдаст номер гонщика :)

                            0
                            Луч просто отсечку выдаст — если стоит судья и записывает номера, можно восстановить номер/время, или номер можно распознавать с видео онлайн.
                            Удалось сделать систему хронометража с китайским ридером? Ваш софт на гитхабе поддерживает этот тип ридера? Можете дать ссылку на китайский ридер?
                              0

                              Вот такой модуль http://chafon.com/productdetails.aspx?pid=669
                              Купил за 13000р без блока питания, без тестовой платы, только то что на первом фото.
                              Там же можно скачать документацию на протокол и тестовый код.
                              Мой софт поддерживает этот ридер, я не реализовал все команды, т.к. не все мне нужны. Например не сделана запись данных на метки, но это легко добавить, весь базовый код общения с ридером есть.
                              Чтобы модуль заработал, нужно его к чему то подключить по ttl 3.3v, и подать питание 5 вольт 2 Ампера. У меня он например от usb порта ноутбука работает. Для подключения к ноутбуку заказывал адаптер на cp201… что-то там. Но они потерялись по дороге :( в итоге модуль работает в связке с orange pi prime на armbian. Для отладки с компьютера написал микроскопическую программу, которая слушает на tcp сокете и передаёт сырой поток байтов туда обратно в последовательный порт. Внезапно оказалось, что именно так и работает китайская оригинальная программа. То есть их демо софт скачанный с сайта спокойно подключается и работает с моим туннельчиком по сети. Это сильно облегчило жизнь, потому что вначале приходилось сниффить последовательный порт для уточнения некоторых деталей протокола, а это не так удобно.

                                0

                                По качеству чтения меня всё полностью устраивает. Китайский модуль может выдать не больше 120 чтений в секунду, это в два раза меньше, чем alien, но самый важный параметр — разрыв между последовательными чтениями такой же — 30мс в среднем. Проводил уже 3 тестовых заезда, всё отлично читается. За счёт использования orange pi удалось сделать компактную систему, которая работает от батареи

                                  0
                                  Круто! Спасибо большое. У меня давно была идея попробовать сделать что-нибудь с nfc считыванием. Попробую разобраться. Я не особо программист, но если нужна будет помощь, готов помочь.
                          0

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

                            0

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

                              0
                              В первой версии я брал, наоборот последнее срабатывание. Но из-за этого стало очень неудобно мониторить работу засечки. Получается, что обновление рейтинга случалось с задержкой в 2-3 секунды после проезда гонщика. После одной гонки в таком режиме, я перевернул логику, обновление рейтинга стало происходить моментально и удобно для отслеживания. В целом, я просто принял как факт, что точность засечки основанной на RFID не лучше одной секунды. Есть очень много причин, почему два человека внутри одной секунды могут поменяться местами при чтении меток.
                          0
                          Автор — молодец!!! Сам разобрался в RFID и смог построить решение (получить результат). Я давно занимаюсь RFID, было интересно читать статью.
                          На основании своего опыта могу рекоменовать:
                          1. Я бы остановил выбор на считывателе Impinj R420. Он и дешевле и имеет много дополнительных режимов, которые могут повышать качество регистрации RFID-меток в зоне считывания. Например, есть режим «максимально быстрой выдачи» данных о считанных RFID-метках (в обычном режиме считыватель буферизует данные в рамках нескольких мс). Impinj является родоначальником RFID этого стандарта. В т.ч. он производит чипы для считывателей, в отличии от Alien — остальные производители их используют при создании своих считывателей.
                          2. Для считывания RFID-меток на металле — есть RFID-метки для работы на металле. Просто «приподнимать» метку наклейку для маркировки радиопрозрачных материалов — не лучший выход. RFID-метки рассчитываются для применений на конкретных материалах. «Приподнятые» метки могут давать нестабильный результат по дистанции регистрации.
                          3. Закупать антенны я бы рекомендовал у какого-нибудь RFID-интегратора. Эти ребята, обычно, нацелены на получение качественного результата и предложат антенны, которые работают наилучшим образом в вашем случае. Причем лучше покупать антенны и считыватель у одних и тех же, чтобы избежать потом разговоров: наши считыватели хорошие — это антенны плохие.
                          4. Можно легко добиться считывания RFID-меток на больших скоростях. Мы добились 280 км/ч еще в далеком 2008 г.
                          5. Количество считываний RFID-меток зависит от настроек считывателя. У современного считывателя полно настроек, комбинация которых позволяет получить требуемый результат. Например, можете поиграться с сессиями. У Вас сессия 0 — значит считывания будут выдаваться все время пока запитана RFID-метка, если метка уйдет из поля и вернется в него, то считывания будут выдаваться заново — это дополнительно «загружает» обмен считыватель-метка. М.б. Вам попробовать использовать сессии 2 или 3 и получать по одной регистрации от метки?
                          6. Считывать велосипедистов тоже можно. Все зависит от того, где расположить метку и антенны.
                            0

                            Спасибо :)
                            По цене, не увидел разницы, оба ридера стояли 1600+-100$ и сильно гуляла цена/сроки доставки.
                            У меня есть немного меток "на металл", в моих тестах разницы в их работе не заметил. При этом они стоят в несколько раз дороже и из сложнее крепить. Но тут надо провести дополнительные тесты именно на металле.
                            Антенны я сначала купил у интегратора вместе с ридером и они стояли раза в два дороже. Потом, по рекомендации специалиста купил антенны указанные в статье, по тестам они работают точно также.
                            Думаю, что абсолютная скорость в разумных пределах не так важна, важно сколько времени метка находится в поле. Если метка будет двигаться в сторону антенны, чтение будет и на довольно высоких скоростях.
                            Пробовал разные сессии, также предполагал, что другие сессии кроме 0, могут меньше нагружать ридер и давать лучше, чтение. Но смущает, что я не могу измерить это "лучше". В сессии 0, для меня показатель качества чтения именно количество в секунду. И я могу увидеть, что метка читается меньше 10 раз в секунду и это означает проблемы. Этот вопрос я пока для себя не закрыл, нужно ещё провести тесты.
                            Насчёт функций непрерывного чтения, они есть и в alien и в китайском RFID модуле на чипе imping r2000, но практика показала, что в таком режиме лучше не работать. Проблема в том, что мне нужно постоянное чтение на протяжение 1.5-2 часов. Если в режиме потокового чтения случается сбой, то перезапуск занимает несколько секунд. При этом буферизованный режим как раз удобнее, даже если связь с ридером временно оборвалась, после нескольких секунд она восстановится и я смогу из буфера считать метки без потерь.


                            Спасибо за комментарий, интересные идеи. Если не секрет, поделитесь как вы делали чтение на высокой скорости? И что применение с такой скоростью?

                              0

                              Про потоковый режим немного уточню.
                              У alien и модуля на r2000 в потоковом режим, если в поле нет меток будет просто тишина. Я не могу узнать, есть ли ещё связь с ридером, может он уже выключился? Оба ридера имеют функцию hearbeat, но если alien умеет посылать его раз в секунду, то китайский модуль почему-то не чаще раза в 30 секунд. В том числе по этой причине удобнее работать в режиме запрос-ответ. Я всегда знаю, что получил ответ на запрос, значит связь с ридером ещё есть.

                                0
                                По цене, не увидел разницы, оба ридера стояли 1600+-100$ и сильно гуляла цена/сроки доставки.

                                Это Вам за столько продали :)
                                и сильно гуляла цена/сроки доставки

                                У Impinj есть дистрибьютер в России срок поставки — со склада.
                                У меня есть немного меток «на металл», в моих тестах разницы в их работе не заметил. При этом они стоят в несколько раз дороже и из сложнее крепить. Но тут надо провести дополнительные тесты именно на металле.

                                Метки на металл есть гибкие с собственным клеевым слоем и копусированные. По моделям — в личку, чтобы не разводить рекламу :)
                                Пробовал разные сессии, также предполагал, что другие сессии кроме 0, могут меньше нагружать ридер и давать лучше, чтение. Но смущает, что я не могу измерить это «лучше». В сессии 0, для меня показатель качества чтения именно количество в секунду. И я могу увидеть, что метка читается меньше 10 раз в секунду и это означает проблемы. Этот вопрос я пока для себя не закрыл, нужно ещё провести тесты.

                                Я не совсем понял, с чем вы боретесь.
                                На Вашем месте, я бы стремился к следующему: создал бы зону регистрации, где RFID-метка считывается в 100% случаев и получал бы от нее 1 считывание, которое брал бы за результат пересечения игроком линии.
                                Насчёт функций непрерывного чтения, они есть и в alien и в китайском RFID модуле на чипе imping r2000, но практика показала, что в таком режиме лучше не работать. Проблема в том, что мне нужно постоянное чтение на протяжение 1.5-2 часов. Если в режиме потокового чтения случается сбой, то перезапуск занимает несколько секунд.

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

                                Я немного не то имел в виду. Когда RFID-метка считывается, перед тем как её выдать — считыватель накапливает данные ~20 — 70 мс — потом выдает результаты считывания. Такой режим можно отключать. То, что Вы пишите — накопление данных при потере связи — есть у всех считывателей.
                                Про потоковый режим немного уточню.
                                У alien и модуля на r2000 в потоковом режим, если в поле нет меток будет просто тишина. Я не могу узнать, есть ли ещё связь с ридером, может он уже выключился? Оба ридера имеют функцию hearbeat, но если alien умеет посылать его раз в секунду, то китайский модуль почему-то не чаще раза в 30 секунд. В том числе по этой причине удобнее работать в режиме запрос-ответ. Я всегда знаю, что получил ответ на запрос, значит связь с ридером ещё есть.

                                Это фичи каждой конкретной модели. Могу рекомендовать самому опрашивать считыватель. Например, запрашивать его конфигурацию или состояние антенн.
                                  0
                                  В условиях гонки невозможно считывать метку в 100% случаев, очень хороший результат это 90%
                                  Гонка это не склад и не конвейер :) Там есть грязь, вода, физические повреждения меток.
                                  Опять же оборудование установлено не стационарно, оно разворачивается в поле за пару часов до начала заедов и потом обратно убирается в коробки, это тоже сильно влияет на надёжность. Свободно висящие провода, питание от прикуривателя автомобиля. Есть куча вариантов, почему связь с ридером может оборваться

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

                            Самое читаемое