воскресенье, 4 ноября 2012 г.

Создание автономного робота

Сейчас на просторах Интернета можно встретить огромную кучу статей от тех, кто хочет или уже сделал собственного робота. Но чаще всего этим роботом будет некоторое устройство, управляемое удалённо. То есть оно само без команды ничего сделать, чаще всего, и не может. Формально, в результате получается машинка на пульте управления, пускай и рулится по Wi-Fi и имеет на борту камеру.

Нашей команде DIM Robotics, участвующей в международных робототехнических соревнованиях Eurobot, приходится решать гораздо более интересные и сложные вопросы, так как наши роботы должны выполнять задачу на поле самостоятельно, без помощи человека. То есть сам выехал, сам нашёл объекты и отправился на завоевание мира. (смайл)

В этой статье я опишу, какие требования предъявляются к автономному роботу для соревнований "Евробот" и какие системы чаще всего входят в его состав.


Во-первых, есть то, что объединяет и управляемого, и самостоятельного робота - он должен каким-то образом перемещаться в пространстве. Использовать для этого можно практически всё, что придёт вам в голову, начиная от банальных, но надёжных колёс и заканчивая винтовой тягой, как у вертолёта. Однако, очень мало тех, кто даёт в этом вопросе волю фантазии, так как есть давно проверенные способы, и чаще всего робот оказывается стоящим на поле на двух колёсах и шаровых опорах.

Вторым пунктом, который тоже обычно одинаково соблюдается для обоих типов роботов - питание. Идеальным вариантом для портативных конструкций является батарейное питание. Это может быть набор обычных пальчиковых батареек, но чаще всего это аккумуляторы, свинцовые-кислотные или литий-полимерные. Последние менее громоздкие, но и более нежные, так как требуют особой электроники для зарядки, а также требуют аккуратного обращения, в том числе помещения в огнеупорный мешок.

На этом я заканчиваю писать о том, что было очевидно практически всем читателям, и перейду к особенностям автономного существования робота.

Чтобы ориентироваться в окружающей обстановке, робот должен знать, где именно он находится. Таким образом, встаёт вопрос о системе позиционирования. Реализаций систем позиционирования также много, и часто они зависят от условий задачи. Например, самолёту достаточно возможностей системы GPS (точность позиционирования ~ 1 м) для того, чтобы найти себя на карте, и датчика давления воздуха, чтобы определить высоту полёта. Маленькому роботу на маленьком поле (размером около 3х2 м), да ещё и под крышей, до GPS уж точно нет никакого дела. :)

В таких условиях тоже есть много разных вариантов. Можно искать расстояния до бортов игрового стола с помощью дальномеров (что часто бессмысленно, так как на поле есть ещё множество объектов). Можно вспомнить школьные уроки геометрии и рассчитывать координаты робота с помощью маяков, стоящих на углах поля. Можно с помощью инкрементальных энкодеров считать скорость вращения колёс робота и вычислять местоположение робота таким образом. А можно враз использовать все эти методы, достигнув очень высокой точности.

Для адекватного управления двигателями нужно иметь обратную связь от колёс или поверхности стола. То есть мы должны строго задавать скорость вращения колеса и быть уверенными, что оно будет двигаться именно так, не быстрее и не медленнее. Для этого можно использовать шаговые двигатели, угол поворота ротора у которых определяется довольно точно. А можно использовать инкрементальный энкодер в паре с обычным электродвигателем, связав их между собой алгоритмом стабилизации (например, ПИД-алгоритмом).

Но на поле, помимо самого робота, есть ещё его ассистент - второй робот команды, а также команда-соперник, поведение роботов которой для нас вообще непредсказуемо. Поэтому на роботе обязательно должна быть система обнаружения препятствий и противника (в нашей команде мы называем её ODetect - Opponent Detector). Она должна корректировать траекторию движения робота в случае риска столкновения (ну или хотя бы останавливать его в крайнем случае). Можно сделать её с помощью маяков, устанавливаемых на корпуса роботов-соперников, ну или в крайнем случае установить набор дальномеров на корпусе своего робота по периметру. Следует заметить, что без этой системы робот не допускается к соревнованиям.

Теперь наш робот может в любой момент времени определить своё местоположение на поле и ни в коем случае не столкнётся с неожиданным препятствием в лице робота-противника или собственного ассистента. Теперь ему нужно выполнять поставленную задачу.

Вот в этом месте начинается самая сложная и интересная задача. Во-первых, это - набор устройств на борту робота, причём самых разнообразных - от манипуляторов на сервоприводах до вакуумных насосов. А во-вторых, это логика действий робота на поле.

Подготовленная команда может написать достаточно сложный алгоритм с элементами искусственного интеллекта, который будет самостоятельно составлять траекторию движения, анализируя внешнюю обстановку с помощью множества датчиков. Если снабдить робота производительной электроникой, можно даже обрабатывать данные с камер.

Однако, многие начинающие команды, организовав в своём роботе все вышеописанные системы, уже не успевают подумать о логике управления и описывают сценарий действия робота самостоятельно, в виде достаточно простого алгоритма вроде "переместиться в (x,y) - использовать манипулятор - переместиться в (x2, y2)" и так далее. Я не считаю, что это плохо, потому что робот, всегда корректно выполняющий этот алгоритм - это уже очень хороший результат.

На соревнованиях Евробот, каждый автономный робот должен снабжаться "красной кнопкой" - большим переключателем в верхней части корпуса, при нажатии на который произойдёт немедленная остановка в опасной ситуации, когда есть риск повреждения каких-либо узлов аппаратов или риск повреждения игрового поля из-за его действий. Также, для синхронного старта команд по команде судьи, роботы снабжаются пусковым устройством, из-за принципа работы традиционно называемого в России "шморгалкой". Суть её работы в том, что робот начинает действие только после "выдёргивания" шнура из него, что похоже на ручной запуск некоторых двигателей (в тракторах или бензопилах, например :) )

Также каждый год могут предъявляться строгие требования к габаритам роботов. Но несмотря на это, большинство команд проявляют такой энтузиазм и креативность, что редко можно найти две машины, похожие друг на друга. Внутри каждой из них - месяцы кропотиливого труда целой команды, поисков самого оптимального решения... и немножко доработки напильником ;) В этом, как я считаю, и заключается вся прелесть участия в соревнованиях подобного класса.

Комментариев нет:

Отправить комментарий