Робот M48. Квопросу движения по полосе

Карпов В.Э.

Робот M48. К вопросу движения по полосе

Содержание

TOC HYPERLINK \l «__RefHeading__63_1472701720»Введение2

HYPERLINK \l «__RefHeading__65_1472701720»Контроллер2

HYPERLINK \l «__RefHeading__67_1472701720»Датчики и органы управления4

HYPERLINK \l «__RefHeading__69_1472701720»Органы управления4

HYPERLINK \l «__RefHeading__71_1472701720»Фотодатчики4

HYPERLINK \l «__RefHeading__73_1472701720»Ходовая часть5

HYPERLINK \l «__RefHeading__75_1472701720»Алгоритмы управления6

HYPERLINK \l «__RefHeading__77_1472701720»1. Линейный регулятор с независимым управлением7

HYPERLINK \l «__RefHeading__79_1472701720»2. Дискретная система управления8

HYPERLINK \l «__RefHeading__81_1472701720»3. Пропорциональное управление8

HYPERLINK \l «__RefHeading__83_1472701720»4. Нелинейное управление (косинусный закон)10

HYPERLINK \l «__RefHeading__85_1472701720»Эксперименты11

HYPERLINK \l «__RefHeading__87_1472701720»Вид трассы и способы управления11

HYPERLINK \l «__RefHeading__89_1472701720»Замечания и комментарии11

HYPERLINK \l «__RefHeading__91_1472701720»1. Реальные законы управления11

HYPERLINK \l «__RefHeading__93_1472701720»2. Проблема торможения12

HYPERLINK \l «__RefHeading__95_1472701720»3. Ограничения контроллера13

HYPERLINK \l «__RefHeading__97_1472701720»4. Прочие системы датчиков13

HYPERLINK \l «__RefHeading__99_1472701720»5. Регулировка скорости14

HYPERLINK \l «__RefHeading__101_1472701720»Заключение14

HYPERLINK \l «__RefHeading__103_1472701720»Ссылки15

HYPERLINK \l «__RefHeading__105_1472701720»Приложение 1. Руководство по эксплуатации16

HYPERLINK \l «__RefHeading__107_1472701720»Приложение 3. Программа «Слалом»18

HYPERLINK \l «__RefHeading__109_1472701720»Приложение 3. Контроллер робота (ATmega48)19

HYPERLINK \l «__RefHeading__111_1472701720»Приложение 4. Состав диска с дополнительными материалами20Введение

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

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

Таковыми моментами являются и разработка архитектуры контроллера, и методология выбора датчиков, и интерфейсы подключения внешних устройств (датчиков) и, безусловно, некоторые вопросы построения регуляторов.

Контроллер

Наш контроллер построен на основе ОЭВМ ATmega48. Обоснование выбора именно ATmega48 может выглядеть следующим образом:

Это — весьма дешевая микросхема.

Пора переходить (в целях экономии места) к «компактным» компонентам.

ATmega48 совместима с более серьезными изделиями — ATmega88 и ATmega168. Последнее означает, что вместо ATmega48 можно установить ATmega88 или ATmega168, причем не нарушая ни программной (предыдущий код будет работать), ни аппаратной (те же выводы) совместимости. Действительно, разница между ATmega48, ATmega88 и ATmega168 сводится к имеющейся у них памяти:

Флэш-память

Память EEPROM

Память ОЗУ

ATmega48

4 K

256

512

ATmega88

8 K

512

1 K

ATmega168

16 K

512

1 K

Состав контроллера.

Контроллер робота относится к категории систем «общего» назначения. Как всегда этот «универсализм» является результатом компромисса между гибкостью и удобством. Ориентируясь больше на решение задач мобильной робототехники, был получен следующий вариант контроллера, имеющего на борту:

эмиттерные повторители – 2 шт.

пищалка – 1 шт.

драйвер двигателей L293 – 1 шт.

свободные выходы – 2 шт.

входы датчиков с интерфейсом «сигнал-плюс-минус» – 6 шт.

драйвер интерфейса RS232.

два раздельных входа питания (логика и силовая часть — L293).

разъем программирования.

Частота кварцевого резонатора — 7.3728 МГц.

Все это — достаточно очевидные вещи. Пояснения, возможно, требует интерфейс подключения датчиков. Дело в том, что часто бывает удобно использовать в качестве датчиков некоторые схемы, требующие отдельного питания. Это и ИК-дальномеры Sharp, и датчики освещенности типа QRD1114 и многие другие. Как бы то ни было, все они хотят питание и возвращают уже готовый сигнал, который мы направляем на вход АЦП. Для этого и применяются в контроллере не пара контактов («сигнал+земля»), а тройка — «Сигнал» — «+5В» — «Земля». Кстати, именно такое расположение контактов («сигнал» — «+» — «-») является достаточно безопасным. Если при подключении перепутать положение вилки, то короткого замыкания или фатальной переполюсовки не получится, т.к. «+» останется на своем месте.

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

Ниже приведена схема контроллера.

Рис.1. Схема электрическая принципиальная

EMBED ������� Microsoft Office Word

Рис.2. Печатная плата и внешний вид контроллера

Получившаяся плата достаточно компактна и удобна. Ее габариты — примерно 60×56мм.

Датчики и органы управления

Органы управления

К органам управления относятся прежде всего различного рода кнопки, тумблеры, переключатели, позволяющие устанавливать различные режимы работы, настраивать робота и т.п. Все они используют стандартный интерфейс «сигнал» — «+» — «-» и подключены ко входам АЦП. Входы АЦП — это порты ввода, находящиеся в т.н. T-состоянии, т.е. они не подтянуты ни к земле, ни к высокому уровню. Именно поэтому и простые контактные и двухпозиционные переключатели следует подключать по нижеприведенным схемам.

EMBED Microsoft Visio Drawing

Рис.3. Подключение органов управления

В нашем роботе в качестве органов управления используется кнопка «Старт» и переключатели с фиксированным положением («Выбор режима»). Кроме того, как будет видно ниже, полезным окажется еще один орган управления — переменный резистор установки максимальной скорости.

Фотодатчики

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

Вариантов датчиков освещенности может быть великое множество. В нашей задаче важнейшим требованиями к ним являются достаточная чувствительность и линейность характеристик. Рассмотрим два варианта датчиков.

Датчик освещенности на основе оптопары QRD1114. Это — «дорогой» вариант (в том случае, если приходится пользоваться чем-то вроде оценочной платы инфракрасного рефлективного датчика от INNOVATIVE EXPERIMENT IE-ZX-03Q. IE-ZX-03Q — оптопара «излучатель-приемник» в одном корпусе. Проблем с подключением и использованием этой оптопары обычно нет. Единственное, что следует помнить – это большую зависимость значения сигнала от высоты над поверхностью (следует держать датчик на одном уровне).

«Самодельный» датчик. Это тоже оптопара, состоящая из сверхяркого излучателя и фотоприемника. Это обычно дешевле, однако сопряжено с некоторыми особенностями:

1. Эмиттерный повторитель. Специфика АЦП требует, увы, наличия достаточно хорошего тока. А отсюда следует желательность наличия, скажем, схемы эмиттерного повторителя. Или операционного усилителя. Ниже представлены некоторые варианты подключения фотодатчика.

EMBED ������� Microsoft Office Word EMBED ������� Microsoft Office Word

а)б)

Рис.4. Схемы подключения фотодатчика

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

3. Фотоэлемент. Одним из наиболее распространенных и часто используемых фотоэлементов является фототранзистор. Фототранзистор дешев, у него очень хорошая чувствительность и малое время срабатывания. Однако у него есть один существенный недостаток — нелинейность характеристики. Он слишком быстро переходит в режим насыщения, не позволяя отследить изменение освещенности. Поэтому с ним надо работать весьма аккуратно.

Гораздо удобнее использовать в качестве фотоэлемента «обычный» фоторезистор. Что-то вроде отечественного «СФ3-4Б». Он более медленный и не такой чувствительный, однако позволяет весьма устойчиво измерять освещенность в широких диапазонах, не срываясь в насыщение. А скорость его в нашей задаче несущественна.

Ходовая часть

Робот представляет собой круглую платформу с центральным расположением двух ходовых двигателей и двумя опорными колесами — спереди и сзади. Причем опорные колеса находятся выше уровня опорных колес на 2-3 мм. Это приводит с одной стороны, к некоторой продольной неустойчивости (робот при движении покачивается). С другой же, мы имеем хорошо управляемую систему, способную разворачиваться вокруг центра масс. Правда, двигаться такой робот может лишь по ровной поверхности.

В качестве двигателей используются мотор-редукторы IE-BO2-48M (электродвигатель постоянного тока с редуктором 1:48). Питание — батарея из 4 аккумуляторов — 4.8-6В.

Рис.5. Вид спереди и вид сверху

Алгоритмы управления

Методов, алгоритмов и схем решения задачи движения по простой линии существует великое множество. Они рассчитаны на самые разные системы используемых датчиков полосы — от видеокамеры до простейшего порогового датчика освещенности. Мы рассмотрим лишь некоторые из них, в частности те, которые используют расположение пары датчиков освещенности по краям черной линии.

Итак, наш робот оснащен парой датчиков освещенности, выдающих аналоговый сигнал, величина которого зависит от цвета поверхности.

EMBED ������� Microsoft Office Word

Рис.6. Расположение датчиков

Кроме того, будем считать, что наше устройство обладает возможностью программной настройки датчиков на значения максимальной и минимальной освещенности. Речь идет о том, что в начале работы робот устанавливается обоими датчиками на светлый фон и происходит замер освещенности. Далее робот устанавливается датчиками на темную полосу и измеряется соответствующий сигнал. В дальнейшем система использует полученные граничные значения. Это позволяет настраиваться на различные режимы освещенности.

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

1. Линейный регулятор с независимым управлением

Это есть не что иное, как программная эмуляция аналоговой схемы управления, той, которая использовалась в начальном курсе «Знакомство с автоматикой и электроникой» [Карпов, 2009]. Аналоговая схема представляла собой пару независимых регуляторов: срабатывание датчика освещенности приводило к запуску соответствующего двигателя. Если датчик освещенности уходил при движении робота со светлого фона, то соответствующий двигатель притормаживался и робот возвращался на маршрут.

EMBED ������� Microsoft Office Word

Рис.7. Два независимых регулятора

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

Тем не менее, этот принцип управления достаточно прост для программной реализации.

Пусть результатами калибровки датчиков будет следующие величины:

FLW — значение сигнала от левого датчика на светлом фоне,

FLB — значение сигнала от левого датчика на темном фоне,

FRW — значение сигнала от правого датчика на светлом фоне,

FRB — значение сигнала от правого датчика на темном фоне.

Предположим, что значения управляемой величины — скорости вращения колес — находятся в диапазоне от Vmin до Vmax. Скажем, от 0 до 100. Таковой величиной в нашем роботе является коэффициент заполнения управляющего сигнала ШИМ (в процентах). Поскольку для срабатывания двигателя следует приложить некоторое значительное напряжение (кстати, пусковой ток может быть весьма велик), то величина Vmin обычно больше нуля. В нашем роботе Vmin = 10.

Тогда основной управляющей функцией будет следующая простая конструкция, позволяющая преобразовывать значение освещенности в скорость:

int U2Speed(float u, float FotoMin, float FotoMax)

// Напряжение (сигнал от датчика) в скорость

{

int v;

v = (u-FotoMin)*(Vmax-Vmin)/(FotoMax-FotoMin);

if(v

if(v>Vmax) v = Vmax;

return v;

}

Основная же программа содержит следующую очевидную последовательность операторов, которую мы приведем без комментариев:

fotoL = ReadAdc(0); //Считываем сигнал

fotoR = ReadAdc(1);

VL = U2Speed(fotoL, FLB, FLW);// Вычисляем скорость

VR = U2Speed(fotoR, FRB, FRW);

SetPWM(VL, VR);// Устанавливаем скорости вращения колес

2. Дискретная система управления

Это — более упрощенный вариант предыдущей схемы. Здесь нам достаточно того, чтобы датчик определил цвет — либо светлый (фон), либо темный (полоса). Для этого в программу мы должны сравнивать значение сигнала с некоторым порогом — все, что ниже этого порога, считается черным, все, что выше — белым.

Порог вычисляется так: либо берется среднее значение между темным и светлым, либо берется значение, смещенное от середины, скажем, 3/4 от интервала освещенности:

EMBED ������� Microsoft Office Word Рис.8. Варианты определения порога

Желательность смещения порога от центра в сторону белого цвета связано с тем, что иногда на темной полосе имеются более светлые пятна. Будучи на взгляд темными (темно-серыми), они, однако, могут восприниматься датчиками как вполне светлые участки, что приводит к ложному срабатыванию датчика. Потому желательно подстраховаться и сместить границу:

//Вычисление границы — 3/4 от интервала

LimLeft = 3*(FLW-FLB)/4+FLB;

LimRight = 3*(FRW-FRB)/4+FRB;

Тело основного цикла программы тогда будет выглядеть так:

fotoL = ReadAdc(0); //Считываем сигнал

fotoR = ReadAdc(1);

if(fotoR>LimRight) //Сравниваем с порогом

VR = Vmax;

else

VR = Vmin;

if(fotoL>LimLeft)

VL = Vmax;

else

VL = Vmin;

SetPWM(VL, VR);// Устанавливаем скорости вращения колес

3. Пропорциональное управление

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

Пусть VL и VR — требуемые скорости вращения левого и правого колес соответственно. При этом определены их минимальное и максимальное значения Vmin и Vmax.

VL,R∈[Vmin, Vmax]

Будем считать, что величина разности сигналов α также определена на некотором отрезке

α∈[αmin, α max]

Итак, повторим, принцип управления заключается в том, что в зависимости от α будет происходить притормаживание того или иного колеса. Это притормаживание может осуществляться как линейно (пропорционально α), так и нелинейно. На рис.9 изображены зависимости скорости вращения колеса от α для этих двух случаев.

EMBED ������� Microsoft Office Word

а)б)

Рис.9. Пропорциональное (а) и косинусное (б) управление

Как видно, чем больше отклонение α, тем сильнее притормаживается соответствующее колесо. При расположении линии прямо под роботом (α=0) притормаживание отсутствует и робот движется прямо с максимальной скоростью.

Формулы закона пропорционального управления выглядят следующим образом:

EMBED Microsoft Equation 3.0 при α≥0

EMBED Microsoft Equation 3.0 при α<0

Их программная реализация представлена функцией

void RgPropor(float a, int *VL, int *VR)

// Пропорциональное управление

// a — отклонение регулируемой величины,

// VL, VR — скорость левого и правого колеса

{

float d;

*VL = *VR = Vmax;

if(a>0)

d = (MaxVal-a)*(Vmax-Vmin)/MaxVal+Vmin;

else // a<0

d = (MinVal-a)*(Vmax-Vmin)/MinVal+Vmin;

if(a>0)

*VL = d;

else

*VR = d;

}

Тело основного цикла:

fotoL = ReadAdc(0);// Считываем сигнал

fotoR = ReadAdc(1);

d = (fotoR-fotoL);

RgPropor(d, &VL, &VR);

SetPWM(VL, VR);// Устанавливаем скорости вращения колес

4. Нелинейное управление (косинусный закон)

Значительно лучшие результаты дает нелинейное управление, при котором большее значение отклонения α вызывает большее управляющее воздействие. Удобно представить величину α в виде значения градуса (коли мы будем вычислять косинус). Если максимальной величине отклонения α будет соответствовать угол αmax = 90°, а минимальной — угол αmin = 0°, то достаточно хорошие результаты дает следующий закон управления:

EMBED Microsoft Equation 3.0 при α≥0

EMBED Microsoft Equation 3.0 при α<0

Его программная реализация может выглядеть так:

void RgCos(int a, int *VL, int *VR)

// “Косинусное” управление

// a — отклонение регулируемой величины (от 0 до 90),

{

float COSA;

int d;

COSA = cos(a*PI/180.0);

*VL = *VR = Vmax;

d = (Vmax-Vmin)*COSA+Vmin;

if(a>0)

*VL = d;

else



Страницы: Первая | 1 | 2 | 3 | Вперед → | Последняя | Весь текст