Робототехника
Что это такое?
Робототехника — новое интересное направление, которое,
по-видимому, будет дальше развиваться в рамках школьных курсов информатики и
технологии. Бум робототехники во многом связан с тем, что она позволяет
ответить на вопрос: «А зачем же мы, собственно, учим программирование?».
Кроме того, в курсе робототехники можно познакомиться с элементарными
понятиями теории автоматического управления.
На этой странице представлены разработанные автором тренажёры для
программирования LEGO-роботов и платы Arduino,
а также материалы для программирования виртуальных роботов TRIK на языке Python.
Они могут помочь в тех случаях, когда по каким-то причинам нет возможности
использовать реальное аппаратное обеспечение.
Тренажёры используют возможности HTML5, поэтому
будут работать только в современных браузерах (лучше всего использовать
Google Chrome или Mozilla Firefox).
27 ноября 2015 г.
В тренажёры добавлена трасса «зародыш» (М.В. Лазарев, г. Орехово-Зуево).
13 октября 2015 г.
Теперь в тренажёрах для LEGO-робота можно загружать свои
трассы (поля для робота). Как это сделать? Смотрите здесь.
Добавлены новые тренажёры — LEGO-роботы
с двумя,
тремя,
четырьмя
датчиками освещённости.
Язык управления роботами
Для управления роботами в тренажёрах используется простой язык программирования,
который получил рабочее название SiRoP (Simple Robot Programming).
Ручное управление роботом
Как известно, есть два способа управления — непосредственное
управление (с пульта) и управление по программе, заранее записанной в память
устройства. Этот тренажёр позволяет познакомиться с непосредственным управлением.
Можно установить мощности каждого из двух моторов отдельно (или одинаковые мощности для
обоих моторов), а затем нажатием на кнопки пульта включать и выключать моторы,
перемещая робота.
Управление роботом с датчиком освещённости
Датчик освещённости позволяет роботу ориентироваться на
поверхности стола, например, ехать вдоль границы между белой и чёрной областями
(по краю чёрной линии). Фотодиод подсвечивает поверхность, фотоприёмник «ловит»
отражённые лучи и измеряет их интенсивность.
Наиболее популярная задача этого типа — движение по линии. С помощью тренажёра
можно изучить различные законы управления — релейный, пропорциональный, и
даже ПИД-управление (пропорционально-интегрально-дифференциальное).
Примеры программ для робота с датчиком освещённости
Релейный регулятор
пока 1
{
если датчик[0] > 128 {
мотор[0] = 100
мотор[1] = 0
}
иначе {
мотор[0] = 0
мотор[1] = 100
}
ждать(10)
}
П-регулятор
kP = 0.2
пока 1
{
u = kP*(датчик[0]-128)
мотор[0] = 50 + u
мотор[1] = 50 - u
ждать(20)
}
Танец в круге
main {
пока 1
{
пока датчик[0] > 128 {
мотор[0] = 100
мотор[1] = 100
ждать(10)
}
назад()
поворот()
}
}
назад {
мотор[0] = -100
мотор[1] = -100
ждать(260)
}
поворот {
мотор[0] = -50
мотор[1] = 50
ждать(50)
}
Управление роботом с двумя датчиками освещённости
Два датчика освещённости позволяют роботу лучше ориентироваться
и ехать вдоль тонкой линии. Они вынесены немного вперед и разведены в стороны.
Как и для задач с одним датчиком, c помощью этого
тренажёра можно изучать различные законы управления.
Примеры программ для робота с двумя датчиками освещённости
Релейный регулятор
пока 1
{
d0 = датчик[0] > 128
d1 = датчик[1] > 128
если d0 & !d1 {
мотор[0] = 100
мотор[1] = 0
}
если !d0 & d1 {
мотор[0] = 0
мотор[1] = 100
}
если d0 == d1 {
мотор[0] = 100
мотор[1] = 100
}
ждать(10)
}
П-регулятор
kP = 0.4
пока 1
{
u = kP*(датчик[0] - датчик[1])
мотор[0] = 50 + u
мотор[1] = 50 - u
ждать(10)
}
Управление роботом с тремя датчиками освещённости
Три датчика освещённости позволяют роботу «смотреть вперёд»:
один из датчиков вынесен вперёд по оси робота, поэтому роботу легче обнаружить крутые повороты.
Например, можно применить плавающий коэффициент усиления в пропорциональном регуляторе
(см. С.А. Филиппов, Робототехника для детей и родителей, СПб: Наука, 2011).
Примеры программ для робота с тремя датчиками освещённости
П-регулятор
k0 = 0.2
пока 1
{
kP =k0 + датчик[1]/1000
u = датчик[0] - датчик[2]
мотор[0] = 50+kP*u
мотор[1] = 50-kP*u
ждать(10)
}
Управление роботом с четырьмя датчиками освещённости
Четыре датчика освещённости позволяют роботу лучше определять
крутые повороты. Внутренние датчики служат для тонкой регулировки, для
них используется пропорциональное регулирование.
Два внешних датчика вынесены немного вперед и разведены в стороны.
Они используются тогда, когда встречается крутой поворот.
Коэффициент усиления для управления по показаниям датчиков внешней пары
выбирается больше, чем для внутренней пары
(см. Л.Ю. Овсяницкая и др., Алгоритмы и программы движения робота Lego Mindstorms EV3 по линии,
М.: «Перо», 2015).
Примеры программ для робота с четырьмя датчиками освещённости
Релейный регулятор
пока 1
{
d0 = датчик[0] > 128
d1 = датчик[1] > 128
d2 = датчик[2] > 128
d3 = датчик[3] > 128
если d1 & !d2 {
мотор[0] = 100
мотор[1] = 0
}
если !d1 & d2 {
мотор[0] = 0
мотор[1] = 100
}
если d1 == d2 {
мотор[0] = 100
мотор[1] = 100
}
если d0 & !d3 {
мотор[0] = 30
мотор[1] = 0
}
если !d0 & d3 {
мотор[0] = 0
мотор[1] = 30
}
ждать(10)
}
П-регулятор
k1 = 0.2
k2 = 0.4
пока 1
{
u1 = датчик[1] - датчик[2]
u2 = датчик[0] - датчик[3]
мотор[0] = 50+k1*u1+k2*u2
мотор[1] = 50-k1*u1-k2*u2
ждать(10)
}
Управление роботом с датчиком расстояния (сонаром)
Датчик расстояния (сонар) позволяет во время движения робота
определить расстояние до ближайшего препятствия. Он излучает ультразвуковой сигнал
и принимает отражённый сигнал. Чем больше время между излучённым и принятым сигналами,
тем больше расстояние.
Используя датчик расстояния, можно запрограммировать робота так, что
он автоматически пройдёт лабиринт известной формы, но неизвестных размеров.
Примеры программ для робота с датчиком расстояния
Проход лабиринта
main {
повтори 3 {
отрезок()
}
}
отрезок {
пока датчик[0] > 8
{
мотор[0] = 100
мотор[1] = 100
ждать(10)
}
мотор[0] = 50
мотор[1] = -50
ждать(130)
}
Как загрузить свою трассу для робота?
Все тренажёры для работы с LEGO-роботами позволяют загружать свои
трассы (поля для робота). Трассы — это растровые рисунки,
сделанные в любом графическом редакторе. Они должны отвечать следующим требованиям:
- формат файла GIF или PNG;
- размер 500×400 пикселей;
- все пиксели, закрашенные оттенками серого цвета (от белого до чёрного,
все составляющие в модели RGB равны)
считаются рисунками на поле, они проходимы для робота и на них реагируют
датчики освещённости;
- все пиксели, имеющие другие (не серые) цвета, считаются препятствиями и
через них робот проходить не может;
Для загрузки трасс используется кнопка выбора файла и кнопка установки
начального положения робота, которые расположены над полем робота:
Загрузить трассу можно следующим образом:
- щёлкните по кнопке «Выберите файл» и выберите нужный
файл с трассой на диске вашего компьютера; после этого трасса должна
появиться на поле робота;
- теперь нужно перевести робота в начальную точку; для этого
щелкните мышью на поле (включится режим ручного управления) и,
управляя клавишами-стрелками, переведите робота в нужную позицию;
- запомните начальное положение робота, щёлкнув по кнопке
.
Если у вас получились удачные трассы и вы хотите поделиться своими наработками,
присылайте их автору по адресу [email protected].
Их можно будет добавить в стандартный набор трасс, которые загружаются
прямо с сайта.
Ссылки по школьной робототехнике