На главную страницу сайта К. Полякова
Преподавание, наука и жизнь.
 
главная школа вуз наука delphi программы походы автор
 Лента новостей Новости Блог Блог 

 

Робототехника

Что это такое?

Робототехника — новое интересное направление, которое, по-видимому, будет дальше развиваться в рамках школьных курсов информатики и технологии. Бум робототехники во многом связан с тем, что она позволяет ответить на вопрос: »А зачем же мы, собственно, учим программирование?». Кроме того, в курсе робототехники можно познакомиться с элементарными понятиями теории автоматического управления.

На этой странице представлены разработанные автором тренажёры для программирования LEGO-роботов и платы Arduino. Они могут помочь в тех случаях, когда по каким-то причинам нет возможности использовать реальное аппаратное обеспечение.

Тренажёры используют возможности 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 равны) считаются рисунками на поле, они проходимы для робота и на них реагируют датчики освещённости;
  • все пиксели, имеющие другие (не серые) цвета, считаются препятствиями и через них робот проходить не может;

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

Загрузить трассу можно следующим образом:

  1. щёлкните по кнопке «Выберите файл» и выберите нужный файл с трассой на диске вашего компьютера; после этого трасса должна появиться на поле робота;
  2. теперь нужно перевести робота в начальную точку; для этого щелкните мышью на поле (включится режим ручного управления) и, управляя клавишами-стрелками, переведите робота в нужную позицию;
  3. запомните начальное положение робота, щёлкнув по кнопке .

Если у вас получились удачные трассы и вы хотите поделиться своими наработками, присылайте их автору по адресу kpolyakov@mail.ru. Их можно будет добавить в стандартный набор трасс, которые загружаются прямо с сайта.

Ссылки по школьной робототехнике

Valid XHTML 1.0 Transitional

© 2000-2016 К. Поляков
 

В Контакте