SlideShare a Scribd company logo
Программирование Lego-роботов
   «Слушаем» датчики. Часть I




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

•   Введение
•   Что такое состояние?
•   Ожидание событий
•   Ожидание событий в NXT-G
•   Датчик касания
•   Цикл - повтор одинаковых действий
•   Датчик уровня громкости
Введение

• Основной функцией робота является движение
  или перемещение его частей (манипуляторы,
  захваты, ноги, сенсоры)
Введение

• Роботу необходимо изменять свое поведение
  (движение) в зависимости от внешних
  событий.
Введение

• Внешние события приходят роботу через
  сенсоры и датчики, от внутренних часов
  робота, от оператора, а также от других
  роботов.
Что такое состояние?

• Смена состояния робота:

   При программировании роботов часто говорят о
    состояниях. Например, робот находится в
    состоянии движения или робот находится в
    состоянии бездействия.

   Чтобы перейти к следующему состоянию, робот
    должен получить указание на это через какое-то
    событие.
Что такое состояние?

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



                Сигнал от датчика
     Движение                       Остановка
Ожидание событий

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

• Робот должен ожидать возникновения сигнала –
  этот процесс можно назвать «Ожидание события»
Ожидание событий в NXT-G

       • В среде программирования NXT-G есть
         специальный блок «Wait» (Ждать), на
         котором программа приостанавливает
         свое действие до наступления события
• Блок Ожидания может быть описан фразой
  «выполнять предыдущее действие до тех пор,
  пока не случиться ...»
• Блоки ожидания (оранжевые) можно найти в
  общей (Common) палитре инструментов
Ожидание событий в NXT-G

• Блок Ожидания может быть использован для
  ожидания событий от разных сенсоров




• Источниками событий могут быть:
  •   Сенсоры и датчики
  •   Внутренние часы и таймеры
  •   Кнопки расположенные на NXT блоке
  •   Сообщения от других роботов (Bluetooth)
Датчик касания

           • Ожидание событий от датчика касания
           • «Ехать вперед до тех пор, пока датчик
             касания не будет нажат»




1. Номер порта, где установлен датчик
2. Переход в следующее состояние определяется параметрами
     Нажат (Pressed) – «поворачивать до тех пор, пока датчик не будет нажат»
     Отжат (Released) – «отъезжать до тех пор, пока датчик не будет отжат»
     Щелкнут (Bumped) – «ничего не делать до тех пор, пока датчик не обнаружит
                               щелчок»
Датчик касания

• Пример




1. Ничего не делать до тех пор, пока датчик не будет нажат (зажат
   и сразу отпущен)
2. Начать движение вперед
3. Ехать до тех пор, пока датчик не будет зажат
4. Остановиться

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

• Задание 1. Робот обнаруживает препятствие.
  • На роботе датчик касания «смотрит» вперед
  • Робот начинает двигаться
  • Как только обнаружится касание с препятствием, робот
    должен остановиться.




     • Из скольки блоков состоит ваша программа?
     • Остановился робот сразу после касания или сколько-то
       еще пытался продолжать двигаться?
     • За счет какого действия в программе нужно остановить
       робота, сразу после обнаружения нажатия?
Датчик касания

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




                                          При отсутствии этого блока
Запустить двигатели и
                                          двигатели будут продолжать
передать управление
                                       крутиться после блока Ожидание.
  следующему блоку Ожидать появления
                                         А поскольку программа сразу
(состояние движения) сигнала «касание»
                                       кончилась, то на двигатели просто
                                       перестает подаваться энергия, но
                                       они еще продолжают двигаться по
                                                    инерции
Датчик касания

• Задание 2. Запуск робота c кнопки.
  • Изначально робот стоит и должен начать двигаться
    только после того, как происходит нажатие на датчик
    касания.
  • Робот останавливается после столкновения с
    препятствием.

                          • Почему робот не поехал, а
                            программа сразу завершилась?
Датчик касания

       Программа исполняется на NXT блоке быстрее, чем
       человек взаимодействует с роботом
                        Очень-очень быстро!
                       Тысячные доли секунды




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

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




  Человек нажал                         Моторы        К этому времени
    на кнопку       За это время,     запускаются   датчик «освобожден»
                  кнопка отжимается                  и ожидает сигнала
                                                          касания
Минусы подхода:
  • Задержку надо подбирать индивидуально для человека
  • Запуск мотора происходит с видимой задержкой после
    нажатия
Датчик касания

• Вариант второй.
  • Использовать событие «датчик щелкнут».




Минусы подхода:
  • Такой «фокус» пройдет только с датчиком касания – для
    других датчиков такое поведение придется
    программировать самостоятельно
Датчик касания

• Задание 2a. Простейший выход из лабиринта.
  • Напишите программу, чтобы робот выбрался из
    лабиринта вот такой конфигруации:




                               Старт
                  Финиш

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

• Иногда в программе возникает необходимость
  повторить несколько одинаковых операций друг за
  другом несколько раз:

               1


       2




                   4


           3
Повтор одинаковых действий

• Для повторения одинаковых действий используется
  блок «Loop» (Цикл)




• Те действия, которые необходимо повторять
  несколько раз, помещаются внутрь цикла
                     • Как только действие
                       последнего блока в цикле
                       заканчивается, программа
                       переходит к первому блоку
Повтор одинаковых действий

• Задание 2b. Выход из бесконечного лабиринта.
  • Напишите программу, чтобы робот выбрался из
    лабиринта, у которого финиша заранее не определен:




                        Старт
Повтор одинаковых действий

• Задание 3. Ожидание событий от двух датчиков.
  • Установите на роботе два датчика касания – один
    «смотрит» вперед, другой – назад
  • Напишите программу, чтобы робот менял направление
    движения на противоположное при столкновении с
    препятствием, при этом:
     • При движении вперед опрашивается передний датчик
     • При движении назад опрашивает задний датчик



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




1. Номер порта, где установлен датчик
2. Переход в следующее состояние определяется звуковым давлением
   (громкостью звука) :
   • Событие возникнет при громкости меньше, чем X процентов (тише чем …)
      • знак “<“, оранжевая полоска ползунка с левой стороны
   • Событие возникнет при громкости больше, чем X процентов (громче чем …)
      • знак “>“, оранжевая полоска ползунка с правой стороны
Датчик уровня громкости

• Пример




1. Ничего не делать до тех пор, пока рядом с роботом не хлопнут в
   ладоши
2. После хлопка, проиграть музыку
Датчик уровня громкости

• Задание 4. Измерение громкости
  • Установите датчик громкости на роботе
  • Составьте программу, состоящую из одного
    только блок ожидания, работающего с датчиком
    уровня громкости
  • Подключите робота к компьютеру, убедитесь, что среда
    NXT-G видит вашего робота




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

• Задание 5. Управление звуком.
  1. Робот должен начать двигаться после громкого хлопка.
  2. После еще одного хлопка робот должен повернуть на
     180 градусов и снова ехать вперед.
  3. Используйте цикл, чтобы повторять действия из шага 2.
                                                    Какой уровень
                                                    громкости
                                                    установлен, как
                                                    порог срабатывания,
                                                    для хлопка?


        Чтобы избежать влияния шума моторов, установите
        датчик как можно выше над роботом.
  • Если робот все время поворачивает, попробуйте решить проблему
    используя знания, полученные в Задании 2.
Ожидание событий



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

More Related Content

What's hot

Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
UnityTechnologiesJapan002
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]SeungWon Lee
 
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
Jun Hyuk Jung
 
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
Junichiro Katsuta
 
AA-sort with SSE4.1
AA-sort with SSE4.1AA-sort with SSE4.1
AA-sort with SSE4.1
MITSUNARI Shigeo
 
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
MLconf
 
Snakeppt1 copy
Snakeppt1   copySnakeppt1   copy
Snakeppt1 copy
Neethulakshman
 
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems. (AAAI 2022)”
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems.  (AAAI 2022)” [DL輪読会]“Meta-Learning for Online Update of Recommender Systems.  (AAAI 2022)”
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems. (AAAI 2022)”
Deep Learning JP
 
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
Deep Learning JP
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなす
Toshiyuki Shimono
 
【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly
Deep Learning JP
 
Flappy bird ppt
Flappy bird pptFlappy bird ppt
Flappy bird ppt
Mireyashrieve
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
MUUMUMUMU
 
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
Hirokazu Onomichi
 
論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
 論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D... 論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
Toru Tamaki
 
2022国際ロボット展に見る産業用ロボットの最新技術動向
2022国際ロボット展に見る産業用ロボットの最新技術動向2022国際ロボット展に見る産業用ロボットの最新技術動向
2022国際ロボット展に見る産業用ロボットの最新技術動向
豆寄席 (株式会社豆蔵)
 
ゼロから作るDeepLearning 2~3章 輪読
ゼロから作るDeepLearning 2~3章 輪読ゼロから作るDeepLearning 2~3章 輪読
ゼロから作るDeepLearning 2~3章 輪読
KCS Keio Computer Society
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
 
블랙옵스4의 레벨 디자인
블랙옵스4의 레벨 디자인블랙옵스4의 레벨 디자인
블랙옵스4의 레벨 디자인
용태 이
 

What's hot (19)

Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
 
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터][NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
[NDC14] 라이브중인 2D게임에 시스템 변경 없이 본 애니메이션 도입하기[던전앤파이터]
 
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
레벨기획 프론티어 온라인 '이름없는 동굴' 던전_v2
 
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
 
AA-sort with SSE4.1
AA-sort with SSE4.1AA-sort with SSE4.1
AA-sort with SSE4.1
 
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
Ewa Dominowska, Engineering Manager, Facebook at MLconf SEA - 5/20/16
 
Snakeppt1 copy
Snakeppt1   copySnakeppt1   copy
Snakeppt1 copy
 
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems. (AAAI 2022)”
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems.  (AAAI 2022)” [DL輪読会]“Meta-Learning for Online Update of Recommender Systems.  (AAAI 2022)”
[DL輪読会]“Meta-Learning for Online Update of Recommender Systems. (AAAI 2022)”
 
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
【DL輪読会】Deep Transformers without Shortcuts: Modifying Self-attention for Fait...
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなす
 
【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly【DL輪読会】Factory: Fast Contact for Robotic Assembly
【DL輪読会】Factory: Fast Contact for Robotic Assembly
 
Flappy bird ppt
Flappy bird pptFlappy bird ppt
Flappy bird ppt
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
 
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
ビーズセッターロボットのためのDYNAMIXEL Workbenchの評価
 
論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
 論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D... 論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
論文紹介:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object D...
 
2022国際ロボット展に見る産業用ロボットの最新技術動向
2022国際ロボット展に見る産業用ロボットの最新技術動向2022国際ロボット展に見る産業用ロボットの最新技術動向
2022国際ロボット展に見る産業用ロボットの最新技術動向
 
ゼロから作るDeepLearning 2~3章 輪読
ゼロから作るDeepLearning 2~3章 輪読ゼロから作るDeepLearning 2~3章 輪読
ゼロから作るDeepLearning 2~3章 輪読
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
블랙옵스4의 레벨 디자인
블랙옵스4의 레벨 디자인블랙옵스4의 레벨 디자인
블랙옵스4의 레벨 디자인
 

Viewers also liked

Кружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звукиКружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
Alexander Kolotov
 
Кружок по робототехнике. Занятие #7. Решение задач
Кружок по робототехнике. Занятие #7. Решение задачКружок по робототехнике. Занятие #7. Решение задач
Кружок по робототехнике. Занятие #7. Решение задач
Alexander Kolotov
 
Кружок по робототехнике. Занятие #8. Решение задач
Кружок по робототехнике. Занятие #8. Решение задачКружок по робототехнике. Занятие #8. Решение задач
Кружок по робототехнике. Занятие #8. Решение задач
Alexander Kolotov
 
Кружок по робототехнике. Занятие #6. Ветвления
Кружок по робототехнике. Занятие #6. Ветвления Кружок по робототехнике. Занятие #6. Ветвления
Кружок по робототехнике. Занятие #6. Ветвления
Alexander Kolotov
 
Кружок по робототехнике. Занятие #2. Программируем моторы
Кружок по робототехнике. Занятие #2. Программируем моторыКружок по робототехнике. Занятие #2. Программируем моторы
Кружок по робототехнике. Занятие #2. Программируем моторы
Alexander Kolotov
 
Promo presentation for robotics cources
Promo presentation for robotics courcesPromo presentation for robotics cources
Promo presentation for robotics cources
Alexander Kolotov
 
Кружок по робототехнике. Занятие #1. Введение
Кружок по робототехнике. Занятие #1. Введение Кружок по робототехнике. Занятие #1. Введение
Кружок по робототехнике. Занятие #1. Введение
Alexander Kolotov
 
Кружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый роботКружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый робот
Alexander Kolotov
 
Another example of slides for Lego Mindstorms NXT courses
Another example of slides for Lego Mindstorms NXT coursesAnother example of slides for Lego Mindstorms NXT courses
Another example of slides for Lego Mindstorms NXT courses
Alexander Kolotov
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6Dmitry Soshnikov
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in action
Yuri Trukhin
 
шесть кадров
шесть кадровшесть кадров
шесть кадровpermskijkrai
 

Viewers also liked (12)

Кружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звукиКружок по робототехнике. Занятие #3. Программируем экран и звуки
Кружок по робототехнике. Занятие #3. Программируем экран и звуки
 
Кружок по робототехнике. Занятие #7. Решение задач
Кружок по робототехнике. Занятие #7. Решение задачКружок по робототехнике. Занятие #7. Решение задач
Кружок по робототехнике. Занятие #7. Решение задач
 
Кружок по робототехнике. Занятие #8. Решение задач
Кружок по робототехнике. Занятие #8. Решение задачКружок по робототехнике. Занятие #8. Решение задач
Кружок по робототехнике. Занятие #8. Решение задач
 
Кружок по робототехнике. Занятие #6. Ветвления
Кружок по робототехнике. Занятие #6. Ветвления Кружок по робототехнике. Занятие #6. Ветвления
Кружок по робототехнике. Занятие #6. Ветвления
 
Кружок по робототехнике. Занятие #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. Введение
 
Кружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый роботКружок по робототехнике. Занятие #2. Первый робот
Кружок по робототехнике. Занятие #2. Первый робот
 
Another example of slides for Lego Mindstorms NXT courses
Another example of slides for Lego Mindstorms NXT coursesAnother example of slides for Lego Mindstorms NXT courses
Another example of slides for Lego Mindstorms NXT courses
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in action
 
шесть кадров
шесть кадровшесть кадров
шесть кадров
 

More from Alexander Kolotov

Таблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастовТаблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастов
Alexander Kolotov
 
Опросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеОпросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехнике
Alexander Kolotov
 
Справка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектовСправка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектов
Alexander Kolotov
 
тропинка по лесу к голубому озеру
тропинка по лесу к голубому озерутропинка по лесу к голубому озеру
тропинка по лесу к голубому озеру
Alexander Kolotov
 
Робототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть IРобототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть I
Alexander Kolotov
 
L^2: LEGO и Linux
L^2: LEGO и LinuxL^2: LEGO и Linux
L^2: LEGO и Linux
Alexander Kolotov
 
Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботов
Alexander Kolotov
 

More from Alexander Kolotov (7)

Таблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастовТаблица соответствия робототехнических компетенций и возрастов
Таблица соответствия робототехнических компетенций и возрастов
 
Опросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехникеОпросный лист оценки знаний по соревновательной робототехнике
Опросный лист оценки знаний по соревновательной робототехнике
 
Справка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектовСправка-обзор популярных робототехнических комплектов
Справка-обзор популярных робототехнических комплектов
 
тропинка по лесу к голубому озеру
тропинка по лесу к голубому озерутропинка по лесу к голубому озеру
тропинка по лесу к голубому озеру
 
Робототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть IРобототехника с Not eXactly C. Часть I
Робототехника с Not eXactly C. Часть I
 
L^2: LEGO и Linux
L^2: LEGO и LinuxL^2: LEGO и Linux
L^2: LEGO и Linux
 
Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботов
 

Кружок по робототехнике. Занятие #4. Программируем датчики касания и звука

  • 1. Программирование Lego-роботов «Слушаем» датчики. Часть I Нижний Новгород, 2012
  • 2. Содержание • Введение • Что такое состояние? • Ожидание событий • Ожидание событий в NXT-G • Датчик касания • Цикл - повтор одинаковых действий • Датчик уровня громкости
  • 3. Введение • Основной функцией робота является движение или перемещение его частей (манипуляторы, захваты, ноги, сенсоры)
  • 4. Введение • Роботу необходимо изменять свое поведение (движение) в зависимости от внешних событий.
  • 5. Введение • Внешние события приходят роботу через сенсоры и датчики, от внутренних часов робота, от оператора, а также от других роботов.
  • 6. Что такое состояние? • Смена состояния робота:  При программировании роботов часто говорят о состояниях. Например, робот находится в состоянии движения или робот находится в состоянии бездействия.  Чтобы перейти к следующему состоянию, робот должен получить указание на это через какое-то событие.
  • 7. Что такое состояние? • Например, находясь в состоянии движения роботу приходит сигнал от датчика касания, что впереди перпятствие, и робот из состояния движения переходит в состояние бездействия. Сигнал от датчика Движение Остановка
  • 8. Ожидание событий • Следовательно, робот будет продолжать находиться в предыдущем состоянии до тех пор, пока не получит сигнал на переход в следующее состояни. • Робот должен ожидать возникновения сигнала – этот процесс можно назвать «Ожидание события»
  • 9. Ожидание событий в NXT-G • В среде программирования NXT-G есть специальный блок «Wait» (Ждать), на котором программа приостанавливает свое действие до наступления события • Блок Ожидания может быть описан фразой «выполнять предыдущее действие до тех пор, пока не случиться ...» • Блоки ожидания (оранжевые) можно найти в общей (Common) палитре инструментов
  • 10. Ожидание событий в NXT-G • Блок Ожидания может быть использован для ожидания событий от разных сенсоров • Источниками событий могут быть: • Сенсоры и датчики • Внутренние часы и таймеры • Кнопки расположенные на NXT блоке • Сообщения от других роботов (Bluetooth)
  • 11. Датчик касания • Ожидание событий от датчика касания • «Ехать вперед до тех пор, пока датчик касания не будет нажат» 1. Номер порта, где установлен датчик 2. Переход в следующее состояние определяется параметрами Нажат (Pressed) – «поворачивать до тех пор, пока датчик не будет нажат» Отжат (Released) – «отъезжать до тех пор, пока датчик не будет отжат» Щелкнут (Bumped) – «ничего не делать до тех пор, пока датчик не обнаружит щелчок»
  • 12. Датчик касания • Пример 1. Ничего не делать до тех пор, пока датчик не будет нажат (зажат и сразу отпущен) 2. Начать движение вперед 3. Ехать до тех пор, пока датчик не будет зажат 4. Остановиться Количество движения у мотора – бесконечность, позволяет бесконечно двигаться до прихода события
  • 13. Датчик касания • Задание 1. Робот обнаруживает препятствие. • На роботе датчик касания «смотрит» вперед • Робот начинает двигаться • Как только обнаружится касание с препятствием, робот должен остановиться. • Из скольки блоков состоит ваша программа? • Остановился робот сразу после касания или сколько-то еще пытался продолжать двигаться? • За счет какого действия в программе нужно остановить робота, сразу после обнаружения нажатия?
  • 14. Датчик касания Не забывайте добавлять блок остановки двигателей после блока ожидания, это позволит сделать поведение робота более предсказуемым При отсутствии этого блока Запустить двигатели и двигатели будут продолжать передать управление крутиться после блока Ожидание. следующему блоку Ожидать появления А поскольку программа сразу (состояние движения) сигнала «касание» кончилась, то на двигатели просто перестает подаваться энергия, но они еще продолжают двигаться по инерции
  • 15. Датчик касания • Задание 2. Запуск робота c кнопки. • Изначально робот стоит и должен начать двигаться только после того, как происходит нажатие на датчик касания. • Робот останавливается после столкновения с препятствием. • Почему робот не поехал, а программа сразу завершилась?
  • 16. Датчик касания Программа исполняется на NXT блоке быстрее, чем человек взаимодействует с роботом Очень-очень быстро! Тысячные доли секунды Человек нажал Моторы на кнопку Человек еще не остановились и Моторы только начали успел отдернуть программа запускаться, и руку от датчика завершилась управление передалось следующему блоку
  • 17. Датчик касания • Вариант первый. • Вставить задержку, чтобы человек успел отжать датчик Человек нажал Моторы К этому времени на кнопку За это время, запускаются датчик «освобожден» кнопка отжимается и ожидает сигнала касания Минусы подхода: • Задержку надо подбирать индивидуально для человека • Запуск мотора происходит с видимой задержкой после нажатия
  • 18. Датчик касания • Вариант второй. • Использовать событие «датчик щелкнут». Минусы подхода: • Такой «фокус» пройдет только с датчиком касания – для других датчиков такое поведение придется программировать самостоятельно
  • 19. Датчик касания • Задание 2a. Простейший выход из лабиринта. • Напишите программу, чтобы робот выбрался из лабиринта вот такой конфигруации: Старт Финиш • Что нужно сделать роботу после касания со стенкой? • В какую сторону должен крутиться мотор, чтобы робот мог выполнить разворот беспрепятственно? • Сколько раз робот должен сделать одинаковые действия?
  • 20. Повтор одинаковых действий • Иногда в программе возникает необходимость повторить несколько одинаковых операций друг за другом несколько раз: 1 2 4 3
  • 21. Повтор одинаковых действий • Для повторения одинаковых действий используется блок «Loop» (Цикл) • Те действия, которые необходимо повторять несколько раз, помещаются внутрь цикла • Как только действие последнего блока в цикле заканчивается, программа переходит к первому блоку
  • 22. Повтор одинаковых действий • Задание 2b. Выход из бесконечного лабиринта. • Напишите программу, чтобы робот выбрался из лабиринта, у которого финиша заранее не определен: Старт
  • 23. Повтор одинаковых действий • Задание 3. Ожидание событий от двух датчиков. • Установите на роботе два датчика касания – один «смотрит» вперед, другой – назад • Напишите программу, чтобы робот менял направление движения на противоположное при столкновении с препятствием, при этом: • При движении вперед опрашивается передний датчик • При движении назад опрашивает задний датчик Не забудьте указать разные порты для разных датчиков.
  • 24. Датчик уровня громкости • Ожидание событий от датчик уровня громкости • «Ничего не делать до тех пор, пока не стало тише, чем …» 1. Номер порта, где установлен датчик 2. Переход в следующее состояние определяется звуковым давлением (громкостью звука) : • Событие возникнет при громкости меньше, чем X процентов (тише чем …) • знак “<“, оранжевая полоска ползунка с левой стороны • Событие возникнет при громкости больше, чем X процентов (громче чем …) • знак “>“, оранжевая полоска ползунка с правой стороны
  • 25. Датчик уровня громкости • Пример 1. Ничего не делать до тех пор, пока рядом с роботом не хлопнут в ладоши 2. После хлопка, проиграть музыку
  • 26. Датчик уровня громкости • Задание 4. Измерение громкости • Установите датчик громкости на роботе • Составьте программу, состоящую из одного только блок ожидания, работающего с датчиком уровня громкости • Подключите робота к компьютеру, убедитесь, что среда NXT-G видит вашего робота • Перейдите в конфигурационную панель блока и посмотрите, как изменяются показания сенсора в зависимости от окружающего шума
  • 27. Датчик уровня громкости • Задание 5. Управление звуком. 1. Робот должен начать двигаться после громкого хлопка. 2. После еще одного хлопка робот должен повернуть на 180 градусов и снова ехать вперед. 3. Используйте цикл, чтобы повторять действия из шага 2. Какой уровень громкости установлен, как порог срабатывания, для хлопка? Чтобы избежать влияния шума моторов, установите датчик как можно выше над роботом. • Если робот все время поворачивает, попробуйте решить проблему используя знания, полученные в Задании 2.
  • 28. Ожидание событий • Ваши вопросы?