Так как тут ещё не было статьи о ROBORACE, я решил восполнить этот пробел. Я немного расскажу вам о самих соревнованиях и о моём роботе.
Кому интересно, прошу под кат:
Игровое поле представляет собой прямоугольник площадью от 50м2, реализованной на белом
покрытии с продольными черными линями, а ее края ограничены бортами. Задача робота проехать трассу как можно быстрее. Все роботы стартуют одновременно, поэтому толкучка на старте всегда приводит к авариям. Столкновения с роботами соперниками разрешены.
Видео соревнований:
Соревнования проходят в Украине (Тернополь, Львов, Киев, Черновцы, Иванофранковск), Беларуси (Брест), России (Ковров, Красноярск).
В соответствии с регламентом соревнований был сделан робот. Я решил назвать его «Pancar», это название созвучно с названием класса моделей «pancar 12». Шасси было куплено мною в Минске на барахолке, как потом выяснилось модель на этом шасси была чемпионом Беларуси по кольцевым гонкам радио-моделей в классе 1/12 электро.
В движение робота приводит коллекторный электромотор, рулевое управление осуществляется сервой. Мозг робота Arduino Nano, установленный на самодельную плату расширения, для удобного подключения сенсоров. Я использовал датчики расстояния Sharp GP2Y0A02 с диапазоном измерения 20-150 см. Для того чтобы избежать попадания препятствий в мертвую зону датчика, я установил их вглубь робота в среднем на 20 см.
Над программным обеспечением я работал со своей девушкой. Было решено сильно не усложнять логику, а сделать всё максимально просто. У робота есть два параметра которыми мы можем управлять это угол поворота передних колёс и скорость. Мы решили что скорость будет зависеть от поворота передних колёс, чем больше угол поворота тем меньше скорость.
Угол поворота рассчитывается исходя из показаний датчиков по следующей формуле:
Угол = (-(Л1 + Л2)+(П1+П2))*К
Л1, Л2 — сенсоры которые смотрят влево
П1, П2 — сенсоры которые смотрят вправо
К — коректирующий коэфициент
Так как робот едет в туннеле то в идеальном случае разность между двумя правыми и двумя левыми датчиками должна быть равна нулю. При повороте разность увеличивается и робот поворачивает. Для увеличения скорости поворотов при обнаружении репятствий по направлению движения был введён корректирующий коэффициент К. Центральный датчик регулирует чувствительность, чем ближе к препятствию, тем больше становится коэффициент К, и тем сильнее робот «хочет» повернуть. Настройка предельных значений коэффициента К делалась экспериментально. Для этого к роботу подключили приёмник от радио-модели и с помощью регуляторов авиопульта настроили их. Также в программу включили небольшой модуль определения столкновений. Если значение сенсоров становятся меньше заранее определённых констант, то робот отъезжает назад, а затем продолжает движение. Сразу же во время тестов мы столкнулись с проблемой: при выходе из поворота робота немного заносило. Проблема была в том что программа не предусматривала инерционность сервопривода. Робот на выходе из поворота видел перед собой чистую трассу подавал на серву угол в 0 градусов и включал мотор на полную мощность, но так как серве нужно некоторое время для установки 0, а мотор уже начинал вращаться с пробуксовкой, то робота начинало заносить. Я решил установить в серву обратную связь. Для этого я подключил средний вывод потенциометра в серве через резисторный делитель к аналоговому порту ардуины. Теперь робот точно знал угол поворота передних колёс и мотор не включается преждевременно.
Для более презентабельного вида, я установил белый корпус от радио-модели и алюминиевый бампер.
На фотографии два гоночных робота белый и чёрный. Белый это уже завершённый проект «Pancar», чёрный это новый проект который я тоже опишу, если вам будет интересно.
Ну и напоследок видео с соревнований где «Pancar» занял второе место.
Roborace — это проект робототехнических соревнований. Эти соревнования во многом черпают идеи из соревнований Формулы 1, но с тем отличием, что соревнуются не управляемые пилотами болиды, а полностью автономные роботы. Роботы полагаются на показания своих датчиков что бы ориентироваться по трассе. Турнир включает соревнования, в которых могут принимать участие как простые узконаправленные конструкции, созданные начинающими, так и комплексные робототехнические устройства со сложной программной частью. Регламенты соревнований формируются таким образом, чтобы охватить как можно более широкий спектр характеристик и возможностей робототехнических конструкций.
Кому интересно, прошу под кат:
Игровое поле представляет собой прямоугольник площадью от 50м2, реализованной на белом
покрытии с продольными черными линями, а ее края ограничены бортами. Задача робота проехать трассу как можно быстрее. Все роботы стартуют одновременно, поэтому толкучка на старте всегда приводит к авариям. Столкновения с роботами соперниками разрешены.
Видео соревнований:
Соревнования проходят в Украине (Тернополь, Львов, Киев, Черновцы, Иванофранковск), Беларуси (Брест), России (Ковров, Красноярск).
В соответствии с регламентом соревнований был сделан робот. Я решил назвать его «Pancar», это название созвучно с названием класса моделей «pancar 12». Шасси было куплено мною в Минске на барахолке, как потом выяснилось модель на этом шасси была чемпионом Беларуси по кольцевым гонкам радио-моделей в классе 1/12 электро.
В движение робота приводит коллекторный электромотор, рулевое управление осуществляется сервой. Мозг робота Arduino Nano, установленный на самодельную плату расширения, для удобного подключения сенсоров. Я использовал датчики расстояния Sharp GP2Y0A02 с диапазоном измерения 20-150 см. Для того чтобы избежать попадания препятствий в мертвую зону датчика, я установил их вглубь робота в среднем на 20 см.
Над программным обеспечением я работал со своей девушкой. Было решено сильно не усложнять логику, а сделать всё максимально просто. У робота есть два параметра которыми мы можем управлять это угол поворота передних колёс и скорость. Мы решили что скорость будет зависеть от поворота передних колёс, чем больше угол поворота тем меньше скорость.
Угол поворота рассчитывается исходя из показаний датчиков по следующей формуле:
Угол = (-(Л1 + Л2)+(П1+П2))*К
Л1, Л2 — сенсоры которые смотрят влево
П1, П2 — сенсоры которые смотрят вправо
К — коректирующий коэфициент
Так как робот едет в туннеле то в идеальном случае разность между двумя правыми и двумя левыми датчиками должна быть равна нулю. При повороте разность увеличивается и робот поворачивает. Для увеличения скорости поворотов при обнаружении репятствий по направлению движения был введён корректирующий коэффициент К. Центральный датчик регулирует чувствительность, чем ближе к препятствию, тем больше становится коэффициент К, и тем сильнее робот «хочет» повернуть. Настройка предельных значений коэффициента К делалась экспериментально. Для этого к роботу подключили приёмник от радио-модели и с помощью регуляторов авиопульта настроили их. Также в программу включили небольшой модуль определения столкновений. Если значение сенсоров становятся меньше заранее определённых констант, то робот отъезжает назад, а затем продолжает движение. Сразу же во время тестов мы столкнулись с проблемой: при выходе из поворота робота немного заносило. Проблема была в том что программа не предусматривала инерционность сервопривода. Робот на выходе из поворота видел перед собой чистую трассу подавал на серву угол в 0 градусов и включал мотор на полную мощность, но так как серве нужно некоторое время для установки 0, а мотор уже начинал вращаться с пробуксовкой, то робота начинало заносить. Я решил установить в серву обратную связь. Для этого я подключил средний вывод потенциометра в серве через резисторный делитель к аналоговому порту ардуины. Теперь робот точно знал угол поворота передних колёс и мотор не включается преждевременно.
Для более презентабельного вида, я установил белый корпус от радио-модели и алюминиевый бампер.
На фотографии два гоночных робота белый и чёрный. Белый это уже завершённый проект «Pancar», чёрный это новый проект который я тоже опишу, если вам будет интересно.
Ну и напоследок видео с соревнований где «Pancar» занял второе место.