SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Программирование Lego-роботов
   «Слушаем» датчики. Часть III




                  Нижний Новгород, 2012
Содержание

•   Принятие решений
•   Ветвление программы в NXT-G
•   Особенности блока ветвления
•   Коснулись или нет?
•   На сколько светло?
•   Какой цвет?
•   Ближе или дальше?
•   Сколько едем?
Принятие решений

• В ходе выполнения задания перед роботом может
  стоять выбор, в какое состояние ему перейти.
• Подобный выбор стоит перед богатырем на
  распутье.

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

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


                                    Включить
                                     моторы
       Узнать                        захвата
       какого
       цвета
        мяч
                                    Включить
                                   моторы для
                                    разворота
Принятие решений

• Также можно говорить о причинах и действиях,
  которые эти причины вызывают.

               Стало             Поднять
                тихо             занавес




                                  Подать
               Стало
                                 звуковой
               громко
                                  сигнал


              причины           действия
Ветвление программы в NXT-G

• В месте принятия решения происходит
  разветвление программы.
• В зависимости от решения, программа может пойти
  либо по одной, либо по другой ветке
• После выполнения
  действий внутри той
  или иной ветки,
  программа вновь
  возвращается в
  «основное русло».
Ветвление программы в NXT-G

         • Для того, чтобы обозначить место
           ветвления в программе, используется
           блок «Switch» (Переключить).
         • Блок может быть описан фразой «в
           зависимости от причины, переключиться
           в одну из двух веток программы»

• Блок располагается в
  основной (Common)
  палитре.
Ветвление программы в NXT-G

• Для принятия решения, в какую ветку программы
  переключаться может быть использована
  информация с различных датчиков:
Ветвление программы в NXT-G


• Вкладывая блоки принятия
  решения друг в друга, можно
  составить множественные
  разветвления.
Особенности блока ветления

• Каждый блок принятия решения может быть
  отображен в двух формах:
  В виде ветвления        В виде блока с вкладками
Особенности блока ветления

   В виде ветвления                   В виде блока с вкладками




                                   + занимает меньше места
                                   + может быть больше, чем две
+ удобно отображает ветвление         вкладки, больше вариантов
+ видно блоки программы в каждой      разветвления
    ветке                          + можно передавать данные
- занимает много места                (каналы данных) внутрь
- возможны только две ветки        - блоки программы скрыты во
                                      вкладках
Коснулись или нет?

• Ветвление может происходить после оценки
  состояния датчика касания:




• «Если датчик касания зажат, то выполнить блоки из
  верхней ветки, иначе (если отжат) выполнить блоки
  из нижней ветки»
Коснулись или нет?

• У датчика касания проверять можно состояния –
  зажат, отжат, нажат.
• Проверка на состояние «отжат» – инвертирует
  логику.




                            • «Если датчик касания отжат,
                              то выполнить блоки из
                              верхней ветки, иначе (если
                              нажат) выполнить блоки из
                              нижней ветки»
Коснулись или нет?

• Проверку на состояние «нажат» (зажат и сразу же
  отжат) можно интерпретировать как запрос на
  событие.
• «Случилось ли на датчике нажатие? Если ДА,
  выполнить блоки из верхней ветки. Если НЕТ,
  выполнить блоки из нижней ветки.»
                                 ДА


                                 НЕТ
Коснулись или нет?

• Пример




1. Проехать какую-то трассу
2. Проверить привезла ли тележка достаточно груза.
   2.1. Если груза достаточно (датчик зажат), вывести «смайлик»
   2.2. Если груза недостаточно, вывести недовольный сигнал
3. Возвращаться назад
Коснулись или нет?

• Задание 1.
  1. После включения блок должен проверить нажат ли
     датчик касания.
  2. В зависимости от того нажат или нет, воспроизвести
     фразу “Yes” или “No”
  3. После воспроизведения – остановить программу

                                          YES



                                          NO
Коснулись или нет?

• Задание 2. Управляемая машинка
  1. Датчик касания закреплен на длинном проводе
  2. Если датчик нажат – робот-тележка стоит, если отжат –
     едет




  3. Измените, программу так, чтобы при нажатом датчике
     робот вращался вокруг своей оси, а при отжатом –
     двигался вперед.
Насколько светло?

• Ветвление может происходить после оценки
  состояния датчика освещенности (или датчика
  цвета в режиме датчика освещенности):




• «Если светлее, то выполнить блоки из верхней
  ветки, иначе (если темнее) выполнить блоки из
  нижней ветки»
Насколько светло?

• Определение «светлее»/«темнее»
  выполняется путем сравнения с
  указанным значением.
• Если текущее показание больше заданного, то это
  расценивается как «светлее», иначе «темнее»
• Возможна смена знака на противоположный, что
  изменяет логику разветвления.
Насколько светло?

• Пример




1. Пока тележка двигается, проверять насколько светло вокруг
   1.1. Если светло, развернуть солнечные батареи и написать на экране
      об этом
   1.2. Если темно, то свернуть батареи, чтобы защитить их от пыли
Насколько светло?
• Задание 3. Азбука морзе
  1. Пока тележка едет по темной поверхности – издается
     звук, как только поверхность светлее – звук смолкает

               L        E        G             O

      Заранее неизвестно, сколько каждый звук продлится – неизвестно
      на сколько быстро тележка проедет по каждой «точке» и «тире».
      Поэтому звук начнет играться какое-то заранее долгое время, но
      при этом программа не будет ждать его завершения, а сразу
      перейдет к следующему блоку в программе.
      Тогда, при заезде на светлое поле, звук надо явно остановить.
Какой цвет?

• Ветвление может происходить после оценки
  состояния датчика цвета:




• «Если цвет синий, то выполнить блоки из верхней
  ветки, иначе (если любой другой) выполнить блоки
  из нижней ветки»
Какой цвет?

• Определять на соответствие за
  раз можно и один цвет и
  несколько.
• Проверку можно проинвертировать – проверять на
  совпадение цвета, которые находятся вне
  заданного диапазона: «любой цвет кроме красного»
  или «любой цвет кроме синего и зеленого»
Какой цвет?

• Пример
  • Двигатель вращает
    робота вокруг своей оси
  • Если датчик увидел
    красный цвет – играется
    нота ДО
  • Если датчик увидел синий
    цвет – играется нота РЕ
  • При любом другом цвете
    играется нота МИ
Какой цвет?

• Задание 4. Красный цвет – дороги нет
  1. Робот-тележка должен пересекать черные полоски –
     дорожки, при пересечении говорить «Black»
  2. Как только ему встретиться красная дорожка – он должен
     остановиться




  3. Задание нужно выполнить с использованием вложенных
     условий
  • Окончательно ли остановится робот на красной дорожке?

      Для того, чтобы остановить
      выполнение программы,
      используется блок «Stop»
Ближе или дальше?

• После сравнения текущего показания сенсора
  расстояния с заданным эталонным, программа
  также может разветвиться:




• «Если объект ближе, чем заданное расстояние, то выполнить блоки из
  верхней ветки, иначе (если дальше или точно на таком расстоянии)
  выполнить блоки из нижней ветки»
Ближе или дальше?

• При изменении знака в условии с меньше на
  больше меняется (инвертируется) смысл условия:
                                 «Если объект дальше, чем
                                 заданное расстояние, то
                                 выполнить блоки из
                                 верхней ветки, иначе (если
                                 ближе или точно на таком
                                 расстоянии) выполнить
                                 блоки из нижней ветки»
Ближе или дальше?

• Пример




1. Ехать, пока в стене не найдется расстояние глубже 5 см.
2. Проверить достаточно ли места для заезда робота.
   2.1. Если места недостаточно (на сенсоре маленькие значение)
      вывести сигнал тревоги
   2.2. Если груза достаточно, произвести заезд
Ближе или дальше?

• Задание 5a. Беспокойный любопытный робот
  1. Робот должен находиться все время на одном
     расстоянии от руки (или другого предмета) – 25 см.
  2. Если рука удаляется от робота, то робот придвигается к
     ней
  3. Если рука приближается к роботу, то робот отъезжает
     назад.
Ближе или дальше?

• Задание 5b. Опытный любопытный робот
  1. В предыдущем задании, робот никогда не был в
     состоянии покая – он, то ехал вперед, то двигался
     назад
  2. Нужно изменить программу так, чтобы робот был
     неподвижен при нахождении на определенном
     расстоянии




                    24 см.
                    26 см.
Сколько едем?

• После сравнения текущего показания датчика
  поворота оси мотора (енкодер) с заданным
  эталонным, программа также может разветвиться:




• «Если мотор повернулся больше, чем заданное количество градусов, то
  выполнить блоки из верхней ветки, иначе (если дальше или точно на
  таком расстоянии) выполнить блоки из нижней ветки»
Сколько едем?

• Сравниваться могут как количество градусов, на
  которые повернулась ось мотора, так и количество
  оборотов:


• Также при сравнении может учитываться
  направление движения.
• Аналогично работе с другими датчиками,
  изменение знака сравнения инвертирует логику
  поведения
Сколько едем?

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



                             3 оборота
Поведение по-умолчанию,                  5 оборотов               Количество оборотов
Количество оборотов мотора                                        мотора после сброса
                                                      2 оборота
после старта
Сколько едем?

• Сброс датчика поворотов оси двигателя
  осуществляется специальным блоком:
Сколько едем?

• Пример




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

• Задание 6. Умная парковка
  1. Датчик расстояния смотрит в сторону
  2. Робот должен найти пространство для парковки между
     двумя «автомобилями» и выполнить заезд в
     обнаруженное пространство. Если расстояние между
     «автомобилями» недостаточно для парковки – робот
     должен продолжить движение прямо, для поиска более
     подходящего места
                 1.5 оборота            0.6 оборотов




                               15 см.         ?? см.   15 см.
Принятие решений



 • Ваши вопросы?

Weitere ähnliche Inhalte

Mehr von Alexander Kolotov

Mehr von Alexander Kolotov (11)

Таблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастовТаблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастов
 
Опросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеОпросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехнике
 
Справка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектовСправка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектов
 
тропинка по лесу к голубому озеру
тропинка по лесу к голубому озерутропинка по лесу к голубому озеру
тропинка по лесу к голубому озеру
 
Робототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть IРобототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть I
 
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звукиКружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
 
Кружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый роботКружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый робот
 
Promo presentation for robotics cources
Promo presentation for robotics courcesPromo presentation for robotics cources
Promo presentation for robotics cources
 
Кружок по робототехнике. Занятие #1. Введение
Кружок по робототехнике. Занятие #1. Введение Кружок по робототехнике. Занятие #1. Введение
Кружок по робототехнике. Занятие #1. Введение
 
L^2: LEGO и Linux
L^2: LEGO и LinuxL^2: LEGO и Linux
L^2: LEGO и Linux
 
Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботов
 

Кружок по робототехнике. Занятие #6. Ветвления

  • 1. Программирование Lego-роботов «Слушаем» датчики. Часть III Нижний Новгород, 2012
  • 2. Содержание • Принятие решений • Ветвление программы в NXT-G • Особенности блока ветвления • Коснулись или нет? • На сколько светло? • Какой цвет? • Ближе или дальше? • Сколько едем?
  • 3. Принятие решений • В ходе выполнения задания перед роботом может стоять выбор, в какое состояние ему перейти. • Подобный выбор стоит перед богатырем на распутье. • Выбор может зависеть от показаний на сенсорах и датчиках, внутренних часов робота или от информации полученной от других роботов.
  • 4. Принятие решений • Например, робот, обнаружив красный мяч, должен отнести его в корзину, а синий оставить на месте. Включить моторы Узнать захвата какого цвета мяч Включить моторы для разворота
  • 5. Принятие решений • Также можно говорить о причинах и действиях, которые эти причины вызывают. Стало Поднять тихо занавес Подать Стало звуковой громко сигнал причины действия
  • 6. Ветвление программы в NXT-G • В месте принятия решения происходит разветвление программы. • В зависимости от решения, программа может пойти либо по одной, либо по другой ветке • После выполнения действий внутри той или иной ветки, программа вновь возвращается в «основное русло».
  • 7. Ветвление программы в NXT-G • Для того, чтобы обозначить место ветвления в программе, используется блок «Switch» (Переключить). • Блок может быть описан фразой «в зависимости от причины, переключиться в одну из двух веток программы» • Блок располагается в основной (Common) палитре.
  • 8. Ветвление программы в NXT-G • Для принятия решения, в какую ветку программы переключаться может быть использована информация с различных датчиков:
  • 9. Ветвление программы в NXT-G • Вкладывая блоки принятия решения друг в друга, можно составить множественные разветвления.
  • 10. Особенности блока ветления • Каждый блок принятия решения может быть отображен в двух формах: В виде ветвления В виде блока с вкладками
  • 11. Особенности блока ветления В виде ветвления В виде блока с вкладками + занимает меньше места + может быть больше, чем две + удобно отображает ветвление вкладки, больше вариантов + видно блоки программы в каждой разветвления ветке + можно передавать данные - занимает много места (каналы данных) внутрь - возможны только две ветки - блоки программы скрыты во вкладках
  • 12. Коснулись или нет? • Ветвление может происходить после оценки состояния датчика касания: • «Если датчик касания зажат, то выполнить блоки из верхней ветки, иначе (если отжат) выполнить блоки из нижней ветки»
  • 13. Коснулись или нет? • У датчика касания проверять можно состояния – зажат, отжат, нажат. • Проверка на состояние «отжат» – инвертирует логику. • «Если датчик касания отжат, то выполнить блоки из верхней ветки, иначе (если нажат) выполнить блоки из нижней ветки»
  • 14. Коснулись или нет? • Проверку на состояние «нажат» (зажат и сразу же отжат) можно интерпретировать как запрос на событие. • «Случилось ли на датчике нажатие? Если ДА, выполнить блоки из верхней ветки. Если НЕТ, выполнить блоки из нижней ветки.» ДА НЕТ
  • 15. Коснулись или нет? • Пример 1. Проехать какую-то трассу 2. Проверить привезла ли тележка достаточно груза. 2.1. Если груза достаточно (датчик зажат), вывести «смайлик» 2.2. Если груза недостаточно, вывести недовольный сигнал 3. Возвращаться назад
  • 16. Коснулись или нет? • Задание 1. 1. После включения блок должен проверить нажат ли датчик касания. 2. В зависимости от того нажат или нет, воспроизвести фразу “Yes” или “No” 3. После воспроизведения – остановить программу YES NO
  • 17. Коснулись или нет? • Задание 2. Управляемая машинка 1. Датчик касания закреплен на длинном проводе 2. Если датчик нажат – робот-тележка стоит, если отжат – едет 3. Измените, программу так, чтобы при нажатом датчике робот вращался вокруг своей оси, а при отжатом – двигался вперед.
  • 18. Насколько светло? • Ветвление может происходить после оценки состояния датчика освещенности (или датчика цвета в режиме датчика освещенности): • «Если светлее, то выполнить блоки из верхней ветки, иначе (если темнее) выполнить блоки из нижней ветки»
  • 19. Насколько светло? • Определение «светлее»/«темнее» выполняется путем сравнения с указанным значением. • Если текущее показание больше заданного, то это расценивается как «светлее», иначе «темнее» • Возможна смена знака на противоположный, что изменяет логику разветвления.
  • 20. Насколько светло? • Пример 1. Пока тележка двигается, проверять насколько светло вокруг 1.1. Если светло, развернуть солнечные батареи и написать на экране об этом 1.2. Если темно, то свернуть батареи, чтобы защитить их от пыли
  • 21. Насколько светло? • Задание 3. Азбука морзе 1. Пока тележка едет по темной поверхности – издается звук, как только поверхность светлее – звук смолкает L E G O Заранее неизвестно, сколько каждый звук продлится – неизвестно на сколько быстро тележка проедет по каждой «точке» и «тире». Поэтому звук начнет играться какое-то заранее долгое время, но при этом программа не будет ждать его завершения, а сразу перейдет к следующему блоку в программе. Тогда, при заезде на светлое поле, звук надо явно остановить.
  • 22. Какой цвет? • Ветвление может происходить после оценки состояния датчика цвета: • «Если цвет синий, то выполнить блоки из верхней ветки, иначе (если любой другой) выполнить блоки из нижней ветки»
  • 23. Какой цвет? • Определять на соответствие за раз можно и один цвет и несколько. • Проверку можно проинвертировать – проверять на совпадение цвета, которые находятся вне заданного диапазона: «любой цвет кроме красного» или «любой цвет кроме синего и зеленого»
  • 24. Какой цвет? • Пример • Двигатель вращает робота вокруг своей оси • Если датчик увидел красный цвет – играется нота ДО • Если датчик увидел синий цвет – играется нота РЕ • При любом другом цвете играется нота МИ
  • 25. Какой цвет? • Задание 4. Красный цвет – дороги нет 1. Робот-тележка должен пересекать черные полоски – дорожки, при пересечении говорить «Black» 2. Как только ему встретиться красная дорожка – он должен остановиться 3. Задание нужно выполнить с использованием вложенных условий • Окончательно ли остановится робот на красной дорожке? Для того, чтобы остановить выполнение программы, используется блок «Stop»
  • 26. Ближе или дальше? • После сравнения текущего показания сенсора расстояния с заданным эталонным, программа также может разветвиться: • «Если объект ближе, чем заданное расстояние, то выполнить блоки из верхней ветки, иначе (если дальше или точно на таком расстоянии) выполнить блоки из нижней ветки»
  • 27. Ближе или дальше? • При изменении знака в условии с меньше на больше меняется (инвертируется) смысл условия: «Если объект дальше, чем заданное расстояние, то выполнить блоки из верхней ветки, иначе (если ближе или точно на таком расстоянии) выполнить блоки из нижней ветки»
  • 28. Ближе или дальше? • Пример 1. Ехать, пока в стене не найдется расстояние глубже 5 см. 2. Проверить достаточно ли места для заезда робота. 2.1. Если места недостаточно (на сенсоре маленькие значение) вывести сигнал тревоги 2.2. Если груза достаточно, произвести заезд
  • 29. Ближе или дальше? • Задание 5a. Беспокойный любопытный робот 1. Робот должен находиться все время на одном расстоянии от руки (или другого предмета) – 25 см. 2. Если рука удаляется от робота, то робот придвигается к ней 3. Если рука приближается к роботу, то робот отъезжает назад.
  • 30. Ближе или дальше? • Задание 5b. Опытный любопытный робот 1. В предыдущем задании, робот никогда не был в состоянии покая – он, то ехал вперед, то двигался назад 2. Нужно изменить программу так, чтобы робот был неподвижен при нахождении на определенном расстоянии 24 см. 26 см.
  • 31. Сколько едем? • После сравнения текущего показания датчика поворота оси мотора (енкодер) с заданным эталонным, программа также может разветвиться: • «Если мотор повернулся больше, чем заданное количество градусов, то выполнить блоки из верхней ветки, иначе (если дальше или точно на таком расстоянии) выполнить блоки из нижней ветки»
  • 32. Сколько едем? • Сравниваться могут как количество градусов, на которые повернулась ось мотора, так и количество оборотов: • Также при сравнении может учитываться направление движения. • Аналогично работе с другими датчиками, изменение знака сравнения инвертирует логику поведения
  • 33. Сколько едем? • По-умолчанию, показания датчика поворота накапливаются с момента старта робота. Т.е. можно в любой момент времени узнать, на какое расстояние робот уехал от зоны старта. Причем движение мотора вперед увеличивают это число, движение мотора назад уменьшает его. • Это поведение можно изменить, если в сбросить показания датчика - накопление будет происходить с момента, когда произошел сброс. Старт программы Сброс Замера показаний 3 оборота Поведение по-умолчанию, 5 оборотов Количество оборотов Количество оборотов мотора мотора после сброса 2 оборота после старта
  • 34. Сколько едем? • Сброс датчика поворотов оси двигателя осуществляется специальным блоком:
  • 35. Сколько едем? • Пример Еще один способ ехать по квадрату. Для измерения сколько проехал робот не обязательно собирать значения с датчиков обеих моторов. При движении прямо моторы проезжают одинаковое расстояние, поэтому использовать значения можно тоже только с одного из моторов.
  • 36. Сколько едем? • Задание 6. Умная парковка 1. Датчик расстояния смотрит в сторону 2. Робот должен найти пространство для парковки между двумя «автомобилями» и выполнить заезд в обнаруженное пространство. Если расстояние между «автомобилями» недостаточно для парковки – робот должен продолжить движение прямо, для поиска более подходящего места 1.5 оборота 0.6 оборотов 15 см. ?? см. 15 см.
  • 37. Принятие решений • Ваши вопросы?