Мобильные роботы применяются для решения различных задач, но основное их предназначение – это перемещение в рабочей зоне. В зависимости от типа рабочей зоны и условий эксплуатации мобильного робота, роботы различаются по типу конструкций шасси. Наиболее часто встречаются колесные роботы, такие роботы обладают наибольшей скоростью и маневренностью. В условиях тяжелой проходимости, пересеченной местности и бездорожья, применяются мобильные роботы с гусеничными шасси. Гусеничные мобильные роботы обладают большей грузоподъемностью и проходимостью, а также способны выполнять развороты на месте, что важно при выполнении маневров в стесненных условиях.
В последнее время в мире стали применяться мобильные роботы с шагающей кинематикой. Чаще всего подобные мобильные роботы представляют собой четырехногое или шестиногое шасси. Интерес к подобным конструкциям обусловлен их повышенной проходимостью. Шагающие мобильные роботы могут передвигаться по пересеченной местности, двигаться среди завалов и подниматься по лестницам. Широкий диапазон применения таких роботов делает их достаточно востребованными в разведывательных и поисково-спасательных операциях, а также при транспортировке грузов в труднодоступные территории.
В рамках данного урока предлагается рассмотреть конструктивные особенности роботов с шагающей кинематикой и исследовать процесс их движения вдоль линии. Поскольку в состав набора входят два сервомодуля, то существует единственный вариант конструкции шагающего шасси, которое можно разработать в данной работе.
Шасси робота предлагается конструировать по схеме с двумя ведущими приводами, где каждый из приводов будет управлять движением ног робота, расположенных сбоку. Для того чтобы шестиногое шасси робота могло перемещаться, ноги робота должны перемещаться синхронно.
Синхронность движения ног робота-паука достигается за счет механической рычажной передачи. На корпусе робота закреплены ноги робота во вращающихся шарнирах, каждая из них соединена с рычагом, приводящим ее в движение с помощью привода.
Каждая из крайних ног робота-жука образует четырехзвенный механизм с центральной ногой, закрепленной с эксцентриситетом на фланце привода, в результате чего совершаются синхронные движения ног робота при вращении каждого из приводов.
В зависимости от геометрического положения ног робота и их длины зависит скорость передвижения, причем чем больше длина – тем больше шаг и соответственно больше скорость движения робота.
В рамках данного урока предлагается разработать модель шестиногого робота-жука, ориентирующегося при движении с помощью ИК-датчиков. В качестве ИК-датчиков используется массив оптронов, состоящий из последовательно установленных светодиодов и фототранзисторов. С помощью подобного устройства робот может обнаруживать объекты, в частности черную линию на своем пути, и передвигаться по очерченным траекториям.
Примечание: для корректной работы ИК-датчиков очень важно осуществлять их калибровку на черный и белый цвет поверхности. Для калибровки массива ИК-датчиков поднимите робота на высоту порядка 5 см от пола и нажмите на кнопку Auto-set. После чего плавно проведите несколько раз над белой и черной поверхностью, добившись срабатывания каждого из датчиков, о чем должно свидетельствовать мигание светодиодов.
Использование ИК-датчиков для определения черной линии на белом фоне
Рассмотрим простейший алгоритм нахождения черной линии на белом фоне, согласно которому робот должен будет избегать движения по черной линии. При обнаружении черной линии робот должен выполнить любой маневр, изменяющий свое направление на противоположное.
Обнаружение черной линии осуществляется с помощью массива ИК-датчиков, который состоит из 7 пар – светодиода и фототранзистора, работающих совместно. В процессе работы с массивом ИК-датчиков пользователь имеет доступ к показаниям каждого из семи датчиков в отдельности. Воспользуемся этой возможностью в рамках данной работы, для того чтобы определять наличие черной линии вблизи с роботом.
Суть алгоритма сводится к тому, что робот при обнаружении черной линии отходит назад и разворачивается в направлении, противоположном обнаруженной линии.
Для того чтобы обнаружить черную линию и определить ее положение относительно робота, достаточно всего двух датчиков, расположенных по бортам робота. В связи с этим в процессе работы программы будем рассматривать показания 1-го и 7-го датчиков, расположенных по краям массива ИК-датчиков.
Программа управления начинается с инициализации переменных, определяющих скорость движения робота.
Следом за инициализацией переменных начинается бесконечный цикл, в котором рассматривается, какой из ИК-датчиков массива сработал в текущий момент времени. Тип сработавшего датчика определяется с помощью функции detect_black.
В данном примере рассматривается случай определения черной линии только 1-м или 7-м датчиком ИК-массива. Работа с массивом ИК-датчиков осуществляется как с устройством с идентификационным номером 100, работающим по общему протоколу шины TTL контроллера СМ-530.
Переменная black_result возвращает результат срабатывания массива ИК-датчиков, т.е. семизначное двоичное число. Для того чтобы определить сработал 1-й или 7-й датчик, производится маскирование (операция «логическое И»), в результате чего переменные black_1 и black_7 становятся равными единице в случае срабатывания соответствующего датчика.
В зависимости от того, какой из датчиков сработал в данный момент, выполняется одно из условий алгоритма. Например, при обнаружении линии слева робот отъезжает назад и поворачивает направо.
Движения робота описываются с помощью базовых функций, каждая из которых управляет приводами непосредственно. Скорость движения и временной интервал задаются в начале программы.
Управление каждым из приводов в отдельности сводится к его вращению с заданной скоростью в течение определенного промежутка времени. В зависимости от скорости вращения и времени работы определяется перемещение робота.
Таким образом, с помощью массива ИК-дальномеров возможно реализовывать функции автономного движения робота вдоль линии по любому произвольному маршруту. Несмотря на кажущуюся простоту это довольно часто встречающаяся в промышленности задача. На большинстве промышленных предприятий применяются робокары – автономные транспортные средства для перевозки различных грузов.
Как правило, подобные роботы перемещаются вдоль специально начерченной линии, причем расположенной так, чтобы минимизировать возможный контакт с людьми. Несмотря на это при проектировании подобных роботов уделяется большое внимание вопросам безопасности. Одна из важнейших задач – обеспечение плавности движения робота вдоль линии и избегание столкновений с препятствиями на пути.
Использование ИК-датчиков для управления движением робота вдоль линии
Для того чтобы движения робота вдоль линии были плавными, а реакция на изменение кривизны маршрута была достаточно быстрой, необходимо постоянно контролировать как наличие самой линии, так и изменение ее направления. Чаще всего с этой целью используются два ИК-датчика, расположенные справа и слева, тем самым определяя наличие линии по обе стороны от робота.
Для того чтобы положение линии определялось точнее, следует увеличить количество ИК-датчиков. Массив ИК-датчиков содержит семь ИК-датчиков, каждый из которых может определять положение черной линии. В зависимости от того, какой из датчиков сработал, можно определить положение робота относительно черной линии и предпринять какое-либо действие. Например, в зависимости от того, на каком расстоянии от центра робота расположена черная линия, можно регулировать скорость поворота робота.
В общем случае движение робота можно описать с помощью алгоритма, в котором анализируются различные комбинации возможных вариантов срабатывания датчиков. Помимо того, что анализируется положение черной линии, алгоритм учитывает расстояние от нее до центра робота. Принцип работы заключается в условии – чем дальше центр робота от черной линии, тем быстрее должен быть осуществлен возврат к линии, а значит – скорость движения робота и его маневров увеличивается.
Алгоритм сводится к поэтапному рассмотрению всех возможных комбинаций и выполнению заданного действия. Все маневры робота сводятся к движению в противоположную сторону от линии, а скорость движения определяется расстоянием до линии. В случае же, если черная линия находится по центру робота, т.е. обнаружена центральным ИК-датчиком, робот продолжает прямолинейное движение.
Управляющая программа начинается с традиционной для данного модуля процедуры проверки правильности сборки робота. После чего производится процедура инициализации базовых параметров – скорости движения робота и времени работы ИК-датчиков.
Выполнение программы осуществляется в бесконечном цикле, реализующем приведенный ранее алгоритм.
Программа состоит из четырех основных итераций. На первой итерации производится вызов функции detect_black. С помощью этой функции определяется, какой из ИК-датчиков массива сработал.
Каждому из ИК-датчиков присваивается переменная, характеризующая его состояние, например первому датчику соответствует переменная black_1 и т.д. После вызова функции detect_black каждой из переменных black присваивается значение, которое анализируется в дальнейшем.
На второй и на третьей итерации рассматриваются два случая, в котором черную линию обнаруживает одна из пар датчиков – левая пара датчиков № 1 и № 2 или правая пара датчиков № 6 и № 7. Поскольку это самые крайние датчики, их срабатывание означает, что робот съезжает с линии и его движение необходимо скорректировать как можно скорее.
В этом случае робот выполняет быстрый поворот до тех пор, пока черная линия не окажется под датчиком № 3 или № 5. Данные датчики расположены в достаточной близости к центру робота, что дает возможность маневрировать вдоль черной линии без опасений насчет того, что робот съедет с нее.
Остановка робота при совпадении вышеуказанных датчиков с черной линией осуществляется с помощью функции stop_at_black. Данная функция задает время поворота робота до тех пор, пока не сработает ИК-датчик под номером black_detected_number. Факт срабатывания датчика определяется в течение времени detect_time, для того чтобы исключить вероятность ложных срабатываний.
Функция black_detected_number содержит бесконечный цикл, в котором анализируется срабатывание датчика black_detected_number. Фактически функция генерирует временной интервал, во время которого робот осуществляет поворот. Как только указанный датчик срабатывает, изменяется состояние флага turning_finish, который прерывает выполнение бесконечного цикла и приводит к завершению работы функции. После чего робот продолжает анализ показаний других датчиков и движение вдоль линии.
Движение вдоль линии осуществляется с помощью функции follow_line, которая выполняется всегда, за исключением двух вышеописанных критических ситуаций.
В зависимости от показаний какого-либо из датчиков выбирается одно из направлений для маневра. Важно обратить внимание на то, что каждая из функций, описывающих движение робота, не содержит таймеров, задающих время ее работы.
Функции, описывающие движения робота, представляют собой набор инструкций, задающих скорости приводов робота. Это обусловлено тем, что время действия каждой из функций задается алгоритмически за счет перехода от одного условия к другому. Таким образом, робот совершает определенный маневр только во время выполнения соответствующего условия.
Заключение
В заключение урока вам предлагается выполнить несколько опытных испытаний.
В первую очередь необходимо оценить работоспособность предложенных алгоритмов на различных типах поверхности, например: при движении робота вдоль черной линии на белом фоне или на поверхности какого-либо цвета. В рамках таких пробных тестов важно оценить влияние отражающей способности поверхности на работу программы и поведение робота.
На втором важно оценить преимущества применения массива ИК-датчиков на роботе по сравнению с отдельными ИК-датчиками, расположенными по бортам. С это целью предлагается адаптировать конструкцию робота и установить 3 отдельных ИК-датчика : 2 шт. по бортам робота и 1 шт. спереди.
ИК-датчики, расположенные по бортам робота, ориентированы в пол и используются для определения черной линии; датчик, расположенный по центру, ориентирован по направлению движения и предназначен для обнаружения препятствий на пути робота. В связи с этим необходимо скорректировать управляющий алгоритм программы.
Материал сайта robotgeeks.ru