- Машина Голдберга
- Машина Голдберга
- КОНЦЕПЦИЯ
- Этап №1 `План`
- Этап №2 `Сборка`
- Этап №3 `Запуск`
- Машина Голдберга в реальной жизни. Сложный ли алгоритм действия для сложного механизма?
- Вступление
- Машина Голдберга и возможности реализации
- Задача про освещённость
- Задача про механическую кнопку, которая убегает
- Вывод
Машина Голдберга
Машина Голдберга
Машина Голдберга
- СибКом 22 Ноября, 2019 42 Участника
КОНЦЕПЦИЯ
Машина Голдберга — это устройство, которое выполняет очень простое действие чрезвычайно сложным образом по «принципу домино», где каждый компонент цепи — является критически важным элементом, без которого вся цепь перестает работать. Машина Голдберга
Удивительно, но это напоминает работу современного предприятия, компании или концерна, где от взаимодействия каждого участника производственной цепочки, зависит общий успех и достижение единой цели.
Участникам тимбилдинга предстоит создать Машину Голдберга своими руками, запустить механизм и получить финальный результат.
Именно поэтому тимбилдинг `Машина Голдберга` — является идеальным форматом командообразующего мероприятия.
Этап №1 `План`
Цепная реакция осуществляется по следующей, достаточно понятной, технологии. Для начала все сотрудники делятся на команды механиков (от 5 до 15 человек), которым предстоит создать свой индивидуальный участок цепной реакции, под руководством ведущего команды, во главе с инструктором, направляющим ход игры в нужное русло. Каждая команда получает техническую документацию (рисунки, эскизы) с изображением оригинальной сборной конструкции.
Команды разрабатываю чертежи и обсуждают с соседними командами стратегию и тактику приема-передачи цепной реакции на своем ответственном участке.
Важно задействовать всех присутствующих, чтобы пробудить чувство единства и ответственности за общий результат.
Этап №2 `Сборка`
Верёвка, ведро, шар, лестница, бруски, крепежи и другой простой и функциональный реквизит будет использован в этой программе. Простые материалы превратятся в сложный механизм, который приведет к финальной цели – все, как в жизни и работе!
Далее, под руководством Инженеров, участники тимбилдинга приступают к постройке Машины Голдберга.
Каждая команда должна разработать свой участок цепи таким образом, что бы цепная реакция не только прошла по их участку, но и успешно перешла к соседней команде.
Этап №3 `Запуск`
Местом запуска столь необычного механизма может быть как обычный офис, куда привозится нужный реквизит, либо специализированная площадка (включая естественного происхождения на природе). Прогноз погоды вызывает сомнения? Тогда лучше выбрать крытые стационарные площадки, обеспечивающие полную защиту от ветра, дождя, холода.
По окончанию постройки команды имеют возможность проверить работоспособность своего участка и способы приема-передачи цепной реакции соседних команд. По окончанию проверки и тренировки Главный Механик производит запуск Машины Голдберга.
Победой будет являться прохождение цепной реакции по всему маршруту, где каждая из команд, работая сплочённо над 1 задачей, доводит мяч по лабиринтам `Машины Голдберга` до конца.
Машина Голдберга в реальной жизни. Сложный ли алгоритм действия для сложного механизма?
Внимание! Данная статья относится к механической/электрической машине Голдберга и алгоритмам её работы.
Я начал писать эту статью в виде заметок чтобы как-то упорядочить процесс продолжительного, но прерывистого, “мозгового штурма” и потому статья будет в некотором роде последовательным изложением идей и улучшений, которые были придуманы по ходу выстраивания алгоритма. К тому же, это лишь первая, можно сказать “теоретическая”, часть общего цикла разработки самой машины Голдберга (устройства, которое выполняет простое действие нетривиальным способом), а потому будет продолжена последующими статьями.
Надеюсь, статья окажется интересной и, возможно, полезной для каждого. Начнём.
Вступление
Начать я хотел бы коротким описанием того, как появилась сама идея и зачем вообще нужна именно машина Голдберга, а, собственно, и алгоритм её действия. Это лишь лирическое отступление, а потому может быть пропущено с последующим переходом сразу к разделу “Начало разработки”.
Зимним ноябрьским днём на физическом факультете КНУ им. Тараса Шевченко мы с другом решили “почему бы нам не сделать что-то полезное самим? Мы же физики, для нас не проблема придумать что-то невероятно крутое и сделать это. Всего два дня и готово”. Остаток той пары теории групп был потрачен на попытку придумать, что же мы будем делать.
“Цитируя великих”, можно сказать: “Отсюда, очевидно, следует…”, что не так всё просто даже с определением, чего же мы хотим сделать. В конце концов ответ был найден. Мы хотим включить свет. Но не просто включить его, а включить лишь когда станет темнеть. Вроде простая задача – тут и думать не надо. Достаточно загуглить двухстраничный How To и готово. Но ведь это не интересно нам. Мы хотим включать свет механически. То бишь, нам нужна рука для МКС, как у Говарда Воловица.
Постепенно задача расширялась и изменялась, неспешно переходя в “314 способов включить свет”. Варианты, которые мы рассматривали были постепенно откинуты в связи со сложностью выполнения и просто с невозможность договорённости между собой.
Неожиданно вспомнив своё детство, проведённое за различными играми-вариациями “The Incredible Machine”, я решил, что будет здорово сделать именно так. Сделать эффектный механизм, а не только полезный и сложный. Посему, добро пожаловать в мир машин Голдберга!
P.S.: Далее по тексту я буду называть наше творение роботом, а не машиной Голдберга для экономии ресурса клавиши Shift.
Машина Голдберга и возможности реализации
Машина Голдберга – устройство, которое сложным и совершенно нетривиальным методом выполняет простое действие. Подробнее про такие механизмы можно прочитать в Википедии, а потому я не буду останавливать внимание на исторической справке.
Такие машины можно условно поделить на два основных класса: одноразовые и постоянные. В первом случае, как следует из названия действие возможно выполнить лишь один раз, а дальнейшая работа механизма требует вмешательства извне. Во втором же случае возможен лишь механический износ, что влияет на выполнение действия несущественно и только в перспективе. Последний вариант, очевидно, существенно полезнее в жизни, особенно при достаточно регулярном выполнении цикла работы, а поскольку темнеет за окном и в комнате каждый день, то было бы совсем неплохо не “заводить” выключатель так часто.
Задача про освещённость
Предположим, источник освещает замкнутое пространство формы параллелепипеда размером с небольшую лабораторию через отверстие в одной из граней, замаскированное под окно. Определите зависимость средней освещённости от времени, если учесть, что время циклично освещённость.
Для решения подобной задачи построим некоторый алгоритм А.
Рис. 1. Простой алгоритм определения освещённости
Таким образом нам необходимо всего 2 шага для перехода к дальнейшим действиям:
1. Получить информацию
2. Проверить её
Но, если всё так просто, зачем вообще морочить себе голову? Потому алгоритм легко можно усложнить. Для начала воспользуемся исключительно полезным усложнением. К примеру, увеличением точности (алгоритм Б).
Рис. 2. Усложнённый алгоритм определения освещённости
1. Получение информации
2. Проверка
3. Запрос дополнительных данных, если 2 выполнен
4. Получение дополнительных данных
5. Проверка дополнительных данных
6. Продолжение работы
Благодаря усложнению алгоритма и получению дополнительных данных мы можем увеличить точность. К примеру, раз мы включаем свет, то освещённость увеличится, значит свет надо выключить? Боюсь, мы так зациклимся, а прохожие будут в недоумении, что за азбука Морзе доносится из окна.
Теперь осталось лишь придумать, каким образом механически всё усложнить. Что первое приходит в голову, когда мы задумываемся о свете? Не о белом свете, а о том полезном компоненте нашей жизни, который делает жизнь немного приятнее.
Не знаю, как у вас, но у меня в голове сразу же возникает сложнейшая схема из зеркал, линз, фильтров и поляризаторов, соответственно она нам и нужна. Но нет, мы не будем ничего прожигать. Или будем? Этот вопрос пока находится на рассмотрении, т.к. наш робот должен быть достаточно автономным.
Тем не менее, начать нужно с простого, иначе сложное у вас никогда не получится таким, как хочется и будет жить своей жизнью. Итак, 3 примера реализации простого алгоритма определения освещённости.
Рис. 3. Схемы разных реализаций простого алгоритма
I. Электричество и фотоэлемент
Одна из простейших реализаций. Берём, к примеру, фоторезистор (диод, транзистор и т.д.) у которого меняются электрические характеристики в зависимости от освещённости и подключаем к электрической цепи. В результате изменения освещённости изменится падение напряжения на таком резисторе.
II. Весы, давление, линза и вода (невыполнимый алгоритм)
Уже менее тривиальная реализация, к тому же требующая большой точности. Небольшое количество воды наливается в ёмкость на точных весах. Собирающая линза ставится так, чтобы поверхность воды была в фокусе. При достаточном световом потоке, вода станет испарятся чуть быстрее, чем в отсутствии оного что и должны измерить весы. К сожалению, это всё хорошо в теории, но на практике не выполнимо. Кроме того, запасы воды нужно будет регулярно пополнять с помощью дополнительного механизма либо вручную.
III. Линза, нитка, груз и таймер (трудно повторяемый)
Схема существенно результативнее предыдущей. При увеличении светового потока, нитка, находящаяся в фокусе линзы будет пережигаться быстрее, что и будет зафиксировано таймером. К сожалению, данный алгоритм требует дополнительный механизм, который выполнял бы полезную работу – поднимал груз и натягивал новую нитку (много и ещё больше раз в день).
Понятное дело, что подобных алгоритмов можно придумать уйму, однако точность каждого следующего вряд ли будет увеличиваться, что нам совершенно не нужно. Наша задача теперь усложнить самый точный из алгоритмов с системой проверки так, чтобы механизм стал немного ближе к “идеально сложному” роботу. Для себя я лично выбрал алгоритм I. Тем не менее, я не утверждаю, что он лучший из всех возможных. Перейдём к модификациям.
Наш усложнённый алгоритм подразумевает использование проверки полученного результата. А поскольку мы разрабатываем машину Голдберга, проверять идентичным способом, которым выполняется обычный сбор информации – не логично и не интересно. Попробуем несколько механических модификаций.
I.1. Рельсы и перемещение датчика
Ремарка. Для упрощения схемы перемещения будем считать, что в одну сторону перемещения всегда происходят под действием гравитации, а в обратную с помощью внешней силы (поезда, кто же в детстве не мечтал о железной дороге?).
После каждой успешной проверки будем перемещать датчик в другую точку и проверять освещённость там. Естественно, после выполнения, датчик необходимо возвращать в исходное положение.
I.2. Рельсы и стеклянный шар
Второй вариант использования рельс. После первой проверки в сторону датчика скатывается стеклянный шарик, изменяя этим освещённость датчика благодаря рассеиванию либо фокусировке света (в зависимости от взаимного положения датчика и шарика)
I.3. Поляризационный или частотный фильтр (цветной светофильтр)
Закрывая датчик фильтром можно определить источник света (солнечный рассеянный или свет от уже включённой лампы). Требует должного знания спектральных или поляризационных характеристик источника освещения (лампы). Закрывать датчик фильтром можно разными методами. К примеру, поворотом фильтра вокруг некоторой оси, перпендикулярной ему, либо опусканием фильтра ближе к сенсору.
“Где же здесь сложный механизм?” – спросите вы. На этом вопрос я могу легко ответить. Наш алгоритм не ограничивает схему физически или философски, то есть никак не ограничивает. Соответственно, что мешает нам учесть, что каждый элемент на блок-схеме – это целая отдельная схема?
Потому перейдём к следующей задаче.
Задача про механическую кнопку, которая убегает
Предположим, дана кнопка, которая постоянно перемещается в одномерном пространстве (перемещается вдоль произвольной, в общем случае, заданной линии). Как на неё нажать?
Зачем нам это нужно? Что бы было эффектнее. Что если кнопка включения света не стоит на месте? К примеру, она может перемещаться по круговой траектории. Рассмотрим схему с использованием специального рычага для нажимания на кнопку.
Рис. 4. Схема работы рычага
Рис. 5. Схема с перемещением кнопки вокруг рычага
Или же мы можем использовать не одну, а несколько кнопок. Тогда нам надо нажать на нужную. Вариант от обратного – рычаг перемещается, и мы должны успеть нажать на нужную кнопку в нужный момент.
Рис. 6. Схемы с перемещающимися кнопками и с перемещающимся рычагом
Однако, последние варианты можно использовать и для простой реализации разных функций механизма.
Алгоритм, выполняемый в простом случае, идентичный простому алгоритму для определения освещённости. В усложнённом же случае:
Рис. 7. Усложнённый алгоритм выполнения механического задания
Можно заметить, что усложнить алгоритм в данном случае для таких себе “мышц” робота не получится. Мы лишь можем увеличить количество шагов.
Нужно ли нам разветвление в алгоритме? Будет ли это полезно для реализации машины Голдберга? Если бы я сам только знал. Однако, механическая реализация существенно ограничивает количество возможных разветвлений алгоритмов, одновременно внося такую эффектность в выполнение сего алгоритма.
Вывод
Очевидно, что для реализации механической машины Голдберга нет необходимости в сложном алгоритме. Тем не менее это никак не влияет на само исполнение. Таким образом, машина Голдберга – идеальный представитель линейной, а соответственно и простейшей алгоритмической логики.