Программирование автономных систем. Из игры в реальный мир
В этом модуле мы попробуем использовать язык машин состояний, чтобы запрограммировать вполне реальную автономную систему. Для этого мы рассмотрим пример умной теплицы, которая выращивает отдельно взятую культуру, к примеру помидоры, без постоянного участия человека
Лидер Национальной киберфизической платформы «Берлога», президент Ассоциации кружков
Алексей Федосеев
Автономные системы вне игры
Умная теплица управляется контроллером, который, согласно программе, открывает форточки, включает вентиляторы, поливает почву и делает это все в зависимости от измеряемых параметров окружающей среды (день сейчас или ночь, какова температура, влажность и т. д.). Для этого контроллер необходимо запрограммировать так, чтобы он учитывал влияние реального мира на нашу систему.
В мире существует очень много объектов и процессов, которые мы, как инженеры, можем учитывать или не учитывать. К примеру, солнце дает свет, тепло, ультрафиолетовое излучение, связано с магнитными бурями и т. п. Для работы нашей системы будет достаточно одного единственного параметра солнца — уровня освещенности, и этот параметр мы будем использовать, чтобы определить время суток и запрограммировать соответствующую дневную и ночную работу системы.
Мы используем цифровую систему управления, поэтому любая измеряемая физическая величина должна преобразовываться в цифровое значение: бинарное (0 или 1), целое или дробное с определенной точностью. День или ночь — это бинарный параметр, а освещенность — непрерывная величина, поэтому система управления должна реагировать на достижения величиной заданного порога. Например, когда освещенность достигла 30 % от нормы, мы будем считать, что наступили сумерки, и система должна перейти в ночной режим работы. Наоборот, когда значение величины превосходит порог 30 % от нормы, система должна перейти в режим «День». Так разработчик системы моделирует реальность внутри программы управления.
Для управления умной теплицей была взята модель, включающая четыре параметра: освещенность, температуру воздуха внутри теплицы, влажность почвы и объем доступной для полива воды в бочке. На первых четырех графиках можно видеть изменения показаний соответствующих датчиков в течение суток. Ниже показаны графики результатов работы системы управления: режима работы вентилятора (включен/выключен), уровня открытия форточки (целиком, наполовину, закрыта), работы насоса и состояния индикатора, сигнализирующего о том, что вода в бочке заканчивается.
Эти графики хорошо показывают разницу между непрерывными и дискретными величинами. Освещенность и температура представляют собой непрерывные графики функций, тогда как режим работы вентилятора принимает только одно из двух возможных значений — дискретную величину. В работе системы управления учитываются и непрерывные, и дискретные величины. При работе цифровых систем приходится постоянно переводить непрерывные понятия в дискретные и наоборот.
Выше мы уже рассматривали пример с освещенностью: при достижении порога в 30 % от нормы система управления преобразует непрерывную величину в значение 0 или 1, ночь или день. Достижение порога в системе управления может быть связано сигналом, который в диаграмме машины состояний может быть представлен событием
В диаграмме машины состояний такой переход, связанный с достижением порогового значения, может соединять состояния «Ночь» и «День». Обратите внимание, что здесь используется событие таймера, по срабатыванию которого раз в 30 минут проверяется значение показателя освещенности, сравнивая его с пороговым значением.
Очень важный момент для программирования реальных систем заключается в связи между непрерывным управляемым процессом и программой, которая, работая в цифровом устройстве управления, всегда имеет дискретные состояния. На схеме представлен непрерывный процесс движения по плоскости. Для того чтобы изменить характер этого движения, его траекторию, нужно произвести воздействия. Воздействия показаны в виде векторов на траектории движения, а также на отдельном графике ниже — графике процесса управления движением, который включает отклонения вправо или влево в виде отдельных импульсов. График процесса управления также непрерывный, но принимает определенные положительные и отрицательные значения в моменты управляющих воздействий.
Работу такой системы управления можно представить в виде машины состояний, которая показана справа от графика. Отсутствие управляющих воздействий будет соответствовать состоянию «Продолжать», из которого можно перейти в состояния, связанные с поворотом направо и налево. Получается, что машина состояний представляет собой свернутый во времени процесс управления. И наоборот: при желании машину состояний можно развернуть во времени в виде процесса управления.
Таким образом, мы можем развернуть во времени машину состояний умной теплицы, представленную на схеме. Машина состояний начинает работу в состоянии «Ночь:Ожидание». Можно проследить, как меняются состояния во времени по мере возникновения событий на переходах между состояниями. Такой график изменения состояний или режимов работы системы во времени называют циклограммой. Например, циклограммы полета применяются в космической отрасли для описания управления аппаратом в течение периода его эксплуатации.
График смены состояний также можно сопоставить с графиками измеряемых параметров, которые мы рассматривали ранее. Можно увидеть, как принятие решений о смене состояний связано с достижением пороговых значений освещенности, температуры или влажности. Графики, показывающие работу вентилятора и других подсистем теплицы, также напрямую связаны со сменой состояний, ведь на входе и выходе из состояний в диаграмме указаны соответствующие команды
Теперь, когда мы разобрались в теории, попробуем решить задачу.
Продолжите во времени работу теплицы: что будет происходить с теплицей в следующие за первыми 24 часами? Ответьте на вопрос, закончится ли вода в баке за 60 часов ее работы? Если да, то в какое время? Когда загорится красный индикатор отсутствия воды в баке?
Задача
Этот модуль — самый сложный с точки зрения теории, в нем мы не только разбирались с реальным примером системы управления машиной состояний, но и различали непрерывные и дискретные модели, сопоставляли их при воссоздании процесса управления теплицей во времени. Надеемся, что изучение умной теплицы в теории сподвигнет вас создать и запрограммировать ее в реальности.
Комментарий для педагога
Данный модуль дает богатый материал для педагога с точки зрения изучения автономных систем и их управления с помощью машин состояний.
Вы можете воспользоваться инфографикой, которая объединяет все рассмотренные в модуле схемы, чтобы внимательно изучить работу теплицы или сформулировать на этом материале различные учебные задачи.
Рассмотрим три варианта использования материала об умной теплице:
  • Мы рассмотрели «прямую задачу" — о восстановлении работы теплицы после первых 24 часов работы и о том, когда закончится вода. Этот вариант хорош для начинающих, он позволяет погрузиться в реальность работы машины состояний, понять, как она функционирует во времени, и сопоставить значения измеряемых параметров с состоянием системы
  • Второй вариант — «обратная задача» — предполагает, что учащиеся не видят диаграмму машины состояний. В этом случае задача состоит в том, чтобы воссоздать диаграмму машины состояний, управляющей теплицей, располагая полным графиком измеряемых параметров и работы подсистем теплицы. Такая задача напоминает диагностику из модуля 10, в которой мы восстанавливали программу «Муравья», и дает возможность на другом материале проверить, способны ли учащиеся самостоятельно построить машину состояний, с какими трудностями они столкнутся при этом
  • Наконец, самый сложный вариант использования данного материала — моделирование при реализации собственного проекта теплицы. Прежде чем создавать какое-либо инженерное решение, всегда нужно его вначале представить, а зачастую и рассчитать. Наша схема теплицы, машина состояний и описание процесса ее работы — это хорошая модель для создания собственной теплицы. Машина состояний может быть легко перенесена в редактор программ (например, Cyberiada IDE), чтобы запрограммировать и прошить реальный контроллер Arduino, который будет управлять вашей умной теплицей. Таким образом, полностью разобравшись с моделью в теории, вам легче будет воплотить ее в реальность
Разный уровень сложности предложенных вариантов дает возможность педагогу на одном и том же примере реализовать несколько разных сценариев, двигаясь к программированию все более сложных реальных систем.

Запишитесь на курс, чтобы выполнять задания и получить сертификат!

Программирование автономных систем на примере игры «Берлога: Защита пасеки»
Курс о том, как с помощью простых инструментов научиться программировать поведение автономных агентов. Вы увидите, как игровые дроны подчиняются коду и как эти же принципы применимы к роботам в реальной жизни.
  • Что вы получите
    • 12 уроков с разбором заданий прямо в игре
    • Авторская подача: сложное программирование простым языком
    • Возможность осмыслить педагогические методики, применяемые в каждой теме
    • Свободное расписание: нет дедлайнов и сроков сдачи заданий
    • Все материалы доступны сразу, можно начать обучение в удобное время
    • Проверочные задания после каждого урока
    • Профессиональное видео и современная графика
    • Быстрая связь с техподдержкой
    • Сертификат о прохождении курса
  • Зачем
    • Научиться и научить программировать через игру
    • Освоить язык ПРИМС — инструмент для создания умных и понятных алгоритмов
    • Разобраться, как работают современные киберфизические системы
    • Научиться строить управление: от простых реакций до сложных сценариев поведения
    • Получить готовую методику проведения занятий: с пояснениями, примерами и игровыми задачами
    • Сделать первый шаг к проектной работе с настоящими роботами и автономными системами
Находясь на сайте, вы даете согласие на обработку файлов cookie. Это необходимо для более стабильной работы сайта
OK