ScratchDuino.Робоплатформа и Scratch


ScratchDuino. Робоплатформа на СПО. Установка

В новой серии сообщений хочу рассказать о том, как мы с ребятами 5-го класса осваивали новый для себя вид деятельности – работу с роботами. Так уж получилось, что совпало сразу несколько звезд. Первое – в школе появилась обязательная внеурочная деятельность (ФГОС обязывают) в 5-ых классах. Второе – как это иногда случается, я оказался одним из тех педагогов, в распоряжении которых есть инструменты, на базе которых эту самую внеурочную деятельность можно вести. Ну и третье – тема новой опытно-экспериментальной работы в текущем году – использование программно-прикладных средств на базе СПО в работе учителя. А уже четвертое стало совсем неожиданным, но, без сомнения – приятным событием. С нами связался генеральный директор ГНУ/Линуксцентра (ЗАО "Мезон.Ру") Павел Фролов и предложил поучаствовать в работе по апробации использования робоплатформ ScratchDuino в учебной и внеурочной деятельности. Так у нас в школе появилось три опытных робоплатформы, о работе с которыми я и хочу рассказать, поскольку понравилось и мне, и ученикам. 

Причем рассказ буду вести с точки зрения учителя, который получил три коробки и привез их в школу, развернул краткую информационную брошюрку… И наступил на несколько граблей, прежде чем все заработало. Но когда все заработало, все стало легко и просто. Вот и хочется рассказать о процессе. Сразу скажу, что мой опыт реального использования роботов до этого ограничивался Lego WeDo (конструктор Lego с добавкой в виде нескольких датчиков, моторов и программной среды управления), которые внедряли в начальной школе, поэтому, возможно, мои восторги по поводу платформы покажутся смешными тем, кто уже давным-давно в теме. Не хочу, чтобы в статьях видели рекламность продукта, вероятно, существует масса и более навороченных конструкторов. Но считаю, что лишняя информация о существующих в России разработках никому не повредит, а кому-то позволит лучше сориентироваться в выборе платформ для своего учебного процесса.

Начнем.

Итак, робоплатформа ScrathDuino.

  • Официальный сайт продукта - http://scratchduino.ru/
  • Проект ведется в рамках работы группы компаний Мезон.Ру основанной весной 2000 года в Санкт-Петербурге http://www.mezon.ru/

Очень нужные ссылки))):

  • Файловое хранилище проекта: http://files.scratchduino.ru/ (все драйвера, адаптированная программа Scratchduino, прошивки, конструкторская документация по проекту и т.д., чуть позже буду писать о них)
  • Группа Вконтакте - http://vk.com/scratchduino (очень полезный ресурс - новости, информация о проекте и мероприятиях, видеоотчеты и мастер-классы и другая информация)

Краткое описание 

Как пишут разработчики (http://www.mezon.ru/news/473): «OpenSource проект ScratchDuino позволяет научить школьников буквально за полчаса запрограммировать своего робота в визуальной среде программирования Scratch (в GNU/Linux, Windows или MacOS), а старшеклассников и студентов - паять, изготавливать печатные платы, корпуса и самостоятельно производить роботов на базе Arduino. ScratchDuino - это один из лучших в мире проектов в области образовательной робототехники, разработанный в России, что подтверждают победы в международных конкурсах Google RISE 2013, Finlanding-2014 и Google RISE 2014».

Меня же в первую очередь заинтересовала возможность продолжить работу с Scratch (который уже показывал в 5 классе) в новом ракурсе – перенося управление с виртуального на реальный объект. На уровне 5 класса мы не собирались ничего паять или собирать платы Arduino самостоятельно, поэтому тот факт, что набор представляет собой удобную крупномодульную конструкцию, я записал в плюс системе. Опять же, удачная находка разработчиков – крепеж датчиков на магнитные сцепления-контакты: удобно, быстро, безопасно.

Состав набора 

Теперь вернемся к моему первому знакомству с набором. В моих руках коробка с роботом.

Распаковываем. Набор включает диск с ПО, информационную брошюру (краткий курс, первые шаги), гарантийные талоны и собственно робота.

Сам робот разложен по пакетикам. Платформа с моторами. Управляющий модуль (соединяется «втыканием» в платформу, есть защита от дурака). 
Набор датчиков:

  1. Два датчика света (фотодатчики).
  2. Два датчика цвета (линии).
  3. Два контактных датчика касания.
  4. 3-х сторонний ИК датчик расстояния.

Плюс к этому в наборе есть расширение для использования питания от батареек (крона или 4 пальчиковые батареи), провод USB для управления роботом с ПК и блютуз адаптер для беспроводного управления (вот как раз для этого случая и нужны батарейки, если платформа связана с ПК по USB проводу, то доп.питания не требуется, хватает получаемого от USB разъема)

Установка ПО

Естественно, первым делом хочется посмотреть, как будет выглядеть все это в сборе, поэтому собираем платформу (одним движением) и готовим USB подключение. Сегодня говорим о подключении под Microsoft Windows XP, Vista, 7 (8-ку не пробовал, про Linux чуть позже). Шаги проговариваю, т.к. в той брошюре, что была в моем варианте, была несколько устаревшая информация и большей части описываемых там пунктов просто не требуется (например, заливать прошивку Arduino на платформу), часть ссылок на ftp сервера Mandriva вообще неактуальны, их надо бы уже заменить на http://files.scratchduino.ru/. Думаю, разработчики быстро исправят ситуацию с текстом, но, поскольку сам проделал кучу лишних движений, попробую избавить от них следующих экспериментаторов.

Подключаем к ПК 

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

 

Показываем путь к драйверам. Потребуется диск, идущий в комплекте с роботом, там путь будет выглядеть следующим образом (на CD диске - windows\drivers).

 

 

Идет установка драйвера Arduino Uno, по ходу которой, возможно, придется согласиться с установкой драйверов, не имеющих требуемой цифровой подписи (если такая опция у Вас включена). В некоторых версиях операционных системах Windows, при определенных настройках системы, окно автоматической установки может не появиться. Тогда, после подключения кабеля, открываем Диспетчер устройств, ищем там порты (Com и LPT). Находим открытый порт «Arduino Uno (Com xx)» (xx- номер порта), щелкаем по этой строчке правой клавишей и выбираем – Обновить драйвер, показывая все ту же папку с драйверами. После установки драйверов потребуется установить измененную версию Scratch от разработчиков комплекта. Это, пожалуй, можно отнести к минусам комплекта, но реализовать управление всеми датчиками стандартными средствами Scratch, насколько понимаю, не удалось, потребовалось некоторое расширение функционала. Специальная версия Scratchduino версии 0,3 лежит на диске сопровождения и на файловом архиве проекта http://files.scratchduino.ru/Software/Wind...cratchduino.exe.

 

После установки появляется программная группа Scratchduino и ярлык новой программы.

 

 

Все, система готова к работе. Почти))) Потребуется определить порт управления роботом и написать хотя бы простую программу для управления, чтобы увидеть, как Ваш робот послушно выполняет команды. Обо всем этом – в следующем репортаже.


.

ScratchDuino. Робоплатформа на СПО. Первый запуск

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

Мы закончили на том, что установка драйверов Arduino Uno уже произошла. Сразу отмечу, что при подключении к тому же ПК другого робота может вновь возникнуть окно установки нового оборудования, но уже не потребуется указывать месторасположение драйверов, в системе они уже есть. Так что останется только выбрать Автоматическую установку и, в некоторых случаях, согласиться с установкой неподписанного драйвера. Все, устройство зарегистрируется в системе. В моем варианте я просто записал за определенными компьютерами пронумерованные роботокомплекты, чтобы потом не делать лишних движений при подключении роботов учащимися.

Итак, начнем с позиции: робот подключен к ПК по USB кабелю, драйвера и программа Scratchduino версии 0,3 (на текущий момент) установлены.

1. Стоит заранее определить порт, к которому подключен робот, его потребуется указывать в Scratchduino. Для определения порта можно воспользоваться несколькими вариантами решения:[/b]

1 вариантИдем в Диспетчер устройств Windows и смотрим на группу Порты COM и LPTв моем случае Arduino Uno – порт COM7. Запомним.

 

2 вариант: Используем open-source Arduino Software (IDE), свежую версию которой можно скачать с официальной страницы. На текущий момент это версия 1.6.1 Ссылка на страницу загрузки - http://arduino.cc/en/Main/Donate, можно выбирать просто загрузку программы JUST DOWNLOAD, или поддержать разработчиков финансово, пожертвовав средства на развитие ПО. Прямая ссылка на загрузку версии 1.6.1. программы - http://downloads.arduino.cc/arduino-1.6.1-windows.exe. При установке программы можно оставить настройки по умолчанию, оставив все галочки настроек. Возможно, потребуется несколько раз согласится с установкой неподписанных драйверов.

В принципе, Arduino стоит поставить. Во-первых, просто интересно))). Во-вторых, рано или поздно разработчики Робоплатформы выпустят новую прошивку для робота и ее захочется «залить» на устройство, или мы решим сами внести какие-то изменения в функционал... Тут-то как раз Arduino и потребуется обязательно (на первых порах можно использовать ту прошивку, которая уже зашита в устройство, но посматривать на обновления в http://files.scratchduino.ru/firmware/ стоит). Впрочем, этому процессу мы еще уделим внимание. А сейчас «прикладное» применение программы, позволяющее быстро определить порт подключения робота без поиска Диспетчера устройств

Запускаем Arduino, идем в меню Инструменты – Порт, смотрим последний добавившийся порт, в моем случае COM7 (Arduino Uno). В принципе, в некоторых случаях, когда было непонятно, установилась система или нет, а подпись в скобках отсутствовала (может, это «фишка» новой версии?))), я просто вынимал шнур USB, смотрел, что осталось в меню Порты, потом вставлял шнур и смотрел, добавился ли новый и какой. 

 

Каким бы способом мы не воспользовались, но порт мы выяснили. Если теперь с этим компьютером будет работать именно этот робокомплект, можно просто записать порт на коробке робота, чтобы больше не выяснять. Пора делом заниматься. 

2. Робот подключен, порт помним. Запускаем Scratchduino (как помним, мы его установили. Ярлык – Scratchduino Robot). 

Интерфейс почти знакомый, если вы работали с Scratch, разве что персонаж другой сделан основным.

Но нас интересует другое. Идем в группу Сенсоры, правой кнопкой вызываем контекстное меню команды Значение сенсора, или Сенсор, выбираем – показать данныеScratchBoard, вызывая табло отображения значений аналоговых сенсоров (см.рисунок).

 

В окне программы появляется требуемое табло. Щелкаем по нему правой кнопкой мыши и выбираем команду – выбрать серийный/USB порт.

 

 

Выбираем наш порт (у меня это COM7).

 

Если все в порядке, то показания Button изменятся с 0 на false (потом могут на true, все руки не доходят выяснить, за что отвечает эта позиция, пока не требовалось).

Все, робот готов к восприятию управляющих кодов.

Попробуем для начала написать простую программу для ручного управления мотоприводом системы.

3. Первая программа. Ручное управление.

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

Воспользуемся двумя командами группы Контроль и одной – из группы Движение (ищем в конце списка команд группы, находим Мотор откл). Думаю, по внешнему виду программы особо комментариев не требуется.

Теперь создадим блок управления движением вперед при нажатии кнопки Вверх.

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

Пишем новый кусок программы.


Время работы мотора стоит поменять на меньшее, чем 1 секунда по умолчанию, у меня – 0.2 c. Это, опять же, из соображения безопасности. Ведь у нас задумка – пока нажимаем – едет. Если же после отпускания клавиши робот еще будет ехать целую секунду… может и до края стола доехать)))

Проверяем, нажимаем клавишу Стрелка Вверх на клавиатуре, убеждаемся, что робот едет, испытываем чувство удовлетворения (я бы сказал восторга, но это уж как у кого, у меня точно было)))).

Пишем (проще создавать дубли уже написанного блока через контекстное меню) остальные блоки управления, не забывая менять клавиши управления и направления движения мотора (см. рисунок).

Получаем что-то в таком духе:

Все, можно кататься в свое удовольствие. Если же что-то пойдет не так (робот покатился по своим делам), не забываем нажимать на Пробел, останавливая все процессы.

Пожалуй, на сегодня все. В следующий раз начнем освоение датчиков и процессов калибровки. Удачи!

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

 


.

ScratchDuino. Робоплатформа на СПО. Соединение по Bluetooth

Продолжим.
Мы осмотрели набор робоплатформы, установили ПО и научили робота ездить, управляя им по кабелю USB. Но намного интереснее управлять роботом, не будучи связанным с ним кабелем, поэтому сегодня мы рассмотрим второй вариант подключения робоплатформы - по Bluetooth.


Несколько раз встречался с упоминанием о том, что подключение ScratchDuino по bluetooth вызывает проблемы. Поэтому, естественно, уже на первых порах использования мы попробовали и этот вариант. Могу сказать, что проблемы действительно есть. И они "плавающие", т.е. на разном оборудовании по разному приходится их решать. Радует, что сам робот и его ПО обычно были не виноваты, чаще всего виной отсутствию соединения были настройки брандмауэров, систем защиты и Bluetooth драйверы конкретных компьютеров.

Опять же порадовало, что в моем основном кабинете обошлось вообще без проблем, все подключается и работает сразу. В данном случае мы использовали Bluetooth-адаптеры самих учебных компьютеров, хотя в комплект к робоплатформе входят и USB-Bluetooth адаптеры, для вариантов, когда таковые в ПК отсутствуют.

Итак, первое, что надо сделать, это перевернуть робота вверх днищем и переключить джамперы управления на вариант управления по Bluetooth. Там всего два варианта подключения - Bluetooth или USB, оба варианта изображены на картинке рядом с джамперами и подписаны, так что не ошибиться.

Второе - подключить батарею питания. Есть специальные адаптеры в комплекте - либо 4 пальчиковых АА, либо "Крона". Единственное, что смутило - в варианте довольно емких аккумуляторов собранный комплект в отведенный для него паз не влезает))). Так что пришлось ему ездить просто стоя на платформе. А уж если резинкой прихватить - вообще красота. Но вопрос к разработчикам остается, прорезь для блока стоит увеличить, место позволяет.
Чуть позже, в комментариях, приложу фотографии и джамперов и батареи питания, только что отдал роботов для использования завтра на конференции))).

Далее, все довольно тривиально. Проходим обычную процедуру добавления Bluetooth устройства. Обычно достаточно щелкнуть правой кнопкой по значку Bluetooth в трее и выбрать "Добавить устройство".

Указываем, что устройство готово к обнаружению.

После успешного (надеюсь) поиска и нахождения нашего робота - указываем его в списке найденного оборудования.

На следующем шаге выбираем указание ключа (вот об этом в руководстве не написано, а стоило бы, а то пришлось догадываться) и вбиваем 1234 (попробовал стандартный код устройств, подошло). Ждем соединения.

Все, мастер подсоединения заканчивает работу, заодно любезно указав порты исходящего и входящего соединения. Запоминаем исходящий, у меня это COM 9, именно его мы и укажем потом в ScratchDuino как порт управления

Теперь роботом можно управлять дистанционно, что явно ему на пользу. Можно устраивать марафон роботов на ручном управлении. Да и потом, с датчиками и автоматикой, намного интереснее именно такой режим движения, все же кабель не только сильно ограничивает ареал обитания робота, но и слегка смещает его движение, особенно мешает при работе с датчиками линии. Но об этом позже.

Пока же покажу, как выглядит управление по Bluetooth в маленьком видеоролике.
Ну а то, что робот в конце ролика попал в затруднительное положение - так нечего было со стола съезжать. Чтобы избежать такого фиаско в будущем, в следующий раз поставим датчик и научим робота останавливаться "перед пропастью", даже если роботехник замечтался и не заметил проблему.


.

ScratchDuino. Робоплатформа на СПО. Датчик света


Мы осмотрели набор робоплатформы, установили ПО и научили робота ездить, управляя им по кабелю USB и Bluetooth. Сегодня переходим собственно к тому, для чего роботы и предназначены в первую очередь – написанию программ управления с использованием обратной связи от датчиков. И первый наш датчик – датчик света. Долго колебался между датчиком касания и датчиком света. Первый логичнее для начала, всего два показания, но по практике (а пробовал и так, и так) – лучше всего на первой стадии осваивается датчик света, эмоциональнее принимается, дает возможность сразу поговорить о калибровке. Так что теперь я с него начинаю знакомство с датчиками робота. 

Итак: датчик света.

Для начала немножко повторим предыдущие занятия:

  • Подключаем робота к ПК (для простоты сегодня использую кабель).
  • Выясняем порт подключения (например: Диспетчер устройств – Com порты, у меня – 11-ый. То же самое можно сделать и с помощью Ардуино).
  • Включаем ScratchDuino робота, выпускаем ScratchBoard для показаний датчиков (в Сенсорах, правой кнопкой – контекстное меню команд Аналог – Значение сенсора – Показать данные ScratchBoard. Выбираем свой порт, 11-ый, если значение Button изменилось, то все в порядке, можно управлять системой).

Эти операции все ученики делают на удивление быстро, в принципе Com порт можно не определять, если робот тот же, но почему бы не закрепить умения и знания?

Теперь небольшая часть теории и практики, в ходе которой мы учимся устанавливать датчик и проводить его калибровку.

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

Смотрим на информационную панель – наш датчик имеет название Аналог 3 и показывает в текущий момент значение 80.

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

  • Пусть робот начинает движение вперед только при условии, что свет в аудитории включен. Тогда надо выяснить, какие показания при выключенном свете и сделать зазор на возможное отклонение интенсивности света из окон и т.д.
  • Пусть робот прекращает движение, если его накрыть книжкой. Соответственно нужны измерения показаний при накрытии.
  • Пусть робот движется к смартфону, с которого на него посветили фонариком… (это уже интересно, сразу в голове возникает усложненное задание, но к нему – позже)))) Соответственно снимать данные нужно уже при включенном и выключенном фонарике.

Оставим второе для самостоятельной реализации учащимися, вместе сделаем первое, возможно, подумаем и над третьим вариантом задания.

Проводим мероприятия по калибровке:

В комнате без верхнего света: 57

В ходе выяснения условий движения и добавочных экспериментов выясняем, что освещенность датчика без верхнего света варьируется от 50 до 68, в зависимости от направления движения. С верхним так же показания разняться. Выбираем 70, как нижний порог освещенности, при которой можно двигаться. Пишем программу управления. Пока совсем простую – движение вперед при условии, что верхний свет включен.

При написании используем операторы больше/меньше, значения сенсора, управляющий модуль «Всегда-если». Не забываем про программу экстренной остановки, на случай «если что-то пойдет не так»))

Проверяем в работе нашу программу.

Далее все обычно проходит просто и весело.

Учащиеся с удовольствием реализуют управление роботом с помощью фонарика смартфона. С этой части легко перетекаем в вариант использования двух датчиков (впереди и сзади), а далее прямо таки поле для маленьких «проектов» - заданий.

Примеры заданий (придуманы учащимися):

  • Перетягивание светового каната (светят с двух сторон смартфонами с равного расстояния, у кого сильнее поток, туда робот и едет. Требует двух датчиков).
  • «Экстрасенс» (подносишь руку к роботу, не касаясь, он едет к руке, убираешь - останавливается. На самом деле ты просто слегка перекрываешь поток света.

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

Понятно, что потребуется два датчика. Далее идет калибровка и выяснение, можем ли мы использовать одинаковые уровни сигнала для управления (сложнее, если датчики будут показывать разные значения при одинаковой освещенности, но это – отдельное задание, мы такое тоже делали, благо, есть и такая комбинация платформ и датчиков). В нашем случае все в порядке, датчики показывают практически одинаковое значение при одинаковой освещенности, так что можно сравнивать их значения между собой. Интересно, что эта мысль (а можно ли использовать "больше" и "меньше" не только применительно к цифрам, но и к команде "Значения сенсора" второго датчика также меня порадовала))).

Получилось нечто в духе:

Причем интересно, что сначала ученик пытался сделать вариант с поворотами, если не равны показания, и с движением вперед, если равны. Но практика показала, что при вышеприведенной вариации движение проходит быстрее, т.к. вариант равенства крайне редок и даже при 0,1 c робот может проскакивать это положение. Для наших условий такой точности движения оказалось вполне достаточно.

Единственно, когда робот таки достигает смартфон, он в него продолжает упираться, урча мотором. И тут мы в ходе обсуждения решаем, что как раз для решения этой задачи нам и понадобиться датчик касания. И воодушевленные надеждой на следующую встречу – расходимся)))

Интересно – все вышеописанные задачи решаются пятиклассниками в ходе одного урока.

Из вариаций заданий – «скромный робот» (отворачивается от света, сложнее – ищет положение, при котором освещенность датчика минимальна).

Другие задания ученики сами предложат))) Будет что интересное – пишите в обсуждение, с удовольствием применим у себя.


.

ScratchDuino. Робоплатформа на СПО. Датчик касания.

Продолжу описание комплекта ScratchDuino.Робоплатформа. Сегодня поговорим о датчиках касания. Их в комплекте два, по устройству - простой контактный выключатель, вынесенный на штанге.

Не знаю уже, была ли это задумка разработчиков, или случайность (если так - настоятельно рекомендую использовать этот факт уже осознанно))), но в наших комплектах попадались датчики и с (условно говоря) левоориентированным контактом, и с правым вариантом. После того, как мои комплекты несколько раз уезжали на всевозможные мастер-классы и демонстрации, комплектные датчики явно перемешались с другими и теперь уже не могу сказать точно, как идет комплектация, уточню у разработчиков. Почему заострил на этом внимание? Просто наличие двух разноориентированных контактов позволяет легко модернизировать возможности конструкции, что сразу и было продемонстрированно в том же 5 классе. Ну а поскольку пытливость ума и конструкторские навыки для нас на этой ступени обучения - главное, то такая возможность только приветствуется. Но об этом ниже. 

Итак, датчик касания, пожалуй самый простой из датчиков робоплатформы. По показаниям на ScratchBoard принимает всего два значения: "0" когда не нажат и "100" при нажатии. 
В большинстве случаев это действительно так. Но иногда значение ненажатого датчика плавают "0-1". Поэтому не удивляйтесь, что в предлагаемом внизу куске кода проверка идет на вариант "<3". Просто, чтобы не напарываться на такую ошибку. 

В силу простоты датчика и, по сути, отсутствия необходимости калибровки, именно с этого датчика часто начинаем цикл занятий по управлению с обратной связью. 
И здесь очень удобно отрабатывать простые программы-задания:
- "обнаружить препятствие" / робот должен доехать до препятствия и остановится, когда сработает датчик.
Варианты расширения: 
-- доехать, при касании отъехать на 20 (приблизительно) сантиметров - заодно и со временем движения и проходимым путем разберемся.
-- доехать, коснуться, отъехать и развернутся на 90 градусов - опять же, время работы двигателя для поворота, как отдельная учебныя задача.

- "объехать препятствие" / робот должен доехать до препятствия и затем предпринять ряд действий по его объезду. Препятствие предусматривается в виде коробки. С точки зрения учебной здесь есть интересный момент, надо продумать, насколько надо отъехать, как двигаться дальше, проверяя, не закончилось ли препятствие, чтобы не врезаться боком и т.д.

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

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

Творческие задачи-проекты.
Даже на уровне использования датчиков касания такие проекты вполне возможны.
Например, тот же проект "Находчивые космонавты", который я описывал в рабочей программе, мы вначале делали на датчиках касания. Вводная - космонавты не могут попасть внутрь транспорта, все, что есть - датчики касания на корпусе. Управлять с центра по телеметрии - нельзя, не успеют среагировать на появление опасности. Надо написать программу, позволяющую космонавтам управлять транспортом. При этом опять же разные уровни сложности:
- стандартное управление (влево, вправо, стоп, вперед). Довольно интересная задача с точки зрения алгоритма управления. С ней большинство справляется.

- полное управление (все то же + назад). А вот тут есть вопросы)))) Я даже не буду предлагать решения по этим двум вариантам. Первое довольно просто и незачем детям в сети находить готовый вариант, а второе... Ну мне действительно интересно, может кто-нибудь из читателей предложит свой вариант реализации. Так что пишите в комментарии, пообсуждаем, может какой новый вариант придумаем)

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

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

Пока же покажу простую реализацию бампера: кусок плотной бумаги, крепится на тонкий скотч (как оказалось, скотч не прилип к переключателю, получились удобные кармашки, так что он снимается и одевается). В данном случае бампер делался под проект "кладовщик", так что крепится к двум датчикам. Задача робота - развернутся к предмету и толкать его по прямой, подруливая при исчезновении сигнала на одном из датчиков.
Фото бампера:

Пример программы:

Download
Сама программа (для пробы)
2dat_t.zip
Compressed Archive in ZIP Format 40.2 KB

Видеосюжет, как работает:


.

ScratchDuino. Робоплатформа на СПО. Датчик линии

Продолжим описание датчиков, входящих в стандартный набор робоплатформы ScratchDuino. Датчик линии - пожалуй, самый популярный датчик в робототехнике. На его использовании основано множество учебных заданий, а также многочисленные соревнования, в ходе которых робот должен проехать по какой-либо сложной траектории, миновать или свернуть на определенном перекрестке и т.д. Датчик в ScratchDuino имеет простую конструкцию, состоит из пары элементов: излучателя и приёмника инфракрасных лучей. 

По использованию датчиков - все как и с ранее описанными датчиками - сначала калибровка для условий задачи.
Например, одной из первых используется задача обнаружения края (листа, стола и т.д.) с вариантами: остановиться, заехать на середину (в случае листа), отъехать так, чтобы датчик остановился над краем и т.д. В этом случае нам придется снять предварительно показания датчика для случаев движения над столом, за столом, над листом и т.п.

Можно использовать один датчик, или пару, в зависимости от заданий.

Примеры заданий

1. Обнаружение края белого листа.
На столе лежит лист белой бумаги. Робот должен двигаться по столу в сторону листа до тех пор, пока датчик линии не будет находиться над белым листом. Тогда робот должен остановиться и отъехать назад так, чтобы датчик оказался над краем листа, при этом компьютер должен издать звук «computer beeps2» (для разнообразия))). Запуск на исполнение – клавишей «Стрелка вверх».

Звуки в Scratch можно выбирать из готовых библиотек или записывать самим. В данном случае надо добавить звук «computer beeps2». Напомню, что для этого надо зайти на вкладку «Звуки» и выбрать из библиотеки нужный звук.

Пример одного из решений (для этого и последующих - данные для датчиков нужно использовать ВАШИ, полученные при калибровке) :

2. Движение вдоль линии, используя один датчик линии.

3. Движение вдоль линии, используя два датчика линии.

4. Движение по линии с перекрестками. 

Проезд перекрестков - творческое задание, которое можно решать по разному. Например, при обнаружении перекрестка (два датчика показывают черный цвет) можно задавать некоторый временной интервал движения вперед по курсу. И т.д.

Пример одного из решений, которое было предложено:

Правда, мы уже нашли более интересное, правильное и простое решение. Но надо же оставить и для новых исследователей поле для деятельности).

5. Остановка или поворот на определенном перекрестке.
Целый цикл заданий. При этом интересно, что можно использовать очень разные варианты решения - вводить переменные или использовать цикл Повторить N раз....

Решения не привожу. Если понадобится - выложу. 

****


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

Базовая секция поля для ScratchDuino, для использования на соревнованиях и тренировках в номинации «Траектория», представляет собой квадрат размером 300×300 мм.

Изменение ширины линии от 25 до 50 мм влияет на скорость прохождения трассы. На турнирах принимается во внимание как факт прохождения всей трассы, так и время, затрачиваемое на путь. Варьировать сложность трассы можно комбинацией секций. Для тренировок можно распечатать эти секции на чёрно-белом принтере и склеить в нужной последовательности. Можно даже нарисовать траекторию на листе ватмана и раскрасить ее черной тушью или фломастером. 
Очень интересный вариант - создание трассы на квадратах ДСП или фанеры, на которых трасса нанесена распылителем (по подготовленным трафаретам). Такая трасса легко собирается и разбирается, остается ровной, в отличие от простых листов бумаги. 

Мы в кабинете чаще используем трассовые элементы, просто напечатанные на листах А4. Они раскладываются в нужной последовательности с небольшим перекрытием по ходу движения робота. 

Для желающих выкладываю набор в виде doc файлов с элементами трассы. Только посмотрите, чтобы ширина трассы была одинаковой (я печатаю из векторного формата xar, но в силу его малой распространенности не выкладываю, перевел в jpg и вставил в doc)

Download
trassa.zip
Compressed Archive in ZIP Format 124.9 KB
Download
И второй вариант - сами рисунки в jpg
trassa_jpg.zip
Compressed Archive in ZIP Format 141.2 KB

.

ScratchDuino -2015. Новости проекта

Добрый день! Ну вот, заканчивается череда конкурсов и конференций, можно и работой заняться)))
Итак, я продолжаю серию статей о робоплатформе ScratchDuino.
Напомню, что именно эта платформа была выбрана для апробации в моей школе, и тому было несколько причин:
1. Свободная аппаратная основа Arduino (но таких уже много).
2. Крупноблочная конструкция в прочных пластиковых корпусах (вот это уже новое и для школы - очень важное преимущество).
3. Программируется с помощью Scratch (несколько доработанный вариант - ScratchDuino), хотя можно программировать и с помощью других сред, например, Arduino и визуального плагина ArduBlock и др.

За время апробации мы выявили ряд достоинств и недостатков платформы, но, что приятно, с недостатками разработчики упорно и достаточно успешно борются, и нам приятно, что мы принимаем активное участие в этом процессе. Что можно также отметить - даже в исходном виде платформа вполне успешно используется в учебной работе, доработанный же вариант должен стать еще интереснее.
И сегодня хочу рассказать о тех новшествах, которые либо уже произошли, либо ожидаются в ближайшем будущем.

Из тех, что уже "случились", первым хотелось бы отметить использование для работы с платформой новой версии ScratchDuino 2.0 

ScratchDuino 2.0

Главное! Посмотрите под полем демонстрации - теперь видно сразу два блока показаний: робоплатформа и лаборатория. Мы, наконец-то, получили возможность одновременно подключать к компьютеру два устройства - робоплатформу и лабораторию, и использовать для управления сигналы со всех датчиков. Например, делать из лаборатории кнопочный пульт управления роботом, или использовать сенсоры лаборатории для отдачи приказов робоплатформе. Вот теперь комплект "Лаборатория + робоплатформа" заиграл по-новому.

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

Справа от кнопки "Поиск новых устройств" рекомендую снять флажок "Auto", иначе много ложных срабатываний отрывает от работы.
Почему автоопределение хорошо? Просто раньше приходилось объяснять, как определить порт подключения, что такое порт и т.д. Само по себе это неплохо, и мы и сейчас иногда практикуем запуск ScratchDuino 1.4 как раз с этой целью, но каждый раз все это определять и подключать... неудобно. Еще из рекомендаций - подключая робоплатформу, снимите с нее датчики, чтобы случайно как лаборатория не определилась))).

Так, еще из вкусного: если во время экспериментов с Arduino IDE или ArduBlock вы (или до вас) записали свои прошивки в память робота, то для возвращения нужной для работы со ScratchDuino конфигурации теперь можно просто нажать кнопочку "Перепрошить" (правда в таком случае все же придется посмотреть, на каком порту висит устройство).

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

Резюме: ScartchDuino 2.0 в целом - прорыв в практике использования комплекта робототехники. Невзирая на некоторые неудобства, Scratch 2.0 для пользователей, привыкших к 1.4 (например, несколько непривычные команды дублирования и т.д.), преимущества перетягивают.

Для всех желающих последние версии ScratchDuino 2.0 выложены на сайте разработчиков.

Второе интересное нововведение: загрузочная флешка в комплектах ScratchDuino. 
Суть проста и гениальна. В наборы ScratchDuino теперь вместо CD входит симпатичная флешка, на которой собраны все программы и драйверы для устройства под разные ОС. 

Но самое интересное - флешка загрузочная. Грузимся с нее и попадаем в LinuxMint, где уже все настроено для работы с платформой, присутствует и ScratchDuino и Arduino IDE, обещали и Ardublock туда же пристроить, чтобы самим не докладывать.

Так что и линукс посмотреть и поработать в среде можно, и ряд вопросов с демонстрациями снимается (например, если надо вести занятия в другом месте, на чужом оборудовании). Уже пробовали, результат порадовал - развернули 8 рабочих мест минут за 10.
Для тех, кто уже имеет наборы, ссылка на архивы флешек.
Далее пояснения авторов:
"Здесь два файла, один чисто живой образ 2Гб флэшки, второй для 8Гб флэшки, там сохраняются изменения, а также есть весь софт в виде инсталляторов.
В линуксе записывать так:
распаковывать программой gunzip:

$ gunzip файл

и запись:

$ dd if=имяфайла of=/dev/sdb bs=512

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

$ sudo sh -c 'zcat файл > /dev/sdb'

В windows нужно распаковать winrar и записать какой-нибудь утилитой.

И напоследок - обновились инструкции. Теперь они реально содержат правильные рекомендации по настройке устройств. Хотя и рассматривают примеры на основе Scratch 1.4.
Ну, да ничего, скоро и это исправится, сейчас работаем в этом направлении.

Перспективы

Что дальше... Насколько понимаю, сейчас идет работа по добавке к платформе энкодеров (датчиков углов) для возможности более точно задавать угол поворота, будут сменены ряд датчиков, надеюсь, действительно с целью улучшения производительности))) По крайней мере, инфракрасный датчик я бы точно заменил.... на три.... да чтоб крутить можно было бы.... Ладно, поживем, посмотрим, что будет.

От себя пожелал бы проекту дальнейшего развития, особенно улучшения в плане стабильности сборки. Понятно, что это достижимо только при больших партиях и заводских масштабах, но для школ это имеет огромное значение. Хотя и здесь отрадно, что разработчики понимают суть проблем и прилагают усилия для решения. Посмотрим, что получится. Т.к. идея - нравится и сейчас, спустя год апробации. Быстрая сборка, реальный исполнитель на замену "Черепашке", возможности дополнительных проектов... Так что - вперед, и только вперед!