"Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом."

воскресенье, 28 октября 2018 г.

ДРАКОН, СКРЕтЧ, С и виртуальная лаборотория

Виртуальная лаборатория Tinercad предоставляет возможность в режиме реального времени создавать виртуальную систему управления на микроконтроллера Arduino Uno, а так же позволяет создать текст программы для загрузки в реальный контроллер. Язык программирования скретч. Также возможно тестирование программы управления написанной на языке СИ в сторонних приложениях.
Рассмотрим сильные и слабые стороны способов создания пограммы управления.
Штатный способ - это разработка программы управления штатной системой разработки на языке скретч. Созданная программа автоматически получает: настройки задействованных портов контроллера, подключения сторонних библиотек для некоторого подключенного оборудования. Минус данного подхода заключается в сложности создания алгоритма управления максимально адаптированного для конкретных условий применения изделия, а также некоторыми ограничениями языка СКРЕТЧ.
Для разработки алгоритма управления очень хорошо подходит язык ДРАКОН, благодаря которому алгоритм управления становиться максимально понятным и который может легко показать пути оптимизации управления. Так же ДРАКОН позволяет разработанный алгоритм преобразовывать в текст программы управления, путём подключения к нему языка программирования.
Таким образом у нас есть возможность создавать свою программу управления и тестировать её на созданном в виртуальной лаборатории устройстве в режиме реального времени. Одним из недостатком этого метода видится необходимость обладание знаниями языка программирование С, а также структуры скрипта - программы загружаемый в контроллер.
 Есть ли возможность обойти некоторые выше указанные проблемы? Да они есть. Один из способов это создание электронной справочной системы команд управления портами контроллера(файл со схемами ГНОМ содержащий команды на языке СИ, как для заголовочной части скрипта, так и тела скрипта). Также возможно создать заголовочную часть скрипта в автоматическом режиме используя возможности виртуальной лаборатории, а так как для созданной схемы подключения устройств заголовочная часть неизменна, то ее можно скопировать и использовать в дракон-схемы в иконке МОДУЛЬ.

суббота, 20 октября 2018 г.

ДРАКОН, СКРЕТЧ и язык С

Для обучения основам управления рассмотрим робота регулирующего пешеходный переход через автомагистраль, оснащенного кроме раздельными светофорами, шлагбаумом для пешеходов ультрозвуковым дальномером для контроля пешеходного перехода.
Создав робота в виртуальной лаборатории мы получили возможность проверки алгоритма управления в режиме реального времени, а также возможность написать скрипт не только на языке С, но и с помощью языка скретч, что значительно упрощает написание полноценной программы управления.
Для достижения заданной цели мы сначала разработаем алгоритм управления, затем реализуем по возможности на языке скретч и только потом рассмотрим, как такую программу написать на языке программирования С. 
 Алгоритм для управления роботом светофором на Arduino Uno создадим используя ИС ДРАКОН в режиме создания алгоритма.
общая схема алгоритма
Используя полученный ранее алгоритм запишем его на вкладке КОД(режим блоки) с помощью встроенного редактора СКРЕТЧ. Проверив его робото-способность вспомним структуру скрипта.
из схемы видно, что написанный нами алгоритм управления помещается в тело скрипта, таким образом если мы будем вносить только программные изменения в робота то верхняя часть скрипта остается неизменной. Запомним. Протестировав виртуального робота получаем рабочую программу на скретч, которую можно сохранить в текстовом формате на языке С(файл *.ino). Собственно на  этом можно и остановиться, но в ходе тестирования выясняется, что скретч функционально ограничен и иногда нужную нам опцию в управлении роботом можно написать только на языке С в текстовом режиме. Для реализации этого начинания (срочное прерывание режима "переход" вне зависимости от показаний ультрозвукового датчика) перейдем в ИС ДРАКОН и внесем соответствующие изменения в дракон-схему. Осталось переписать программу в ручном режиме на С. Для этого:

  1. Добавим схему ГНОМ и выберем иконку МОДУЛЬ. 
  2. Перейдем в виртуальную лабораторию откроем вкладку код в режиме блок+текст. В крайне правом окне мы увидим нашу программу на языке С в текстовом режиме. Скопируем в буфер обмена текст от начала до void loop(). 
  3. Переходим в ИС ДРАКОН и устанавливаем режим "программирование". 
  4. Переходим к иконке модуль. Щелкаем мышкой в третий квадрат (считаем слева на право под иконкой) и вставляем из буфера обмена скопированну часть скрипта. 
  5. Далее с новой строчке вносим служебные строчки ИС ДРАКОН
      //Shema
      //
   6. В саму иконку модуль необходимо поместить:
      \swetoforka_C.ino
     затем ниже поместить копию ссылки из колонтитула         дракон-схемы.
   7. Начинаем работу с дракон-схемой. Третий квадрат  в колонтитуле дракон-схемы заполняется следующим образом:
      void loop()
      {
       //Shema
       //
      }
остальные третьи квадратики заполняются командами на языке С(список команд  файле "команды для ардуино.drt" папка ДРАКОН_С).
   8. Далее нажимаем клавишу F9 и если все правильно заполнено то получаем текстовик программы, который для проверки можно скопировать в виртуальную лабораторию(вкладка КОД режим текст) заменив им предыдущий текст скрипта.

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

среда, 17 октября 2018 г.

Графический язык для алгоритма на СКРИПТ

Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом. 
Для решения поставленных задач человечество создает искусственные языки. Основное их отличие от естественны языков на которых строится общение между людьми, это строго ограниченный запас слов(семантика) и очень строгие правила синтаксиса.  В графических искусственных языках это форма графического элемента, его расположение, способы связи одного элемента с другим. Какое либо своеволие в изображении элементов графического языка НЕДОПУСТИМО.
Для создания программ(скетчей), часто используются графические языки программирования, такие например как ДРАКОН, Sketchware,  Язык последовательных функциональных схем SFC (Sequential Function Chart),  App Inventor и так далее. 
Для нужд школьников был разработан простой графический язык(СКРИПТ) в виде вертикального графа задача которого организовать работу школьника в семействе программ Sketch 

иконки языка СКРИПТ


структура языка СКРИПТ

алгоритм записанный на языке СКРИПТ


вторник, 16 октября 2018 г.

Метод матрешки в алгоритме скретча

Алгоритм предложенный в образце оформления движения по периметру сцены конечно правильный, но слишком сложный для восприятия.  С другой стороны образец оформления алгоритма скретча наиболее подобно описывает порядок действий, однако большие алгоритмы будут теряться на фоне обилия графических элементов. Попробуем упростить восприятие алгоритма скретча на примере того же алгоритма скрипта движения по периметру сцены. Представим данный алгоритм в виде структуры из вставок, где каждая вставка бывший комментарий.
  Вставка изображается иконой "КОММЕНТАРИЙ" с последующий вертикальной чертой. Каждой вставке будет соответствовать структура действий для выполнения указанной задаче вставки




Таким образом мы разбили большой алгоритм на пять маленьких удобных для разработки 

понедельник, 15 октября 2018 г.

Методика создания алгоритма управления

Существуют два возможных направления создания робота, которые зависят от того существует ли робот для которого мы пишем алгоритм или по нашему алгоритму будет создан робот.
Рассмотрим оба направления:

  1. Если робот создан, то первое, что предстоит сделать это карту портов управляющего контроллера (что на какой порт подключено). Следующая задача - понять зачем и для чего предназначен робот, а затем как он должен действовать, то есть создать общий алгоритм его работы. Для примера рассмотрим робот светофор который регулирует переход через автомагистраль подобный тому что мы рассматривали ранее, но немного доработанный - добавлен шлагбаум на пути следования пешеходов, датчик дистанции, который контролирует наличие пешеходов на проезжей части и в светофор для пешеходов добавлен желтый сигнал "ЖДИТЕ". Общий алгоритм работы представим в виде дракон-схемы с основными иконками которой служит иконка "ВСТАВКА", возможно также использование иконки "РАЗВИЛКА". Затем, каждую иконку "ВСТАВКА" представляем, как отдельную дракон-схему состаящую из некоторого множества действий. При использовании некоторых устройств может понадобиться отдельная дракон-схема описывающая функцию данного устройства.  Таким образом мы пишем скретч для конкретного устройства.
  2. Этот вариант предполагает создание алгоритма без первичной привязки к контроллеру, таким же порядком как было показано выше, затем строится карта портов и к алгоритму привязывается контроллер, с распределенными портами согласно описания алгоритма.
Далее в обоих случаях переходим в режим программирования ИС ДРАКОН. Добавляем дракон-схему "setup", где настраиваем порты контроллера, добавляем схему "Гном" с иконой "МОДУЛЬ" (данная икона позволяет компилировать графические дракон-схемы в единый текстовой файл, то есть создавать текстовый исходник программы)




общая почта для виртуальной лаборатории

frf55021@gmail.com
&56agimn

суббота, 13 октября 2018 г.

Образец зачета

Задание предусматривает написание скретча для алгоритма движения спрайта по краям сцены против часовой стрелки с левого верхнего угла и окончанием движения в этой точке.
Для того чтобы написать алгоритм представим  в тетради сцену. В каждом углу поставим точки равно удалённые от краев сцены(одинаково для всех углов Пронумеруем точки с левого верхнего против часовой стрелки(по направлению движения спрайта). 
Допустим, что точка 1 имеет координаты 240-40=200 со знаком - (-200) , по оси Y 180-40=140 (140). Тогда координаты точки 2 будут по Х -200 по Y -140, точки 3 соответственно 240 и -140, точки 4  = 200 и 140. 
Чтобы перейти от точки 1 к точке 2 надо идти вниз 140-(-140)=280 шагов, от точки 2 к точке 3 соответственно 200-(-200)= 400 шагов, от точки 3 к точке 4 280, от точки 4 к точке 1 400 шагов.значит необходимо для решения задачи в стать в точку с координатами -200, 140. Повернуть в направлении 180(вниз) пройти 280 шагов, повернуть в направлении 90(на право), пройти 400 шагов, повернуть в направлении 0(вверх), пройти 280 шагов, повернуть в направлении  -90(на лево) и закончить движение.

В ТЕТРАДИ ОФОРМЛЯЕТСЯ СКРЕТЧ

РЕЗУЛЬТАТ  ЗАПИСИ СКРЕТЧА В СПРАЙТ

РЕЗУЛЬТАТ РАБОТЫ СКРЕТЧА



вторник, 9 октября 2018 г.

Условный оператор

Рассмотрим робота представленного ниже:
https://www.tinkercad.com/things/9cfDnom03TK
Данный робот предназначен для управления освещением с возможностью включения/выключения с двух разнесенных друг от выключателей. Например в начале и в конце длинного коридора, включив свет в одном конце, можно пройти весь коридор и выключить свет в другом конце.
При создании алгоритма управления воспользуемся алгеброй логики и представим устройство в виде черного ящика со входами А,В и выходом Х. Составим таблицу возможных состояний входов и желательного при этом выхода Х. При использовании этой таблицы выделяем строки соответствующие нашим устремлением(вторая и третья). Используя законы алгебры логики получаем логическое условие работы нашего устройства - высокий уровень сигнала на выходе будет только тогда, когда на входы будут поступать разно-уровневые  сигналы 0 и 1 
Роль черного ящика может выполнить условный оператор(if)(ЕСЛИ), где условием будет выступать полученное выше логическое уравнение.
Дракон-схема алгоритма устройства будет выглядеть так: 

в текстовой форме это будет выключить так

  1. НАЧАЛО
  2. записать уровень сигнала в порту 4 в переменную А
  3. записать уровень сигнала в порту 8 в переменную В
  4. ЕСЛИ (A&-B || -A&B) перейти к строке 7
  5. подать на порт 7 низкий уровень сигала(логический 0)
  6. перейти к строке 8
  7. подать на порт 7 высокий уровень сигала(логическую 1)
  8. КОНЕЦ
С учетом того что алгоритм помещается в тело скрипта(вечный цикл) состояние портов будет опрашиваться постоянно после выполнения алгоритма.

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

Алгоритм управления последней схемы разработаем самостоятельно в ИС ДРАКОН

Осмысленное задание для разработки проекта робота

Устройство должно контролировать:

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

Устройство должно обладать:

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

воскресенье, 7 октября 2018 г.

Правила ДРАКОНА

Необходимо написать алгоритм управления для робота управляющего пешеходным переходом через автомагистраль с помощью светофора

Попробуем представить алгоритм в виде блок-схемы или дракон-схемы
"блок-схема"
вариант "дракон-схемы"
но дракон схема может быть представлена и в другом режиме
сам алгоритм при этом помещается в тело скрипта(бесконечный цикл)
Более правильный вариант алгоритм с использованием иконки "ВСТАВКА"
Так же стоит обратить внимание на две команды в нашем алгоритме
А так алгоритм выглядит при моделировании процесса управления
Итак попробуем сформулировать правила дракон-схем:
  1. дракон схема должна быть интуитивно понятна и не перегружена иконками
  2. в дракон схеме приветствуются любые комментарии если они повышают понятность схемы
  3. любое дополнительное действие выносится на правый шампур, царская дорога только для предпочтительных действий (все что правее дополнительные действия, чем правее тем хуже)
  4. в дракон-схеме не приветствуются лишние ветвления и лишние лианы
  5. разработка алгоритма проводится в отключенном режиме программирование



суббота, 6 октября 2018 г.

Иконки ДРАКОН-схем

ДРАКОН - Дружелюбный Русский Алгоритмический язык Который Обеспечивает Наглядность

На заседаниях клуба робототехники мы будем составлять алгоритмы управления роботом а языке ДРАКОН. Возможность компиляции из графических дракон-схем текстового исходника программы в автоматическом режиме упростит создание программного обеспечения управления роботом и сделает его более наглядным. Ниже приводятся нужные нам для работы иконки языка ДРАКОН с некоторыми комментариями.

Вертикальная  линия соединяющая иконку заголовок и конец называется - "царской дорогой". Любая вертикальная линия проходящая через иконки дракон-схемы называется "шампуром". Линия соединяющая иконки и шампуры называется "лианой".

пятница, 5 октября 2018 г.

Задание на осмысление

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

среда, 3 октября 2018 г.

Этапы разработки робота


Вы читаете о роботах и программировании и думаете: «Было бы здорово сделать что-то подобное самому!» Теми, кем эта идея овладевает чуть больше просто мыслей смотрят кто и как делал своего робота. Читают статьи, смотрят видео. На картинках все понятно. В видеороликах тоже обычно показываются уже готовые продукты, а также сжато показываются технологии их изготовления. И вроде бы то же всё понятно: отпилил, прикрутил, припаял, соединил, запрограммировал вон на той программе вот этим кодом. 
Еще более увлечённые, выбрав интересный и, с первого взгляда, простой вариант, переходят к действию и, зачастую копируя, делают своего первого робота. Это волевое и очень значимое решение — главное начать хоть что-то сделать самому! В процессе изготовления оказывается куча технологических заковырок вплоть до того, что оказывается для заказа/покупки какой-то штукенции, надо узнать как она точно называется. А еще — разъёмы не паяются нормально — и как на видео в одно касание всё получается? Процесс создания нередко затягивается, но настойчивый начинающий робототехник так или иначе добивает результат до какого-то осмысленного первого запуска хотя бы «по прямой».
Потом, когда робот закончен, приходит понимание, почему все делается именно так и именно в такой последовательности. Процесс создания уже можно как-то осознать, формализовать, расписать.
Что значит «разработать»? Вот понятно, что такое «сделать робота» — берёшь и… делаешь! А «разработать» это как? 

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

по материалам https://habr.com/post/257983/



понедельник, 1 октября 2018 г.

Блок датчиков


 Датчик это устройство для создания обратной связи в процессе управления объектом.


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