Alvaros
.
- Регистрация
- 14.05.16
- Сообщения
- 21.452
- Реакции
- 101
- Репутация
- 204
Хабр, приветствую! Мы занимаемся организацией и проведением детских робототехнических соревнований в рамках
Соревнования
Как это происходит в нормальном режиме. Есть АгроВУЗы, являющиеся региональными площадками. Есть команды школьников из сельскохозяйственных регионов. Есть полигон, имитирующий наши необъятные просторы и есть робот на дистанционном управлении. Робот поставляется в виде конструктора и команда перед соревнованиями его собирает. На соревнованиях робот под управлением оператора за определенное время должен выполнить задания на полигоне: перевезти тюки сена, переместить бидоны, посадить картошку, вспахать поле. За выполнение заданий и прохождение участков полигона команда получает баллы, за ошибки штрафы. Соревнования проходят 2 дня. Вот так это выглядело в Белгороде
Робот — это радиоуправляемая 6-ти колесная тележка с различными специальными исполнительными механизмами. За основу шасси взята кинематическая схема от
Полигон — это 35 квадратных ячеек, каждая ячейка размером 800х800мм. На полигоне имитируются разные типы местности и строений: холмы, леса, мосты, эстакады, овраги и т.д. Ячейки полигона произвольно стыкуются друг с другом и, в результате, получатся реконфигурируемый испытательный полигон сельскохозяйственной направленности.
Робот, полигон и соревнования полностью нашей разработки от идеи до воплощения в фанере, металле, электронике, коде и самом мероприятии. Все под ключ! Возможно, будет отдельная статья.
В мае 2019 года мы поставили полигоны и конструкторы в 10 городов и успешно провели соревнования. В мае 2020 года соревнования должны были пройти в 9-ти новых городах: Санкт-Петербург, Москва, Орёл, Барнаул, Уфа, Рязань, Омск, Пермь, Самара. С начала года началась работа по изготовлению 9-ти полигонов и 120-ти конструкторов, с планами провести соревнования во второй половине мая… И, как вы, наверное, уже догадались, планы пришлосьслегка корректировать! Вмешалась вот эта бяка
Проблема
К марту уже стало понятно, что соревнования переносятся на неопределенный срок: начались перебои с поставками комплектующих и изготовлением деталей полигонов, каникулы в масках и прочая самоизоляция… в общем, вам все это известно. Понимая не радужные перспективы, организаторы конкурса АгроНТИ попросили что-то придумать в мае, чтобы ребята не скучали и, при этом, все должно быть дистанционно и в масках. И еще, желательно, подключить ребят из регионов с прошлого года… в общем охватить все 19 регионов. Был проведен небольшой мозговой штурм, сразу после вынужденных апрельских каникул и стало понятно, что ничего не понятно. Надо как то провести дистанционные робототехнические соревнования!!!
В сухом остатке: у нас имеется тестовый полигон и несколько тестовых Агроботов, все это находится в Санкт-Петербурге. Как этим рулить из Уфы или Рязани решительно не ясно. А есть еще и Уссурийск!!!
Но, мы же, вроде, робототехники, 21-й век на дворе!!! Интернет… Телеуправление… И вот это вот все!
Слабая надежда
В нашей лаборатории имелись
С Raspberry Pi плата общается по шинеКонспирологи могут начать рассказывать, что 3 года назад мы предвидели вирус и заранее подготовились. К Raspberry Pi подключается штатная камера, которую можно использовать в качестве курсовой на роботе, по USB можно еще что то повесить и на борту имеется годный Wi-Fi.
Достали с полки Агроботасдули пыль со старичка и заменили ему масломозги, замена явно пошла на пользу, робот значительно поумнел. В качестве ОС на Raspberry Pi была установлена
ха-ха 3 раза. Плуг с робота решено было демонтировать, потому как и так уже хорошо, а пахать целину мы тут дистанционно точно не будем. Дисплей разместили в секторе обзора курсовой камеры с перспективой выводить на него информацию, полезную для участника. Начали проектировать и печатать детали для установки камер, дисплея и штанги. Ну, а пока получился такой макет, на профессиональном робототехническом сленге — чучело валенка, подключенное к внутренней ethernet-сети лаборатории по проводам и запитанное от блока питания.
И тут встал вопрос, как запитывать робота, так как штатно он питался от 2-x Li-Ionбатареек Теслы 18650 АКБ и этого вполне хватало на очные соревнования, но теперь у нас прожорливая Raspberry Pi на борту и соревнования будут длиться 24x7 весь рабочий день. Менять АКБ каждые полчаса очень не хотелось, было решено запитать робота по проводам, а провод в свою очередь свесить с потолка по центру полигона, завести его в штангу курсовой камеры и как-то подтягивать.
Ну такое
Забегая вперед скажу, что решение было не очень… И впоследствии мы от него отказались.
Полигон
Итак, с роботом более-менее понятно, теперь полигон. Решено было разместить полигон недалеко от лаборатории. Уже было понятно, что придется частенько бегать к нему во время проведения соревнований, а это лучше делать сидя в комфортных условиях рабочего места, да и текущую работу никто не отменял! Как раз рядом оказалсяочередной рояль в кустах пустующий светлый холл. В холл влезло 15 ячеек и у полигона появились стенки, что-бы робот не убежал за пределы, а то лови его потом! Над холлом по диагонали натянули трос, посередине которого разместили разъем для подключения кабеля от робота. И по тросу пустили кабель до блока питания.
Помимо камер на роботе, очевидно, нужны еще камеры на полигоне. Придумано, сделано… Заказали IP камеры: одну под потолок над полигоном и две по диагонали. Все камеры с POE, поэтому еще приобрели РОЕ коммутатор, который впоследствии стал коммутатором всей системы, все оборудование бюджетное
Инфраструктура
Настало время прорубать окно вЕвропу Интернет. В качестве «окна» в интернет. IT отдел выделил нам виртуальный сервер с двумя сетевыми интерфейсами. Один сморит в мир Интернет, второй во внутреннюю сеть лаборатории, на внешнем интерфейсе фиксированный IP адрес и тестовое доменное имя. На сервер накатили ОС Ubuntu 18.04.
Итого: робот на полигоне, сервер в серверной, камеры вокруг, все в проводах, но… еще не организована связь с роботом и упущен один важный момент: полигон стоит в холле, вокруг люди ходят, работа кипит, обязательно будут зрители и им непонятно что происходит, нужен
На комп установили ОС Ubuntu 18.04 и собрали утилитуUbuntu Raspbian Linux и все управляется с рабочего места из лаборатории… ну красота же! Но чего-то не хватает… ах, да, телеуправление, видео через интернет и соревнований.
Ну обо всем по порядку.
Управление роботом
Телеуправление было решено делать на базе протокола UDP, так как система должна работать взастрелился выключил сам себя, нажав схватом на кнопку выключения! Стало понятно, что система-то живет!
Видеотрансляция
На момент начала этой эпопеи, мы плотно работали сGoogle Yandex в помощь.
На просторах гитхаба обнаружили проект
Все уже придумано! Захожу на сайтшкольнику тестировщику, запускаю робота… тестер подключается, катается по лаборатории и вроде все отлично! Но спустя какое то время школьник сообщает, что трансляции начали лагать. Захожу в терминал на сервере, набираю
Итак возвращаюсь к
Скачал, установил, получил и активировал Trial лицензию на месяц, все прошло без проблем. Скачал и установил веб-сервер apache. Коллега по разработке написал пробную версию страницы с трансляцией с камер, все заработало, задержки в видео были на приемлемом уровне. Бубен, конечно, местами был нужен, но, в целом, работает! Документация у
Тесты, грабли и продакшн
Робот постепенно из состояния «чучело валенка» начал обретать финальный вид, распечатанные на 3D принтере детали занимали свои места.
Начались полноценные тестовые заезды уже из регионов, которые выявили недоработки в конфигурации полигона, что было оперативно поправлено. От кабеля питания на роботе отказались — очень сильно затруднял движение, наматывался на колеса и 5 Ампер блока питания не хватало при пиковых нагрузках, Raspberry Pi банально улетал в перезагрузку. Робота перевели на Li-Po АКБ с емкостью 6 Ампер*час, хватает на полдня активной работы и добавили индикатор заряда батареи. С трансляцией оказалось не все гладко: трансляция с камер на роботе при активной езде периодически падает, помогает перезагрузка страницы, правда, не сразу. И вылезла бага со схватом: он периодически непроизвольно разжимался. Времени искать причины уже не было, надо было начинать соревнования. Поэтому было объявлено, что это не баг, а фича и описано в инструкции к роботу, юридически мы чисты. Под конец дня иногда падал Wi-Fi на компьютере, но это уже было после заездов и на ход соревнований не влияло никак.
Пришли камеры из Китая, но доставка Aliexpress перепутала наклейки на пакеты и мне пришел пакет адресованный гражданке из Нидерландов, а там… скажем так — это не совсем те камеры, что я заказывал. Смешно получилось. Выручили ребята из соседнего отдела, за что им спасибо!
Организация соревнований
Оставалось дело за малым… все организовать! Была разработана документация соревнований: регламент, инструкция для робота, памятка по балльной системе и протокол заезда. Вместе с ПО управления роботом, документацию выложили на сайте для свободного скачивания участниками. Технически мы могли пропустить4 5 6 человек в день, по часу на участника. В этот час проходит 3 заезда по 15 минут: первый — ознакомительный, второй и третий идут в зачет с фиксацией в протоколе. Время начала заездов 10:00, 11:00, 12:00, переыв, 14:00, 15:00, 16:00, время московское. В мессенжере WhatsApp были созданы региональные группы с именами АгроБелгород, АгроНовосибирск и т.д. По мере создания групп составлялся график заездов регионов по дням: один регион в день. Региональные представители в своих группах формировали списки участников с расписанием по времени заездов. Ко дню заездов региона мы в группе видели список участников со временем старта, а дальше — дело техники и организованности участников.
Проведение
День сурка существует! С утра поставить на робота свежую АКБ, включить комп и телевизор, на компе открыть страницу с «генеральским интерфейсом», на рабочем месте зайти в терминал, запустить точку доступа на компе, дождаться подключения робота к ней. На роботе, также через терминал, запустить трансляции с камер. Убедиться, что есть картинка. Привести полигон в порядок: разложить тюки и бидон по своим местам, зарядить в робота картофан, расставить коров. Параллельно в региональной группе поинтересоваться, о готовности участников и все ли понимают, что тут вообще происходит.
Перед стартом, в группе спросить очередного участника готов ли он, по готовности и достижении на часах времени старта запустить в терминале программу на роботе, указав в параметрах программы имя, фамилию и город участника. После запуска программа выдает сгенерированные порт и ключ, их копирую в буфер обмена и отправляю в личном сообщении участнику.
Далее необходимо посмотреть вывод логов, пошли ли корректные UDP пакеты на робота. Можно идти на полигон следить за заездом, в случае чего помочь участнику либо советом, либо делом. Если робот перевернулся, то поставить его на колеса. Во время заезда в зачет, за роботом следит судья непосредственно на полигоне и фиксирует все в протоколе. После заезда надо привести полигон в порядок и подготовить робота. После заездов протоколы фотографируются и выкладываются в региональную группу в WhatsApp. Общие результаты заездов выкладываются судьей в гугл таблицу.
И так каждый заезд и каждый день, пока не пройдут все участники всех регионов. На фото судья за работой
Что так и не заработало или заработало, но как то не так
По всей видимости от v4l2rtspserver будем отказываться и искать другое решение.Кто сказал ffmpeg!?
Ну и классика жанра… за месяц соревнований все моторы на роботе были поменяны минимум по разу. Жгли их участники не щадя наших нервов!
Итог
Из оборудования и материалов были закуплены:
Все остальные материалы имелись в наличии. Пластиковые детали для робота изготавливались на 3D принтере, существующее железо нещадно правилось напильником. На все ушло 3 месяца было задействовано 3 человека, двое из них студенты. Два месяца на разработку и месяц на проведение. Разработкой железа и софта занимались 2 человека, причем один удаленно и в лаборатории не появлялся. Проведение соревнований 2 человека: один техническое сопровождение и один судейство. Все в условиях изоляции, масок и прочих связанных с этим ограничений. Также хочу отметить, что были задействованы IT-отдел, хозяйственный отдел и информационно аналитический отдел, с их стороны все вопросы решались четко и вовремя.
В основном региональные представители и участники проявили высокую организованность, если участник по каким-либо причинам не мог стартовать, то представитель от региона оперативно разыскивали нового участника и у нас практически не получалось простоев, все время заездов было использовано.
В общей сложности в соревнованиях приняли участие 110 школьников из 19 городов от Санкт-Петербурга до Уссурийска. Можно сказать, что охватили всю Россию.
Получен бесценный опыт и опробован новый формат соревнований. У нас все получилось!!!
Много фото робота в процессе заездов
Используемое в данном проекте ПО
You must be registered for see links
по направлению Агророботы. Но, как вы уже догадываетесь, в этом году с массовыми мероприятиями, а тем более детскими, не все так однозначно…
Соревнования
Как это происходит в нормальном режиме. Есть АгроВУЗы, являющиеся региональными площадками. Есть команды школьников из сельскохозяйственных регионов. Есть полигон, имитирующий наши необъятные просторы и есть робот на дистанционном управлении. Робот поставляется в виде конструктора и команда перед соревнованиями его собирает. На соревнованиях робот под управлением оператора за определенное время должен выполнить задания на полигоне: перевезти тюки сена, переместить бидоны, посадить картошку, вспахать поле. За выполнение заданий и прохождение участков полигона команда получает баллы, за ошибки штрафы. Соревнования проходят 2 дня. Вот так это выглядело в Белгороде
Робот — это радиоуправляемая 6-ти колесная тележка с различными специальными исполнительными механизмами. За основу шасси взята кинематическая схема от
You must be registered for see links
. На роботе имеется: схват совмещенный с отвалом, устройство для посадки картофеля и плуг. Детали робота изготовлены лазерной резкой из листа дюраля Д16 толщиной 2мм и 3D печатью ABS пластиком. Робот управляется Arduino совместимым контроллером нашей разработки, в качестве пульта — беспроводной геймпад. Назвали мы его Агробот.
Полигон — это 35 квадратных ячеек, каждая ячейка размером 800х800мм. На полигоне имитируются разные типы местности и строений: холмы, леса, мосты, эстакады, овраги и т.д. Ячейки полигона произвольно стыкуются друг с другом и, в результате, получатся реконфигурируемый испытательный полигон сельскохозяйственной направленности.
Робот, полигон и соревнования полностью нашей разработки от идеи до воплощения в фанере, металле, электронике, коде и самом мероприятии. Все под ключ! Возможно, будет отдельная статья.
В мае 2019 года мы поставили полигоны и конструкторы в 10 городов и успешно провели соревнования. В мае 2020 года соревнования должны были пройти в 9-ти новых городах: Санкт-Петербург, Москва, Орёл, Барнаул, Уфа, Рязань, Омск, Пермь, Самара. С начала года началась работа по изготовлению 9-ти полигонов и 120-ти конструкторов, с планами провести соревнования во второй половине мая… И, как вы, наверное, уже догадались, планы пришлось
Проблема
К марту уже стало понятно, что соревнования переносятся на неопределенный срок: начались перебои с поставками комплектующих и изготовлением деталей полигонов, каникулы в масках и прочая самоизоляция… в общем, вам все это известно. Понимая не радужные перспективы, организаторы конкурса АгроНТИ попросили что-то придумать в мае, чтобы ребята не скучали и, при этом, все должно быть дистанционно
В сухом остатке: у нас имеется тестовый полигон и несколько тестовых Агроботов, все это находится в Санкт-Петербурге. Как этим рулить из Уфы или Рязани решительно не ясно. А есть еще и Уссурийск!!!
Но, мы же, вроде, робототехники, 21-й век на дворе!!! Интернет… Телеуправление… И вот это вот все!
Слабая надежда
В нашей лаборатории имелись
You must be registered for see links
по электронике для мобильных роботов на базе
You must be registered for see links
, в частности, почти готовые платы-шилды для Raspberry Pi в основе которых был микроконтроллер Atmega328p. На плате также расположен драйвер коллекторных двигателей L298P на 2 канала, 4 канала управления сервами, динамик и разъем для подключения OLED дисплея 128х64pix.
С Raspberry Pi плата общается по шине
You must be registered for see links
и под плату написана библиотека ПО на языке Python, обеспечивающая программный интерфейс взаимодействия с железом. Все немного сыроватое, но, главное, платы есть. Вот они, бери! Агробота мы, в свою очередь, проектировали таким образом, чтобы в него можно было поставить Raspberry Pi на место штатной платы Arduino и тут, как вы понимаете, звезды сошлись! Достали с полки Агробота
You must be registered for see links
. Решено было, что будет две камеры: одна курсовая на штанге и одна смотрящая на посадку картофеля. Обе камеры с объективом «рыбий глаз». Аппаратные камеры, как и Raspberry Pi 4,
You must be registered for see links
. Камера для посадки картофеля была заказана из Китая. Время позволяло, алиэкспресс вроде работал и посылка должна была прийти как раз к соревнованиям
И тут встал вопрос, как запитывать робота, так как штатно он питался от 2-x Li-Ion
Ну такое
Забегая вперед скажу, что решение было не очень… И впоследствии мы от него отказались.
Полигон
Итак, с роботом более-менее понятно, теперь полигон. Решено было разместить полигон недалеко от лаборатории. Уже было понятно, что придется частенько бегать к нему во время проведения соревнований, а это лучше делать сидя в комфортных условиях рабочего места, да и текущую работу никто не отменял! Как раз рядом оказался
Помимо камер на роботе, очевидно, нужны еще камеры на полигоне. Придумано, сделано… Заказали IP камеры: одну под потолок над полигоном и две по диагонали. Все камеры с POE, поэтому еще приобрели РОЕ коммутатор, который впоследствии стал коммутатором всей системы, все оборудование бюджетное
You must be registered for see links
. Благо, что поставщики работали и все было в наличии. Камеры разместили на местах, проложили ethernet-кабели от камер до места установки коммутатора.
Инфраструктура
Настало время прорубать окно в
Итого: робот на полигоне, сервер в серверной, камеры вокруг, все в проводах, но… еще не организована связь с роботом и упущен один важный момент: полигон стоит в холле, вокруг люди ходят, работа кипит, обязательно будут зрители и им непонятно что происходит, нужен
You must be registered for see links
, по простому телевизор (панель), на который будут выводиться трансляции с камер, а так как трансляции кто-то должен выводить, то нужен компьютер под этот телевизор и этот же компьютер может и быть wi-fi точкой доступа для робота, два в одном! Тут в кусты закинули очередной рояль: cо старого проекта лежал непригодившийся промышленный компьютер с wi-fi и HDMI. Под комп и коммутатор были напечатаны крепления на 3D принтере и все оборудование размещено на стойке под телевизором.
На комп установили ОС Ubuntu 18.04 и собрали утилиту
You must be registered for see links
. С помощью этой утилиты создается точка доступа и мост (brige) между проводным ethernet интерфейсом и wi-fi, причем в одну строчку из командной строки и без бубна! Весчь!!! Роботу прописали
You must be registered for see links
подключаться к этой точке доступа. Параллельно к месту установки стойки с телевизором, компьютером, коммутатором и полигоном наш отдел АХО протянул ethernet кабель, а IT-отдел соединил все это хозяйство с сетью лаборатории в одну подсеть. Итого: все IP-камеры, робот и компьютер через коммутатор подключены к внутренней сети лаборатории, к которой также подключен сервер смотрящий в Интернет. Все пингуется, пакеты летают, картинки с IP-камер транслируются в VLC, все удаленно по SSH подключается, везде Ну обо всем по порядку.
Управление роботом
Телеуправление было решено делать на базе протокола UDP, так как система должна работать в
You must be registered for see links
и у нас в лаборатории имелись некоторые наработки по этой тематике. В двух словах: программа управления на компьютере участника ловит нажатия клавиш и посылает 10 раз в секунду на робота UDP пакет. В пакете закодированы порядковый номер пакета, значения скоростей на двигатели, положение сервомоторов, уникальный ключ и контрольная сумма, для контроля целостности данных. В свою очередь, на роботе запускается программа, которая открывает UDP порт и принимает пакеты, проверяет контрольную сумму, сверяет ключ и, если все хорошо, задает скорости на моторы и выставляет положения сервоприводов. Программы были написаны на Python. Управление только с клавиатуры, так как она точно есть у всех участников. UDP порт, на котором робот будет принимать пакеты и уникальный ключ генерятся программой случайным образом — это такая защита от несанкционированного подключения. На сервере с помощью
You must be registered for see links
был настроен проброс пакетов, т.е. UDP пакет пришедший на внешний IP адрес сервера, автоматом пересылался на робота. Программу управления, написанную на Python с помощью
You must be registered for see links
преобразовали в исполняемый файл под OC Windows. И все это протестировали на школьнике, сидящем дома в изоляции в соседнем доме. Робот ожил, покатался по лабе, подъехал к блоку питания и
Видеотрансляция
На момент начала этой эпопеи, мы плотно работали с
You must be registered for see links
, то есть, могли слать
You must be registered for see links
, а вот как реализовывать видео трансляции точка-много браузеров, понятия не было никакого. Ну, как говорится, На просторах гитхаба обнаружили проект
You must be registered for see links
, который без проблем собрался на Raspberry Pi и при запуске из командной строки создал
You must be registered for see links
сервер, подключившись к которому из
You must be registered for see links
, мы увидели картинку с курсовой камеры робота! Настроив проброс пакетов на сервере, удалось увидеть картинку с робота и на компьютере коллеги, находящегося далеко за пределами Санкт-Петербурга. Но при подключениях одновременно с разных компьютеров начинала расти загрузка ЦП Raspberry Pi и стало понятно, что при реальных нагрузках в десятки человек Raspberry Pi не выдержит, да и IP-камеры позволяют отдавать не более 6 потоков. Продолжаем гуглить в Яндексе… И внезапно, нахожу статью на Хабре
You must be registered for see links
Так вот же
You must be registered for see links
!!!
Все уже придумано! Захожу на сайт
You must be registered for see links
. То что нужно, бинго! К сожалению, продукт платный, но наверняка же есть и другие. Снова гуглеж, который меня выводит на проект
You must be registered for see links
. Ссылка показалась подозрительно знакомой… ну, конечно, это же еще один проект того же
You must be registered for see links
, что и
You must be registered for see links
, он был всего в паре кликов! Качаю, собираю проект на сервере, в конфигурационном json файле прописываю ссылки на RTSP стримы с камер, запускаю из командной строки и получаю веб-сервер с готовой страницей с трансляциями со всех камер. Отправляю все данные
You must be registered for see links
и вижу 200% загрузку CPU и утечку памяти — это был провальный провал. Написал автору webrtc-streamer, ответ свелся к:I am sorry if I not really answer to this question that was debated many times.
Опенсорс, который мы заслужили! После были попытки собрать и установить другие решения, но все тщетно, только терял время.Итак возвращаюсь к
You must be registered for see links
от компании Flashphoner.Скачал, установил, получил и активировал Trial лицензию на месяц, все прошло без проблем. Скачал и установил веб-сервер apache. Коллега по разработке написал пробную версию страницы с трансляцией с камер, все заработало, задержки в видео были на приемлемом уровне. Бубен, конечно, местами был нужен, но, в целом, работает! Документация у
You must be registered for see links
— мое почтение, на форуме техподдержка оперативно отвечает на вопросы. К этому времени IT-отдел организовал доменное имя
You must be registered for see links
и на него получили SSL сертификат от
You must be registered for see links
. Всю систему перевели на HTTPS и допилили страницу с трансляцией и «генеральским интерфейсом». Система трансляций заработала, загрузка сервера не выходила за разумные пределы. Перед соревнованиями оплатили лицензию WebCallServer на 2 месяца и её активировали. В целом решением на базе WCS остался доволен. Что в результате видит участник:
Тесты, грабли и продакшн
Робот постепенно из состояния «чучело валенка» начал обретать финальный вид, распечатанные на 3D принтере детали занимали свои места.
Начались полноценные тестовые заезды уже из регионов, которые выявили недоработки в конфигурации полигона, что было оперативно поправлено. От кабеля питания на роботе отказались — очень сильно затруднял движение, наматывался на колеса и 5 Ампер блока питания не хватало при пиковых нагрузках, Raspberry Pi банально улетал в перезагрузку. Робота перевели на Li-Po АКБ с емкостью 6 Ампер*час, хватает на полдня активной работы и добавили индикатор заряда батареи. С трансляцией оказалось не все гладко: трансляция с камер на роботе при активной езде периодически падает, помогает перезагрузка страницы, правда, не сразу. И вылезла бага со схватом: он периодически непроизвольно разжимался. Времени искать причины уже не было, надо было начинать соревнования. Поэтому было объявлено, что это не баг, а фича и описано в инструкции к роботу
Пришли камеры из Китая, но доставка Aliexpress перепутала наклейки на пакеты и мне пришел пакет адресованный гражданке из Нидерландов, а там… скажем так — это не совсем те камеры, что я заказывал. Смешно получилось. Выручили ребята из соседнего отдела, за что им спасибо!
Организация соревнований
Оставалось дело за малым… все организовать! Была разработана документация соревнований: регламент, инструкция для робота, памятка по балльной системе и протокол заезда. Вместе с ПО управления роботом, документацию выложили на сайте для свободного скачивания участниками. Технически мы могли пропустить
Проведение
День сурка существует! С утра поставить на робота свежую АКБ, включить комп и телевизор, на компе открыть страницу с «генеральским интерфейсом», на рабочем месте зайти в терминал, запустить точку доступа на компе, дождаться подключения робота к ней. На роботе, также через терминал, запустить трансляции с камер. Убедиться, что есть картинка. Привести полигон в порядок: разложить тюки и бидон по своим местам, зарядить в робота картофан, расставить коров. Параллельно в региональной группе поинтересоваться, о готовности участников и все ли понимают, что тут вообще происходит.
Перед стартом, в группе спросить очередного участника готов ли он, по готовности и достижении на часах времени старта запустить в терминале программу на роботе, указав в параметрах программы имя, фамилию и город участника. После запуска программа выдает сгенерированные порт и ключ, их копирую в буфер обмена и отправляю в личном сообщении участнику.
Далее необходимо посмотреть вывод логов, пошли ли корректные UDP пакеты на робота. Можно идти на полигон следить за заездом, в случае чего помочь участнику либо советом, либо делом. Если робот перевернулся, то поставить его на колеса. Во время заезда в зачет, за роботом следит судья непосредственно на полигоне и фиксирует все в протоколе. После заезда надо привести полигон в порядок и подготовить робота. После заездов протоколы фотографируются и выкладываются в региональную группу в WhatsApp. Общие результаты заездов выкладываются судьей в гугл таблицу.
И так каждый заезд и каждый день, пока не пройдут все участники всех регионов. На фото судья за работой
Что так и не заработало или заработало, но как то не так
- Как уже упоминал ранее — это кабель для питания робота, свисающий с потолка. От него отказались на этапе тестирования и робота переделали на Li-Po аккумулятор. Решение изначально было ошибочным.
- Не удалось получить звук с микрофона камеры в браузере. WebCallServer не понимал поток со звуком идущий от
You must be registered for see links… видео без звука — работает, а вот то же самое видео, но со звуком — увы нет.
- И имеются серьезные нарекания к стабильной работе v4l2rtspserver — победить падения трансляций не удалось. Они конечно со временем восстанавливались, но к этому моменту оператор робота имел стертый палец от нажатий на клавишу F5, из-за тщетных попыток реанимировать трансляцию курсовой камеры.
По всей видимости от v4l2rtspserver будем отказываться и искать другое решение.
Ну и классика жанра… за месяц соревнований все моторы на роботе были поменяны минимум по разу. Жгли их участники не щадя наших нервов!
Итог
Из оборудования и материалов были закуплены:
- IP-камеры HikVision — 3шт
- POE коммутатор HikVision — 1шт
- USB OEM камера на робота ELP — 2шт
- Стенки на полигон -16шт
- Трос и крепеж — 1шт
- Лицензия на WebCallServer на 2 месяца — 1шт
Все остальные материалы имелись в наличии. Пластиковые детали для робота изготавливались на 3D принтере, существующее железо нещадно правилось напильником. На все ушло 3 месяца было задействовано 3 человека, двое из них студенты. Два месяца на разработку и месяц на проведение. Разработкой железа и софта занимались 2 человека, причем один удаленно и в лаборатории не появлялся. Проведение соревнований 2 человека: один техническое сопровождение и один судейство. Все в условиях изоляции, масок и прочих связанных с этим ограничений. Также хочу отметить, что были задействованы IT-отдел, хозяйственный отдел и информационно аналитический отдел, с их стороны все вопросы решались четко и вовремя.
В основном региональные представители и участники проявили высокую организованность, если участник по каким-либо причинам не мог стартовать, то представитель от региона оперативно разыскивали нового участника и у нас практически не получалось простоев, все время заездов было использовано.
В общей сложности в соревнованиях приняли участие 110 школьников из 19 городов от Санкт-Петербурга до Уссурийска. Можно сказать, что охватили всю Россию.
Получен бесценный опыт и опробован новый формат соревнований. У нас все получилось!!!
Много фото робота в процессе заездов
Используемое в данном проекте ПО
You must be registered for see links
WebRTC сервер от компании Flashphoner, платная лицензия
You must be registered for see links
Удобное создание точки доступа и сетевого моста
You must be registered for see links
RTSP сервер
You must be registered for see links
WebRTC сервер, работает но крайне нестабильно при нагрузках. В проекте не задействован.



