суббота, 9 июля 2016 г.

4.5. Планирование

Урок: 4.5. Планирование

Транскрибация урока: Я скажу так: нельзя просто так взять и построить робота за исключением той ситуации, когда вы просто развлекаетесь, учитесь, экспериментируете, добавляете новые детали, пробуете, комбинируете по-разному и так далее. Но здесь есть существенный момент: вы не ставите цели и не планируете определенный результат. Когда же вы разрабатываете какой-то проект и ожидаете получить определенный результат, планирование неизбежно. Некоторые говорят: «Начнем, а там посмотрим». Но задумайтесь на секунду, как вы можете прийти к желаемому результату, когда вы не представляете, какие компоненты вам нужны, хватит ли вам вообще пинов на Arduino, например, достаточно ли будет питания вашей системе и так далее. Хотя бы из-за этого стоит задуматься. Приведу еще один пример, обратный: не так давно вернулся из лагеря, где подростки делали проекты на Arduino, и даже те ребята, которые немного подумали наперед, столкнулись с такими сложностями, как, например, в корпусе устройства мало места и на этапе отладки не получается доставать Arduino для заливки нового варианта скетча без полного разбора устройства. Естественно, когда такое множество манипуляций приходится осуществлять, на это уходит столько времени, что его в итоге не хватает. Или другой проект: парень строит отличного помощника сисадмина — робота-бубнера, который может научиться воспроизводить последовательность, которую вы ему прохлопаете, а также может в фоновом режиме звенеть с заданной амплитудой и частотой. Он построил корпус, он построил, реализовал один режим, он реализовал другой режим, и за день до того, когда результат нужно презентовать, он обнаружил, что два режима параллельно не стыкуются, и здесь нужно какое-то новое решение. Ну благо решение нашлось, но это происходило в режиме аврала. В мире существует множество подходов к проектированию, планированию. В каждой организации, которая занимается промышленным выпуском оборудования и программного обеспечения, приняты свои методологии и их комбинации. В разработке программного обеспечения многие придерживаются таких подходов, когда требования к конечному результату периодически уточняются, и за много проходов в итоге все реализуется. Мне больше импонирует подход, который проповедует мой знакомый, технический директор одной компании, которая занимается разработкой и внедрением очень масштабных аппаратно-программных систем. Этот подход заключается, в двух словах, в том, что к реализации системы они не приступают до тех пор, пока нету детального плана разработки. Детального настолько, что каждый исполнитель отчетливо представляет, каким образом реализуется его участок, то есть у него не уходит время на какие-то эксперименты, пробы, исследования, обучение — все это делается заранее. И стыковка этих участков опять же происходит успешно благодаря тому, что в плане это учтено и описано. Опыт этой компании показывает, что соотношение времени на планирование и разработку может соотноситься как, например, 3 к 1, то есть планирование занимает в 3 раза больше времени, чем непосредственно реализация. Но в итоге суммарно все время, затраченное на производство продукта, существенно, в том числе в разы, может быть меньше, чем в альтернативной ситуации, когда требования уточняются постепенно, и проект начинают реализовывать при наличии каких-то «белых» пятен. Когда вы дойдете до промышленной разработки в какой-то компании, вам нужно будет принять те обычаи и правила, которые в ней приняты. Но сейчас, когда мы учимся делать несложные устройства, я бы рекомендовал все равно воспользоваться как минимум двумя принципами из идеологии упомянутой мной компании. Первое: я считаю, что нельзя приступать к разработке, не сформулировав предельно конкретно результат, который должен быть достигнут. Иными словами, должно быть описано, каким образом мы проверим устройство и поймем, что оно выполняет те самые действия, ради которых оно было создано. Если у нас есть такое описание, на самом деле, нам не составит труда детализировать более мелкие фрагменты этого устройства: из общего описания будут следовать более частные до тех пор, пока это не будет описано настолько подробно, что можно просто взять и сделать. Второй момент, который, я считаю, важно иметь в виду — это то, что нельзя приступать к разработке, когда существуют какие-то «белые» пятна в том смысле, что мы можем не знать, какое решение мы применим для того или иного узла; или не знать, как именно он работает, каким образом его программировать, какое питание ему подавать — вот все нюансы, связанные с работой того или иного узла. Вообще, занимаясь с подростками в лагере, я каждый раз пропагандирую ценность планирования, и неизменно мы все убеждаемся в том, что тот, кто не поленился составить план, достигает результата быстрее, и результат обычно качественен. Давайте попробуем представить, что будет делать Поливалли, и что нам для этого потребуется. Я это буду зарисовывать на привычной нам схеме, но для начала нужна формулировка того, для чего проект реализуется.

Часть: Видео

Модуль: Как полить цветок из другого города

Описание модуля: После этой недели вы сможете соединять устройство с сетью, планировать его создание заранее, управлять мощной нагрузкой и давать правильное питание вашему созданию.

Курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

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

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

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

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

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

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

Программа:
  • Неделя 1 Один старый и много новых знакомых
  • Неделя 2 Контроллер изучает мир
  • Неделя 3 Цель обнаружена
  • Неделя 4 Как полить цветок из другого города
  • Неделя 5 Мобильный робот
  • Неделя 6 Как создать новый предмет за час
Преподаватель: Алексей Перепелкин (1), Дмитрий Савицкий (2)

Описание преподавателя: (1) Алексей Перепёлкин занимается развитием робототехники на базе ЛИОТ МФТИ. В 2012 году открыл для себя новое захватывающее чувство – когда устройство, которое сам построил и запрограммировал, работает. Свернул с финансовой дорожки и создал кружок робототехники для подростков. Готовил их к соревнованиям. Стал посещать конференции, а затем проводил мастер-классы для тех, кто тоже хочет организовать занятия. Совместно с коллегами в 2013 году разработал новые соревнования – Робопрофи – для конкурса Робот для жизни и провел их. В 2014 году впервые провел Arduino-номинацию на фестивале Робофест, а для российского финала Russian Robot Olympiad 2014 сделал творческую категорию. С тех пор эти соревнования стали регулярными. Летом 2014 провел двухнедельную мастерскую в детском лагере Никола-Ленивца, а затем преподавал в выездной школе, посвященной программированию и робототехнике, которую провели ABBYY и Яндекс. В 2015 году стал руководителем направления робототехники в GoTo Camp, выездных школах, где участники создали десятки проектов, от прототипов умных домов и операторских тележек до робота-бубниста и принтера для незрячих. В 2014 году с коллегами начал проект Роболабы: мероприятия для школьников и студентов, где участники параллельно решают усложненные задачи, а затем проводят рефлексию сделанной работы и оценивают чужие в ходе серии мероприятий.

(2) Физик, научный сотрудник, выпускник МФТИ. Запустил кружок робототехники в 2011 году. Рассказал Алексею Перепелкину о том, как здорово вести кружок робототехники. Рассказал об этом еще целому ряду людей. Побеждал со своими командами на соревнованиях. Проводил проектную работу с участниками исследовательской выездной школы МКШ с 2013 года, где руководил реализацией физических и робототехнических проектов, например, «Вслед за солнцем», в котором изучалась эффективность динамической ориентации солнечных батарей на солнце. Вместе с коллегами разрабатывал и был судьей Робопрофи. Участвовал в подготовке проекта Роболабы. Вновь пришел в МФТИ для проведения факультативного курса «Основы создания киберфизических устройств»

Организатор: Лаборатория инновационных образовательных технологий МФТИ (1), Лаборатория инновационных образовательных технологий МФТИ (2)

Описание организатора: (2) Московский физико-технический институт (неофициально известный как МФТИ или Физтех) является одним из самых престижных в мире учебных и научно-исследовательских институтов. Он готовит высококвалифицированных специалистов в области теоретической и прикладной физики, прикладной математики, информатики, биотехнологии и смежных дисциплин. Физтех был основан в 1951 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

Категория: Компьютерные науки

Описание категории: Специализации и курсы по компьютерным наукам посвящены разработке и дизайну программного обеспечения, алгоритмическому мышлению, человеко-компьютерному взаимодействию, языкам программирования и истории вычислительной науки. Курсы в этой широкой области помогут вам мыслить абстрактно, методически подходить к проблемам и вырабатывать качественные решения.

Тематика: Разработка ПО

Материал: