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

Нижняя сторона козырька шлема обычно самая чистая и сохраняется больше шансов на чтение.
Видимо имеются в виду дорожные велосипеды? Думаю там правда могут быть проблемы. Можно поискать на прокат профессиональную систему mylaps, она очень точная
Фотофиксацию отменили?;) А разбор уже потом…
Кто читает эти статьи? :))
Конечно ведётся видеозапись финишного створа и все споры могут быть разрешены.
По расположению меток, не всё так просто. Я уже упоминал, что грязь и вода очень сильно ослабляют чтение, также на чтение радикально влияет близость металлических объектов. Поэтому расположить метку на мотоцикле так, чтобы она надёжно читалась и крепилась одинаково на всех мотоциклах пока не представляется возможным. А объяснять каждому из 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 штук людям, которых я хорошо знаю лично, а не всем подряд. Эти люди будут передавать трек в реальном времени, его можно отображать на сайте для зрелищности.
отличный востребованный продукт. спасибо за внятную статью!
пара вопросов:
- какова вероятность срабатывания (или несрабатывания) метки? в сухих условиях, в условиях дождя и грязи?
- одинаково ли хорошо работают метки, наклеенные на поверхности разных материалов?
- при расчете итоговых результатов проводится ли проверка на полноту и непротиворечивость последовательности засечек? например, если одно или несколько пересечений финишного створа не были зафиксированы? или если гонщик застрял в поле действия антенн, и система зафиксировала лишние прохождения?
- как организован процесс привязки в системе гонщика к выданной ему метке? метки имеют какой-то явный идентификатор, или нужно сканировать каждую метку при выдаче?
- проводились ли сравнительные тесты rfid-меток разных конфигураций?
- Это зависит от многих факторов. Лучше всего после выдачи метки проверить как она читается. Обычно, если с меткой всё хорошо, она будет читаться 50-70 раз в секунду в любой ориентации. Если метка битая или плохо установлена, чтения будут реже и будут сильно зависеть от ориентации метки относительно антенны.
Вода сильно влияет на чтение, в сильный туман я не проверял лично, но слышал, что чтение становится гораздо хуже. Тоже самое когда очень много грязи. В таких случаях приходится подключать судей людей с карандашом и бумажкой, потому что возможны массовые пропуски чтения. - Нет, никакие метки не могут работать на поверхности металла, карбонового волокна и других проводящих материалов. Чтобы метка начала работать, нужно отделить ее от металла на 3-5мм. Есть готовые метки в корпусах, которые обеспечивают это расстояние. Либо можно просто наклеить кусок пенки, а потом метку.
- Защита от лишних прохождений заложена во входном фильтре, система агрегирует все метки внутри интервала минимального круга. Например, я знаю, что лучшее время лидера на трассе одна минута, тогда я ставлю минимальный круг на 40 секунд и знаю, что никто не повторит чтение, даже если остановится под рамкой. Также судья, который всегда стоит у рамки будет прогонять стоящего участника и может записать его номер, чтобы потом исправить ошибку.
Факт недостающего круга фиксируется либо визуально судьей (он на смартфоне в реальном времени видит считанные метки и может вручную вбить пропущенный номер), либо по жалобе участника и тогда разбираем видео. - Rfid метки с завода чаще всего имеют уникальный номер epc id. Но я также покупал и чистые метки, все забитые нулями. В любом случае свои метки я кодирую последовательными номерами и пишу этот же номер на метке. Можно заказать печать меток, тогда перед продажей их закодируют нужными номерами и напечатают на каждой любой текст, но эта услуга как и оборудование довольно дорого стоит, потому пока я покупаю чистые метки и кодирую сам.
Например motosponder продает метки с уникальным кодом, который напечатан на метке по 1$, я покупаю чистые метки по 0.22$
Дальше во время выдачи метки участнику я просто сканирую её и уникальный номер попадает в поле ввода на форме регистрации. - Проводил. На моих простых тестах на коленке я не заметил разницы. Общий принцип: чем больше размер метки, тем она лучше будет читаться. Я пробовал метки разных производителей и конструкций, но все они рекламировались как дальнобойные и имели размеры примерно 8х1.5см. измеримой разницы в качестве чтения я не заметил.
Вы задаёте очень конкретные вопросы, есть опыт?
Благодарю за развернутые ответы! Опыт есть — я в течение нескольких лет обслуживал систему motosponder в составе судейской бригады xsr-moto.ru. Идея написания собственного софта под готовое оборудование впервые посетила нас на 2 или 3 год работы с американской системой — в период интенсивной её кастомизации под нужны нашего кантрикросса. Отрадно видеть, что хорошая идея нашла прямые руки;)
- Жаль, что и у вас не 100% результат. Когда мы только внедряли систему в наш процесс, "мечта" была включить ноутбук с программой и курить бамбук.
- Установка метки через прокладку — отличный workaround!
- При большом количестве участников и/или плохих погодных условиях даже визуальный контроль не всегда позволяет зафиксировать все прохождения. Пропущенные засечки в 80% случаев выявляются через поиск времени круга +- кратного среднему времени круга гонщика.
- Метки от motosponder имеют одно отличительное свойство — на них нанесен штрихкод, который можно считывать сканером штрихкодов. Это удобно во время регистрации. Я связывался со многими продавцами меток в России, никто не взялся изготавливать метки с таким принтом. Собственный rfid-принтер слишком дорог для объемов мотогонок — тут я с Вами согласен.
Для улучшения точности есть много идей, нужно время и силы. Например можно с помощью компьютерного зрения считать количество проезжающих участников и сравнивать сколько меток считалось. Если есть разница — отмечать это место и давать возможность судье посмотреть видео этого момента. Технически всё это несложно сделать, нужно только в эту сторону покопать.
Да, среднее время круга я тоже использую и есть план сделать сигнализацию о пропущенных кругах на основе этих данных. Но я уже сталкивался с ситуацией, когда человек упал и лежал ровно время одного круга :)
Чтобы удобно читать метки во время регистрации, я купил маленький настольный rfid ридер с usb. В феврале буду в первый раз пробовать с ним регистрацию, по идее должно быть гораздо удобнее, чем с большой антенной
Ещё можно рассмотреть battery assisted метки, это обычные пассивные метки, но с батарейкой. За счёт этого не тратится время на заряд конденсатора и запуск процессора метки, по идее они должны читаться более уверенно. Но я пока не покупал образцы.
Ещё один вариант это active rfid, там метки сами постоянно передают сигнал, как транспондеры, но цена значительно выше и протокол другой, нужен другой ридер
А как выглядят метки?
Если это коробочки, где вероятно стоит батарейка, то у вас система с транспондерами. Петля это пассивная антенна, которая ловит сигнал транспондера и выдает чтение, когда транспондер между частей петли. Так работает mylaps.
Для марафонов и других забегов есть антенны в виде плоских ковриков, они модульные можно любую ширину сделать, но их не закапывают и метки используют пассивные в виде наклеек, манишек или на ногу/шнурки браслетики всякие
Можно дополнительно фиксировать момент проезда через створ с помощью датчика пересечения луча, ик — если не сработала метка, то брать время с луча.
Интересно узнать какое у них оборудование.
Если 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 удалось сделать компактную систему, которая работает от батареи
В моей системе я считаю первое считывание метки, это может произойти в 50-80см от створа ворот. Как я уже отмечал выше, на практике в мотогонках крайне редко бывают плотные финишны, так что нет проблемы различения двух гонщиков рядом
В motosponder заявлено, что в качестве времени пересечения створа фиксируется среднее арифметическое между первым срабатыванием метки в течение серии срабатываний и последним. Но на практике точность определения времени сильно хромает. В целом соглашусь, что брать первое срабатывание — логичнее.
На основании своего опыта могу рекоменовать:
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 секунд. В том числе по этой причине удобнее работать в режиме запрос-ответ. Я всегда знаю, что получил ответ на запрос, значит связь с ридером ещё есть.
Это фичи каждой конкретной модели. Могу рекомендовать самому опрашивать считыватель. Например, запрашивать его конфигурацию или состояние антенн.
Гонка это не склад и не конвейер :) Там есть грязь, вода, физические повреждения меток.
Опять же оборудование установлено не стационарно, оно разворачивается в поле за пару часов до начала заедов и потом обратно убирается в коробки, это тоже сильно влияет на надёжность. Свободно висящие провода, питание от прикуривателя автомобиля. Есть куча вариантов, почему связь с ридером может оборваться
Создаём систему электронного хронометража гонок