При управлении мобильными роботами встаёт задача планирования их траектории. Например, роботу нужно попасть из пункта А в пункт Б, объехав несколько препятствий. Для этой цели окружающее робота пространство можно представить как плоский граф. Для поиска пути использовать классические алгоритмы как A* или D*. Но писать такие алгоритмы самому довольно утомительное занятие, поэтому я предлагаю использовать Open Motion Planning Library, написанную на платформе boost специально для планирования траекторий мобильных роботов и манипуляторов.
Чтобы использовать эту библиотеку нужно самому реализовать класс карты местности и классы, проверяющие допустимость нахождения робота в конкретной точке карты, допустимость перемещения робота из точки А в точку Б по прямой. Сначала я рассмотрю основные классы этой библиотеки, а потом покажу возможную реализацию указанных классов. Все примеры написаны для версии OMPL 0.93.
Читать полностью »
В предыдущей статье я рассмотрел математическую модель камеры, необходимую для проведения измерений. Теперь давайте попробуем камеру заставить распознавать движение. Это может понадобиться при разработке робота, реагирующего на движение внешних объектов. Детектор движения реализуем на C++ при помощи библиотеки OpenCV 2.3.
Читать полностью »
При создании мобильных роботов иногда возникает соблазн поставить на них систему технического зрения. Но как выяснилось заставить СТЗ работать задача не из легких, поэтому мы начнём с простого – построим математическую модель камеры и определим значение всех параметров, входящих в модель, при помощи OpenCV. Эта модель оказывается очень полезной, когда мы хотим производить какие-нибудь измерения при помощи камеры.
Читать полностью »
При создании навигационной системы робота для участия в Eurobot 2011 мы решили использовать радио модули tr24. Но при работе с ними выяснилась одна проблема: иногда они теряют передаваемые пакеты. В нашей системе планировалось по радиоканалу передавать управляющие команду, поэтому потеря данных была просто недопустима. В связи с этим мне пришлось разработать протокол общения радио модулей tr24, гарантирующий доставку пакета.
Сначала в вкратце опишу, что собой представляла система. Имелось три периферийных маяка, которые должны были по радиоканалу принимать команды и выполнять некоторый набор действий. Имелся локатор на роботе противника, который должен был по радиоканалу обмениваться данными с локатором на нашем роботе. Оба локатора должны были по очереди слать команды маякам и друг другу. Аппаратно все пять устройств были выполнены идентично. Про схему подключения радио модулей tr24 в этих устройствах можете посмотреть здесь. Подробнее про навигационную систему робота - здесь.
Читать полностью »
При создании АСУ ТП с аппаратной частью все технологии уже хорошо отработанны: берём комплектующие от известных мировых производителей(Beckhoff, Siemens, Schneider Electric), монтируем их в шкаф. Много трудностей это не вызывает. Небольшой обзор по аппаратной части можете посмотреть здесь. По моему опыту, больше всего проблем возникает с написанием управляющих программ и их отладкой на реальном железе.
Чтобы минимизировать временные (а значит и финансовые) затраты на программирование и отладку, разработку любой программной системы стоит начать с проектирования архитектуры. Если архитектура сделана грамотно, в процессе отладки не придётся переписывать большие объёмы кода, посторонним людям будет легко разбираться в вашем коде. Возможно, часть кода удастся использовать в следующем проекте.
В этой статье я рассмотрю возможный вариант построения программной архитектуры АСУ ТП на основе конечного автомата(state machine). Читать полностью »