Задача 23. Азимут (EV3)
В программировании автономного движения роботов часто возникает задача выбора направления движения. При помощи датчика Compass фирмы HiTechnic робот может двигаться в заданном направлении или просто выдерживать направление по азимуту. Этот прием используют в автономном футболе роботов, когда нападающие выбирают для удара ворота противника, а вратари возвращаются на свои ворота. Компас позволяет роботу достаточно точно ориентироваться в пространстве.
Единственный существенный минут использования этого сенсора состоит в том, что на компас сильно влияют магнитные поля: от поля Земли до поля, генерируемого моторами и контроллером самого робота. Поэтому расположению датчика на роботе стоит уделить особое внимание, и вывести его как минимум на 8-12 сантиметров от всех предполагаемых источников излучения.
Предложенная здесь программа позволяет роботу запомнить азимут при запуске программы и в дальнейшем выдерживать это направление. Отклоненный от "состояния равновесия", то есть от заданного азимута робот будет стремиться вернуться в изначальное положение.
В самом начале производится инициализация датчика, поскольку на это нужно некоторое время. Затем датчик можно будет использовать. Первая команда сохраняет в переменную базовое значение скорости. После некоторой задержки значение с датчика-компаса записывается в переменную. Рассмотрим этот фрагмент программы крупнее:
Затем программа разделяется на две параллельные задачи. В основной ветке производится управление моторами (независимо друг от друга). Каждый мотор корректируется на основании данных компаса:
Мотору придается базовая скорость, которая была в переменной speed изначально, но при этом знак (+/-), а значит, направление вращения мотора, высчитывается по компасу.
Таким образом, получается регулятор: мотору В присваивается мощность a+b*c, а мотору С - мощность a-b*c.
Вторая задача изменяет значение переменной alpha, используемой в расчетах в основной ветке. Она увеличивает значение alpha на 50. Это значение подобрано опытным путем.
Поделиться с друзьями: