Этот материал не ставит перед собой цели разжечь священную войну между людьми, которые считают, что на AS3 можно делать только мультимедийные штуки, и людьми, которых AS3 полностью устраивает. Скорее, это пост о том, как единая среда разработки может сэкономить время.
Сама мысль делать сервер на основе Adobe AIR и AS 3.0 можешь показаться кошмарной, но когда перед тобой стоит задача сделать не просто сайт, а целую платформу для создания фотографий, их хранения (во вселенских масштабах), общения людей и, что самое ужасное, для онлайн-управление роботами, то овчинка стоит выделки.
Итак, проект Touch Z-Distance (стартовал 1 сентября, работает до 15 октября). Задача — собрать фотостудию, в которой можно было бы фотографировать моделей через интернет, с помощью роботов, оснащенных камерами. Подобная студия запускается впервые. Что потребовалось для того, чтобы запустить этот амбициозный проект?
1. Спроектировать конструкции роботизированных штативов, которые будут управлять фотоаппаратами TZ20:
– разработка эргономичного дизайна штативов (Autocad, 2D-проектирование, раскладка, подготовка файлов к резке на лазере, фрезе, 43*8 деталей для cборки, 3D-проектирование, размещение электроники);
– подбор материалов для сборки: полистирол, ПВХ, алюминий (гибкий, легкий материал, мобильный);
– разработка механики в тестовых образцах (3 шт.), в каждом последующем устраняя проблемы предыдущего.
Проблема: механизмы сервоприводов при уходе в крайнее положение выламывались.
Решение: конструкция штатива позволяет уходить в крайнее положение.
Проблема: износ деталей.
Решение: замена.
2. Запрограммировать штативы (Arduino)
– прошивка плат, калибровка плат, связь с сервомашинами, калибровка серв;
– назначение com-портов, присвоение порядкового имени Arduino;
Проблема: сигнал не проходил через USB-удлинитель.
Решение: отдельное питание для каждого USB удлинителя.
Проблема: серва 24кг/1см давала помехи на Arduino при перегрузке.
Решение: уравновешивание нагрузки на серву.
3. Соединение деталей
– питание Arduino (8 шт.);
– питание сервомашин разной емкости (24 кг/1см, 10 кг/см, 3 кг/см; 64 шт.);
– питание, USB-удлинитель для Arduino (8 шт.).;
– питание контроллеров USB 15 шт.
Проблема: перезагрузка Arduino.
Решение: устранение недостатка питания, отдельное питание на Arduino (отдельный блок с сетевым фильтром), отдельное питание USB-кабеля.
Проблема: отсутствие штатного постоянного питания.
Решение: распака эмулятора аккумулятора от постоянного блока питания; подключение веб-камер, назначение имени.
Проблема: компьютер не поддерживает одновременно более одной веб-камеры.
Решение: расширение шин USB, увеличение количества контроллеров; расширение шин для отдельного питание через контроллеры веб-камер.
Требование: три степени свободы для штатива, три степени свободы для механики пальца (уникальный образец механики в данном масштабе (мини ЧПУ)), работа штативов и фотоаппаратов на протяжении 10 часов в течение 45 дней.
4. Сделать выгрузку фотографий с фотоаппаратов с помощью Wi-Fi флеш-карт
— настройка локальной сети wi-fi флешек, назначение имени флешек.
5. Связать три сервера с помощью AIR (на одном из серверов хранится 1,5 террабайта фотографий).
6. Девушки, макияж, одежда
Основная идея студии — модели, и их (моделей) нужно было запрограммировать на то, чтобы они фотографировались перед восемью механическими роботами:) Моделей, к слову, было 32.
7. Студия и свет (помещение sunlightstudio.ru)
– аренда фотостудии;
– установка студийного света.
Список оборудования, которое использовалось и закупалось в разных странах:
– Wi-Fi flash drive (Америка);
– закупка Arduino, сервомашин (Китай);
– комплектующие для сборки пластик, клеи и т. д. (Китай, Россия).
Итак, что касается студии, то всё разрабатывалось на языке ActionScript 3.0 в среде разработки FlashDevelop, так как это был самый быстрый способ, к тому же Adobe AIR включает в себя полный спектр по управлению медиа. Будь это другая среда или язык, то пришлось бы использовать множество разных технологий, и не факт что все это работало бы нормально.
Главными преимуществами AIR перед остальными средами разработки является скорость разработки и то, что не нужно переключаться между множеством программ — взаимодействие между модулями идет на «нативном» (интуитивном) уровне, не нужно каждый раз добиваться совместимости: все и так совместимо.
Возможно, мы бы столкнулись с какими-то ограничениями по производительности, будь у нас задача типа конвертации видео или задача обработки данных (медиа) в большом количестве (но даже в этом случае можно было бы просто использовать другие программы но в связке с AIR).
Из-за того, что нужно было разделить потоки пользователей (чтобы видели сайт все, но управляли — по-очереди), возникали проблемы в программной части с очередями фотографий и людей на съемку. Была переписана очередь, которая была изначально на сервере, также постоянно дорабатывались все модули приложения для повышения стабильности, для того чтобы учесть различные факторы (например, пропал интернет в студии или упал сервер).
Серверная часть, отвечавшая только за очередь, была перенесена в студию, чтобы решить проблему с рассинхронизацией (задержки между сервером и студией).
Собственно, механизм очереди был встроен прямо в контроллер по управлению штативами, что дало повышение стабильности при обработке очереди и различных сложных моментах.
Помимо программной части, возникали проблемы с железом, но это уже другая история…
—
Проект будет работать еще два дня, так что вы еще можете зайти на сайт и пофотографировать моделей, а также покритиковать Adobe AIR и сказать, что все можно было сделать лучше, проще и быстрее.
Напоследок, небольшое руководство по проекту!
Вопросы, комментарии?
UPD!
ДА, КСТАТИ! КЛУБНИЧКА!
Сегодня и завтра с 00.00 мы будем немного шалить! Не буду раскрывать все карты. Но вот может быть словосочетание «легкий стриптиз за лайки» что-то кому-то скажет:) Не забудьте заглянуть ночью!