Встреча Моторы вперед!



Pdf көрінісі
бет3/4
Дата11.02.2022
өлшемі7,57 Mb.
#131446
1   2   3   4
Байланысты:
01. Практика


Раздел «Вычислять» – Истина. 
Уточним, что же такое зарезервированные переменные. 


39 
Как мы уже знаем, к контроллеру ТРИК можно присоединять датчики. В каждый 
момент времени датчики возвращают какое-то числовое значение на контроллер. Это и 
есть значение переменной sensorN. 
Например, у нас к порту А1 подсоединен датчик расстояния. Робот находится 
вплотную около стены. Значение переменной sensorA1 равно 0. После перемещения 
робота на некоторое расстояние от стены значение изменится в большую сторону. То есть 
значение переменной sensorА1 – это то, что показывает датчик расстояния в данный 
момент времени. 
Рассмотрим переменные encoder. В конструкторах используются моторы со 
встроенным датчиком оборотов. Поэтому мы всегда можем узнать, сколько оборотов 
совершил мотор, либо сами задать нужное количество оборотов. 
Задача: проехать роботом 4 оборота колеса. Для решения этой задачи на контроллере 
ТРИК необходимо подключить разъемы моторов не только к портам М, но и к портам В – 
энкодерам. Номера портов М и B совпадают: 
Датчику оборотов в палитре соответствует блок «Ждать энкодер». 
Для Lego EV3 также есть зарезервированные переменные, но их значительно 
меньше: 
Для решения задачи с энкодерами на Lego EV3, в отличие от ТРИК, достаточно 
подключить моторы к соответствующим портам, у Lego EV3 нет выделенных портов для 
энкодеров. 
Зарезервированные переменные buttonUp, buttonDown, buttonLeft, buttonRight, 
buttonEsc и buttonEnter – это функции нажатия соответствующих кнопок на корпусе 
контроллера «Вверх», «Вниз», «Влево», «Вправо», «Отмена», «Ввод», принимающие 
значение 1, если кнопка нажата, и 0, если не нажата. 
Оставшиеся переменные будут рассмотрены позднее. 


40 
Отступление 7. Дело случая 
Рассмотрим еще один блок - «Случайное число».
В этом блоке заданной переменной присваивается случайное целое число из 
диапазона, который мы определим в его свойствах. Применение случайных чисел 
разберем в задачах для закрепления материала.


41 
Задания для закрепления материала 


42 
Встреча 10. Кегельринг 
Кегельринг – это одно из состязаний, устраиваемое среди робототехников. Цель 
состязания – вытолкнуть за пределы очерченного круга диаметром 1 метр все 
расположенные внутри круга кегли (регламент соревнований можно посмотреть на сайте 
http://myrobot.ru/sport/). Конструкция робота ограничена только линейными размерами и 
отсутствием специальных приспособлений. 
Решим несколько задач для построения нужного алгоритма. 
Движение внутри круга: 
Движение внутри круга с выездом за его границу: 
+
Движение внутри круга с возвратом по энкодерам: 


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


44 
Задания для закрепления материала


45 
Встреча 11. Что, если

Что, если нам необходимо задать какое-нибудь условие выполнения задачи? Здесь 
нам придет на помощь оператор условия IF, которому в палитре соответствует блок 
Заканчивается оператор IF блоком «Конец условия»: 
В следующем примере будем выводить на дисплей веселый и грустный смайлики по 
очереди, в зависимости от значения переменной Х: 
Задача: Продолжать движение, пока расстояние до стены не станет меньше 15, не 
используя блок «Ждать датчик расстояния». 
Из оператора IF обязательно должны выходить две связи «истина» и «ложь», причем 
не обязательно указывать обе. Программа все равно будет выполняться 
В данном случае ветви условного оператора вместе не сходятся, поэтому блок 
«Конец условия» в решении задачи отсутствует. 
Если нам необходимо в операторе IF использовать равенство, то нужно поставить 
знак «==»: 


46 
В примере реализован выбор из двух вариантов, случилось событие или нет. Для 
осуществления выбора из нескольких вариантов в TRIK Studio используется блок 
«Switch»: 
Разберем следующую задачу: необходимо нарисовать трехцветную линию, красно-
желто-зеленую, цвета бесконечно чередуются в данном порядке. 
Связи, исходящие из оператора «Switch», имеют значения переменной Х. Исходящая 
связь «По умолчанию» не помечена и указывает на конец программы (наличие связи «По 
умолчанию» обязательно). 
Отступление 8. Посчитаем кнопки
Каждая кнопка на контроллере ТРИК имеет свой собственный числовой код, 
который можно узнать, использовав блок «Получить код кнопки»: 
Примеры применения: 
Вывод на дисплей кода кнопки. Свойство «Вычислять» блока «Напечатать текст» 
– Истина. 


47 
Использование кодов для создания своего меню. 
Отступление 9. Где логика? 
Булевый или логический тип переменной относится к базовым типам языка TRIK 
Studio. Логические переменные могут принимать значения истина (true) и ложь (false). К 
логическим операторам относятся: логическое И - &&, логическое ИЛИ - ||, логическое 
НЕ - !. Результатом выполнения логической операции будет логическое значение. 


48 
Задания для закрепления материала 


49 
Встреча 12
. Исправление ошибок 
На практике мы неоднократно сталкивались с тем, что показания одинаковых 
приборов могут различаться. Это связано с рядом факторов, таких как условия 
окружающей среды, несовершенство изделий и т.п. В наборе ТРИК датчики, 
используемые для конструирования, также не являются идеальными. Например, значения, 
возвращаемые двумя датчиками оборотов, могут не совпадать. 
Попробуем учесть эту разницу. Синхронизируем моторы. 
В программе мы использовали метод релейного регулирования для исправления 
ошибки. В нашем тексте мы не будем вдаваться в подробности теории управления, но 
воспользуемся некоторыми ее результатами. 
Задача: Стабилизировать мотор в положении 45 градусов.
В этой задаче для исправления ошибки также воспользуемся релейным регулятором. 
Мотор будет колебаться около положения 45 градусов. Более точное исправление 
ошибки достигается использованием пропорционального регулятора. Подправим наш 
алгоритм, используя коэффициент усиления регулятора 2,5. Поправка u=2.5*(45-
encoder1). Соответственно стабилизация мотора на П-регуляторе будет выглядеть так: 
Для Lego EV3 программа выглядит следующим образом: 


50 
Отступление 10. Алгоритм «математического» сглаживания
Невозможно создать измерительный прибор, который бы не зависел от внешних и 
внутренних условий. Наши датчики тоже не исключение. Как же тогда получить 
достоверную или приближенную к достоверной информацию об измерениях? 
Алгоритм обработки данных, убирающий лишнюю информацию, называется 
фильтр. 
Фильтров существует великое множество в зависимости от принципов работы и 
области применения. Например, самый простой из них, высчитывающий среднее 
арифметическое по нескольким последним измерениям: 
Xt = (Xt+Xt-1+Xt-2)/3 
Часто используется экспоненциальный фильтр: 
Xt = a*xt + (1-a)*Xt-1 
Самым, пожалуй, распространенным, является фильтр Калмана, речь о нем будет 
позднее. 


51 
Задания для закрепления материала


52 
Встреча
13. Движение вдоль стены. Объезд предметов 
Умения видеть и объезжать препятствия, двигаться вдоль препятствия являются 
основными для робота, находящегося в движении. 
Решим такую задачу: робот должен двигаться вдоль стены на определенном 
расстоянии L. 
Из датчиков присутствует сонар, подключенный к порту А1. 
Используем для исправления ошибки пропорциональный регулятор. Поправка 
U=3*(SensorA1-L). 
ТРИК: 
Lego EV3: 
В некоторых ситуациях П-регулятор может вывести систему из устойчивого 
состояния. Например, если робот направлен от стены, но находится по отношению к ней 
ближе заданного расстояния, на моторы поступит команда еще больше повернуть от 
стены. Чтобы не попасть в такое положение, исправим ошибку при помощи 
пропорционально-дифференциального регулятора. 
Поправка U=k1*(sensorA1-L) + k2*(sensorA1-S), где S – расстояние до стены на 
предыдущем шаге измерения. 
ТРИК: 


53 
Lego NXT: 


54 
Задания для закрепления материала 


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


56 
Число 45 – показание датчика на границе между белым и черным цветом, для более 
точного определения границы необходима калибровка датчиков. 
Подпрограмма для калибровки датчика света: 
Ставим робота на черное, нажимаем кнопку «Вверх», еще раз нажимаем кнопку 
«Вверх», переставляем робота на белое, нажимаем кнопку «Вверх». Среднее значение 
цвета будет храниться в переменной Middle. 
Модернизируем конструкцию робота, добавив еще один датчик. На такую модель 
практически не влияют колебания освещенности в помещении. 
Сравнивая начальные показания датчиков с текущими значениями на П-регуляторе, 
имеем 


57 
Задания для закрепления материала


58 
Встреча 15. Манипуляторы 
На сегодняшний день ни одно из промышленных предприятий не обходится без 
манипуляторов. Для расширения возможностей на роботах также устанавливаются 
манипуляторы. Интересная модель манипулятора с тремя степенями передвижений 
приведена в книге С.А.Филиппова «Робототехника для детей и родителей». Напишем 
программу для этого манипулятора. 
Первый мотор отвечает за горизонтальное перемещение захвата и фиксируется в 
двух положениях: 0 градусов и 45 градусов. Используем П-регулятор для стабилизации 
положений. 
Подпрограмма Ungle: 
Как мы помним, подпрограмма не может быть цикличной, поэтому условие (Ug-
EncoderB) < 5 и будет означать выход из цикла. На малых мощностях моторов их работа 
не стабильна, поэтому используем коэффициент 2. 
Второй мотор отвечает за вертикальные перемещения и также стабилизируется в 
двух положениях. Т.е. задача аналогична первой. 
Третий мотор отвечает собственно за захват. 
В результате имеем: 


59 
Подпрограммы работают с разными энкодерами. 
В конструкторе ТРИК используются сервомоторы, поэтому программа для него 
будет гораздо проще: 


60 
Задания для закрепления материала. 


61 
Встреча 16.Таблицы и массивы 
Использование сложных структур данных в робототехнике связано с разнообразием 
решаемых задач. Организация данных в таблицы в TRIK Studio осуществляется в виде 
динамических массивов, размер которых может при необходимости меняться во время 
исполнения программы. Все элементы массива должны быть однотипны, и каждому из 
них присваивается номер элемента – индекс. Размерность массива не указывается. 
Массивы в TRIK Studio можно создавать в явном виде таблицей 
Или поэлементно 
Неописанные элементы примут значение 0, пустая строка или false в зависимости от 
типа элементов. 
Массивы сами могут быть элементами массива, поэтому запись 
означает, что объявлен двумерный массив. Обращение к его элементам выглядит 
следующим образом 
Заполнение массива случайными числами: 


62 
Программа для определения, в какое время был достигнут температурный 
максимум: 
Отступление 11.
Золотая середина 
Как уже было сказано ранее, математических фильтров для обработки сигналов 
существует великое множество. Познакомимся еще с одним из них – «медианный» 
фильтр. Основная особенность этого фильтра – способность устранения аномальных 
значений в массивах данных.
Медианный фильтр пропускает только среднее значение из 
множества значений. Для того чтобы понять, как он работает и чем отличается от 
среднего арифметического, разберем пример: датчик выдает следующие значения 
{4,4,5,34,8,4,2}. Среднее значение без учета крайних значений 4 и 2 получается – 11. 
Будем выбирать по три показания датчика, и упорядочивать их по возрастанию.{4,4,5} – 
{4,4,5}. Значение «медианного» фильтра – 4. {4,5,34} – {4,5,34}. Значение «медианного» 
фильтра – 5. {5,34,8} – {5,8,34}. Значение «медианного» фильтра – 8. {34,8,4} – {4,8,34}. 
Значение «медианного» фильтра – 8. {8,4,2} – {2,4,8}. Значение «медианного» фильтра – 
4. Отфильтрованные значения – {4,5,8,8,4}. Крайние значения 4 и 2 фильтруются, 


63 
используя предыдущие и последующее значения. Среднее значение отфильтрованных 
данных получилось – 5,8. То есть мы всегда выбирали значение среднего элемента в 
подмассиве данных. Обычно используется выборка из нечетного количества элементов 
не менее трех.


64 
Задания для закрепления материала 


65 
Встреча 17. Камера контроллера ТРИК
Видеомодуль или usb-камера, которые можно подключать к контроллеру ТРИК, 
выполняют несколько различных функций. Их можно использовать как датчик линии, 
датчик цвета, объектный датчик и непосредственно как камеру. 
Запустим видеотрансляцию: 
Данная программа открывает трансляцию видеосигнала. Видео можно 
просматривать в браузере по адресу 
http://:8080/?action=stream
или на пульте дистанционного управления (будет рассмотрено позднее). 
Камера – датчик линии. Для использования камеры как датчика необходимо ее 
проинициализировать, используя блок «Включить видеокамеру»: 
В свойствах выбирается режим камеры «Сенсор линии». 
Изображение фиксируется в центре кадра и инициализируется датчик линии блоком 
«Детектировать по камере»: 
Чтобы получить данные, задействуем блок «Датчик линии в переменную»: 
Переменная video показывает отклонение объекта, в нашем случае черной линии, от 
центра экрана по оси Х в диапазоне от (-100) до 100. 
Для датчика линии имеется своя зарезервированная переменная lineSensor, которая 
является массивом, состоящим из трех элементов. 
lineSensor [0] – это и есть переменная video. 
lineSensor [1] – вероятность перекрестка в процентах от 0 до 100. 
lineSensor [2] – относительный размер линии от 0 до 100. 
Напишем программу движения по черной линии, используя П-регулятор. 


66 
Камера – датчик цвета. 
Цветовая модель – это представление цвета при помощи смешения нескольких 
красок, выбранных за основу. Существуют разнообразные виды цветовых моделей, 
отличающиеся набором входящих в них базовых цветов и изменяемых значений, 
придающих необходимый оттенок. 
Для TRIK Studio была выбрана модель RGB. В режиме сенсора цвета камера 
разбивает изображение на 9 квадратов. В каждом квадрате берется среднее значение цвета 

три числа от 0 до 255 в формате RGB. 
Зарезервированные 
переменные 
colorSensorR, 
colorSensorG, 
colorSensorB 
соответствуют значениям цвета в среднем квадрате. 
Формулы пересчета для различных цветовых пространств. 
Система HSV. 
Считаем, что: 



0,360


S, V, R, G, B 


0,1


Пусть MAX — максимальное значение из R, G и B, а MIN — минимальное из них. 
0, если MAX = MIN; 
60 × 
+ 0, если MAX = R и G ≥ B 
H = 60 × 
+ 360, если MAX = R и G 


60 × 
+ 120, если MAX = G 
60 
×
+ 240, если MAX = B 


67 
0, если MAX = 0 
S = 


, иначе 
V = MAX.
Система CMY(K). 
Cчитаем, что 
цвета RGB находятся в интервале [0;1]
K = 1 

MAX(R, G, B); 
C = 

M = 

Y = 

Система YIQ: 
Y = 0.299
×

+
0.587
×

+
0.114
×
B; 
I = 0.596
×


0.274
×


0.321
×
B; 
Q = 0.211
×


0.526
×

+
0.311
×
B. 
Применяя формулы преобразования цветного изображения в черно-белое, камеру 
можно использовать как датчик освещенности. 
В цветовых пространствах 
YUV 
и 
YIQ, 
используемых в 
PAL 
и 
NTSC, 
яркость Y' 
вычисляется следующим образом: 
Y’ = 0.299
×

+
0.587
×

+
0.114
×

Для учёта особенностей восприятия изображения человеческим глазом 
(чувствительность к зелёному и синему цвету) в модели 
HDTV 
используют другие 
коэффициенты: 
Y’ = 0.2126
×

+
0.7152
×

+
0.0722
×

Камера – датчик объекта. 
Зарезервированных переменных для датчика объекта три: 
objectSensorX и objectSensorY – координаты распознанного объекта в диапазоне от (-
100) до 100, objectSensorSize – размер объекта от 0 до 100. 


68 
Отступление 12. Небольшой, но компьютер. 
На контроллере ТРИК установлена операционная система Linux. TRIK Studio 
позволяет воспользоваться любыми системными командами при помощи блока 
Примеры использования 
Эта программа позволяет сначала записать звук с микрофона в файл left.wav, а 
затем его воспроизвести. 
Настройка сети Wi-Fi также производилась при помощи этого блока. 
Отступление 13. Мультимедиа 
Звуковые файлы и файлы изображений на контроллере ТРИК располагаются в 
директории /home/root/trik/media/<Имя_Файла>.
Для воспроизведения звукового файла можно воспользоваться блоком «Играть 
звук»:
Указав путь к файлу на контроллере. Второй способ воспроизведения – 
использование «Системного вызова» для вызова проигрывателя aplay (Отступление 11). 
Файлы изображения открываются на дисплее после вызова системной команды 
brick.display().showImage('media/trik_smile_sad.png'), с указанием пути к файлу 
изображения. Не забудьте указать, что это исполняемый код: 


69 
Для того чтобы сделать фотографии видеокамерой, используется системная 
команда v4l2grab -W 320 -H 240 -d /dev/video2 -o doc.jpg. Снимки сохраняются в файл 
doc.jpg. выполнение этой команды требует предварительной настройки контроллера: 
opkg update 
opkg upgrade 
opkg --force-reinstall install v4l2grab. 
Отступление 14. Консоль робота
Умение выводить в консоль робота значения датчиков, флаги, значение переменных 
очень помогает в отладке программ.
Ниже показан пример из папки Example – движение по линии, в текст которого 
добавлен оператор print для вывода в консоль робота значения управляющего 
воздействия. 
Для подбора коэффициента отладочный вывод – очень полезное знание. 
Свойства блока «Системный вызов»: 


70 
Задания для закрепления материала 


71 
Встреча 18. Параллельным курсом 
Многие практические задачи требуется решать в реальном времени, для этого может 
потребоваться большой объем вычислений. Современные компьютеры могут выполнять 
несколько операций одновременно. Такой процесс называется параллельным 
вычислением. Основная цель параллельных вычислений – уменьшение времени решения 
задачи. Контроллеры – не исключение, для организации параллельных процессов в TRIK 
Studio используются блоки «Параллельные задачи» и «Слияние задач»:
Параллельным задачам необходимо дать имена, чтобы можно было на них 
ссылаться. Имя главной задачи – «main». 
Одну из выполняемых задач можно завершить блоком: 
Использовать параллельные задачи в цикле нельзя, процессы будут множиться до 
переполнения памяти контроллера.
Параллельные процессы должны быть независимы друг от друга, то есть решаемые 
задачи имеют различные цели, например, воспроизведение звука при движении по 
траектории, или контроль заряда батареи во время выполнения задачи. 
В качестве примера рассмотрим движение по кругу с контролем заряда батареи: 
Контроль заряда батареи осуществляется каждые 10 секунд, и, если напряжение 
падает ниже 12 Вольт, раздается звуковой сигнал. Свойства системного вызова: 


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


73 
Задания для закрепления материала 


74 
Встреча 19. Исследователь 
Сконструируем робота для передвижения по комнате так, чтобы он не натыкался на 
предметы и не застревал. Для начала оснастим его датчиком расстояния. Алгоритм 
путешествия следующий: вперед до препятствия – отъезд – разворот – вперед до 
препятствия. 
Во время движения робот может попасть в ситуацию, когда датчик не заметит 
препятствие и уткнется в него, при этом моторы не смогут проворачивать колеса в полной 
мере. 
Используем для защиты от блокировки колес таймер и энкодер. 
Чтобы избежать небольших препятствий, добавим датчик касания, расположив его 
на бампере робота. В программе добавится проверка датчика касания. 


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


76 
Задания для закрепления материала 


77 
Встреча 20. Мастерская художника
.
Для вывода на дисплей текста, рисунков и значков в TRIK Studio используется 

Достарыңызбен бөлісу:
1   2   3   4




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет