Pull to refresh

Comments 37

Спасибо!

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

Если немного — тогда можно смартами ограничиться. Но у недорогих смартов GPS очень фиговый, прям совсем совсем. Настоятельно рекомендую протестировать в разных условиях, прежде чем покупать партию.

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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

В первой версии я брал, наоборот последнее срабатывание. Но из-за этого стало очень неудобно мониторить работу засечки. Получается, что обновление рейтинга случалось с задержкой в 2-3 секунды после проезда гонщика. После одной гонки в таком режиме, я перевернул логику, обновление рейтинга стало происходить моментально и удобно для отслеживания. В целом, я просто принял как факт, что точность засечки основанной на RFID не лучше одной секунды. Есть очень много причин, почему два человека внутри одной секунды могут поменяться местами при чтении меток.
Автор — молодец!!! Сам разобрался в 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. Считывать велосипедистов тоже можно. Все зависит от того, где расположить метку и антенны.

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


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

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

По цене, не увидел разницы, оба ридера стояли 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 секунд. В том числе по этой причине удобнее работать в режиме запрос-ответ. Я всегда знаю, что получил ответ на запрос, значит связь с ридером ещё есть.

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

Articles