isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

28 августа 2013

Проект Cyber-CAD-o-Punk, или «Робот в каждый дом»

Сборка и развивающее сопровождение домашних роботов как область подлинно массового применения 3D-принтеров

Михаил Бельман

Бельман портретик От редакции isicad.ru: Автор статьи и инициатор представленного в ней проекта — матерый профессионал в области инженерного программного обеспечения. Он исчерпывающим образом охарактеризовал себя в заметке «Воспоминания системного САПР-пропагандиста, или 3D-модель лысой китайской женщины».

Минимальной аннотацией к содержанию может считаться приведенный выше, достаточно строгий подзаголовок, который предложен редакцией isicad.ru. С другой стороны, внутри проекта используется совсем неформальное название «Талмудо-Вуду», смысл которого поясняется автором в конце статьи.

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

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

1. Цели проекта и его рыночные предпосылки

Бурный рост рынка 3D принтеров порождает (или породит в ближайшем будущем) некий дисбаланс между доступностью по невысоким ценам домашних устройств ($500-$600 — цена на устройство с 12-15-сантиметровой стороной рабочей площади стола) и откровенно неудовлетворительным состоянием индустрии программного обеспечения, специально ориентированного на производственные особенности такого вида устройств. На сегодняшний день общее число пользователей, имеющих 3D принтеры на дому, исчисляется десятками тысяч, а с наращиванием мощностей по их массовому производству в Китае, число пользователей может вырасти до сотен тысяч, если даже не до миллионов уже через 1.5-2 года.

Именно доступность таких устройств порождает в каком-то смысле новую революцию в общем потоке развития общества потребления, ибо создает массово доступный вид деятельности, который можно назвать «производство-на-дому». И сей феномен вполне может потребовать уже в ближайшем будущем адекватной реакции от профессионального рынка систем инженерного проектирования в виде относительно простых, но тщательно подструганных под особенности производства на таких устройствах как домашние 3D принтеры.

Профессионалы 3D дизайна проектируют и печатают для продажи различные оригинальные модели, ими же разработанные в программах 3D моделирования, скажем, в Autodesk 3ds Max, но таких — меньшинство. А занятием большинства владельцев 3D-принтеров (не дизайнеров, инженеров или программистов) является поиск и скачивание из интернета разных готовых 3D моделей, их изготовление в домашних условиях из пластика, последующая доработка (скажем, раскрашивание и склеивание габаритных частей), объединение в клубы по интересам, организация обмена такими сувенирами, организация галерей и т.п. Вполне ожидаем момент, предположительно через год, когда всем им надоест такой вид деятельности, а устройства начнут простаивать.

Несколько энтузиастов, включая автора этой статьи, объединенные в неформальный клуб, условно именуемый «Creativity of donkeys vs. stupidity of professionals», решили провести цикл работ по анализу возможности разработки набора программных средств проектирования. В основном речь идет о моделировании сборки и симуляции на домашних компах деталей, из которых можно будет собирать небольшие простые роботы, а также о некоторых средствах разработки программ для встроенных компьютеров, способных управлять такими роботами. Вот неформальный логотип нашего проекта:

Бельман лого

Хорошим примером готовых изделий, позволяющих сегодня собирать таких роботов из пластика, является комплект MindStorm Lego, однако не совсем дешевый — $450-$500. Нами выявлены характерные трудности пользователей таких конструкторов и сформулирована концепция «от простого к сложному»: от простых расширений стандартных наборов Лего до полностью оригинальных наборов строительных блоков, которые можно будет печатать на 3D принтерах. Также предполагается проработка возможности стандартизации разработки управляющих программ для встроенного компа робота, который мы предполагаем выбирать из серийно производящихся в индустрии компактных одноплатных компьютеров по цене в 2-3 раза дешевле MindStorm Lego NXT и при этом в 2-3 раза производительнее.

Робот Бельмана 1

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

Таким образом, имея начальную целевую группу предположительно в десятки тысяч пользователей, мы хотели бы развить набор программного обеспечения, покрывающий все аспекты проектирования, моделирования и управления такими роботами. По одной из предварительных оценок, потенциальный рынок на такой полный вид продуктов (предоставляемых, скорее, всего как облачные сервисы) можно оценить в десять миллионов семей только в США. Оценка, понятно, грубая, но зато есть за что бороться.

Один из ожидаемых результатов — построение набора технологических, технических и методологических компонент, позволяющий реализовать разработку и производство «на дому» маленьких, простеньких, на первом этапе не обязательно практически полезных, роботов из пластика, как с возможностью прямого управления с домашнего компьютера, так и способных выполнять некие действия в автономном режиме.

С точки зрения самих участников проекта, не менее важным познавательным аспектом деятельности в рамках данного проекта, является попытка понять — насколько сегодняшний уровень технологий программного обеспечения дает возможность имплементировать в управляющих компах робота все четыре закона робототехники, сформулированные А.Азимовым в его великой серии SF «Foundation».

Азимов

А́йзек Ази́мов (Isaac Asimov), 1920-1992, американский писатель-фантаст русского происхождения,
популяризатор науки, биохимик. Автор около 500 книг.

(От редакции: Массовый молодой читатель, скорее всего, знает не слишком удачный фильм «Я, робот» по сценарию Айзика Азимова, но вряд ли хорошо знаком с его книгами. Этот признанный классик научно-фантастической литературы был чрезвычайно популярен в мире: не в последнюю очередь — в среде поздне-советской интеллигенции. Основа всего написанного Азимовым — «три закона роботехники»:
1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому и Второму Законам
.

Многие рассказы Азимова посвящены причинам и следствиям нарушения трех законов или непредвиденным последствиям их соблюдения роботами.

Интерес к Азимову заключается не столько в самих роботах, сколько в анализе (в рамках увлекательных литературных сюжетов) проекции «законов роботехники» на человека и на социум. В одном из рассказов персонаж Азимова говорит: «...Три Закона роботехники совпадают с основными принципами большинства этических систем, существующих на Земле... попросту говоря, если Байерли исполняет все Законы роботехники, он — или робот, или очень хороший человек».

Позднее Азимов предложил Нулевой Закон:
0. Робот не может причинить вреда человеку, если только он не докажет, что в конечном счёте это будет полезно для всего человечества,
этические последствия которого совсем не кажутся очевидными...)

2. Технические средства и технологические компоненты, вовлеченные в проект или требующие разработки

Предполагается наличие набора CAD-подобных средств для проектирования строительных блоков для сборки роботов, инструмент сборки с верификацией корректности сборки, симуляции на основе алгоритмов инверсной кинематики. Разумеется, мы и не предполагаем имплементацию еще одного 3D-моделера, наоборот, предполагается, что пользователи смогут найти в сети и сгрузить нужные им 3D модели деталей роботов. Единственные функции моделирования, которые необходимо обеспечить, — неоднородное масштабирование крепежных отверстий с/без паттернами, ну и булевы операции в простейшей имплементации. В силу планарно-цилиндрической сущности 95% всей геометрии таких роботов, мы исключаем (на данном этапе) NURBS-modeler как таковой. Более того, если даже из сети будет загружена более сложная модель, предполагается ее планаро-цилиндрификация — насколько сие возможно. Требование простоты геометрии объясняется ниже.

Изготовление деталей из пластика предполагается на 3D принтерах дешевых моделей, доступных уже сегодня в диапазоне цен $500-$1000. Надо понимать что невысокая разрешающая способность таких устройств (0.1мм по X/Y, 0.2-0.3мм по Z) не позволяет увлекаться сложной геометрией, требующей высокого разрешения, как скажем в таком высоко-качественном продукте как Lego. В качестве материала предполагается использовать пластик ABS Filament.

На первом этапе предполагается разнести управление роботом между простеньким встроенном компом уровня не выше NXT-1 (применяемый в MindStorm Lego) или даже простеньким Ардуино, где будут выполняться лишь базовые функции управления серво-моторчиками и датчиками, и домашним компом достаточной мощности, для обработки изображений, алгоритмов инверсной кинематики, человеко-машинного интерфейса и самое сложное — моделей поведения автономного робота.

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

Хотелось бы разработать полноценный механизм сборки 3D готовых деталей, независимого от мощных, и главное — дорогих, CAD систем. На самом примитивном уровне мы планируем в ближайшие пол-года сделать некий прототип, позиционируемый как «Lego extension toolkit».

В достаточно упрощенной постановке проблемы моделирования, сборки и простенькой такой симуляции кинематики для проектирования роботов и подготовки изготовления их деталей на 3D принтерах как-то исчезает необходимость разделять процессы CAD & CAM. Т.е. в едином процессе будут объединены как минимальное моделирование (простейшие операции такие как non-uniform scale применяемые как к геометрии оболочки, так и к pattern крепежных отверстий), так и сборка в 3D, скорее всего — на основе 3D решателя, также некая верификация и возможно — симуляция для последующего изготовления на 3D принтерах. Т.е. тут надо иметь все вместе, ибо надо учитывать существенные ограничения NC machining, накладываемые примитивными возможностями 3D принтеров.

В процессе сборки мы хотели бы оторваться от оперирования с относительно низко-уровнемыми сущностями. Скажем в классической постановке нужно сказать, что для закрепления серво-моторчика надо определить constraints типа coaxial между, как минимум двумя крепежными цилиндрическими дырками на моторчике и соответствующими дырками на корпусе. Вместо этого мы хотели бы сказать, что моторчик должен быть закреплен так, чтобы удовлетворить constraints на ограничения габаритов его BBox, а уж найти дырки или при их отсутствии — добавить (вот где стыкуются операции сборки и моделирования) — это уж пусть решатель сам найдет.

Уже на уровне проектирования основных корпусных деталей и остальных компонент (моторчиков, осей с колесами, вращающихся платформ сверху и т.п.) надо постоянно делать контроль на технологические ограничения изготовления на 3D принтерах.

Даже если кто-то сгрузил готовую геометрию детали для робота и хочет эту деталь включить в сборку, необходим механизм анализа данной детали на технологичность ее изготовления на на 3D принтерах. И если надо — резать деталь на части.

Резюмируя сказанное в приведенном выше техническом фрагменте, заметим, что для такой специфической технологии как простые 3D принтеры, напрашивается разработка некоей уникальной модели CAD/CAM, пусть и более примитивной в сравнении с широко применяемыми системами, но все-таки несущей в себе некие элементы новизны. Вне всякого сомнения, весь механизм моделирования/сборки должен быть имплементирован в рамках парадигмы вариационного моделирования. В рамках нашего неформального клуба реализация, пусть и частичная, даже одного из заявленных пунктов выглядела бы несомненным успехом. С другой стороны, очевидно, что при построении такого рода продукта выход за рамки совсем уже примитивных конструкций может потребовать имплементации весьма нетривиальных методов решения сложных геометрических задач. Однако при появлении любых вразумительных схем финансирования проекта мы очень рассчитываем на возможность кооперации с одним из убедительных разработчиком именно сложных систем.

3. Задачи, возникающие в проекте, и возможные пути их решения

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

Мы начинаем не с заявленного набора инструментов, а с куда более приземленного — выбрать некий существующий конструктор роботов и разрабатывать к нему различные расширения, которые по разным причинам в рамках данного конструктора нереализуемы. Мы выбрали один из самых популярных, хоть и недешевых, продуктов — MindStorm Lego (цена порядка $450-$500). Мне кажется что нам удалось обнаружить методологическую ошибку фирмы Лего с данным продуктом : если конструкторы для маленьких деток, имеющие целью развитие моторики рук, являются идеальным решением — можно сказать что это — Big toy for small kids — то в отношении MindStorm Lego, который рекламируется как Small toy for big kids, вероятно, была допущена если не ошибка, то неточность уж точно. По опросу нескольких владельцев такой цацки было обнаружено, что им совсем неинтересно заниматься раззвитием моторики рук, мучаясь со сборкой конструкций из большого числа мелких деталек, им хочется как можно скорее покончить с этим мазохизмом — сборкой, и начать программировать робота.

Дальнейшее изложение основано на опыте одного из членов нашего клуба по имени Стас, который выстрадал весь сей мазохизм. Итак, он собрал строго по инструкции Лего шасси начетырех колесах, передние поворачиваются, задние — крутятся, двигая телегу вперед/назад. Всего в комплект входят три серво-моторчика, вот два из них уже задействованы. Далее, он захотел добавить сверху вращающуюся вокруг вертикальной оси платформу, на которую надо поставить мини-камеру и источник питания к ней. Ну, желание понятно — какой же это робот без глаз. Что у него получилось — видно на приложенных картинках.

Робот Бельмана 2

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

В чем тут проблема и как мы пытаемся ее решить? Поскольку на верхней грани телеги мы хотим смонтировать вращающуюся платформу, на которой будет стоять камера, то вращая платформу на 90 градусов от вектора движения, можно распознавать предметы вдоль линии движения. Однако если платформа не строго горизонтальна, то уже на самом раннем этапе написания IP (image processing) софта придется мучиться с нудной проблемой Image Alignment, от чего хотелось бы уйти. Стало быть — надо выровнять платформу. Руками пересобирать корму телеги — влом, стало быть — процесс надо автоматизировать. Вот так и родилась проблема инверсной сборки. И хотя возможно в данном контексте, возможно, она высосана из пальца, тем не менее, в подобных сборочных проектах она может встретиться не раз и не два, особенно учитывая, что в набор Лего входит много мелких деталей.

Итак, на первом этапе задача формулируется достаточно просто: заданы одна или более точек начала сборки, различных, как по высоте, так и по длине. Задан набор доступных деталей Лего, которые очень хорошо унифицированы как по толщине и ширине, так и по количеству элементов паттерна, определяющих длину сегментов сборки. Большинство из них — линейные, но есть немного угловых: два сегмента под неким ненулевым углом друг к другу. Задано правило сочленений — минимум/максимум совмещенных крепежных отверстий — так варьируем длину наращиваемых сегментов. Каждый следующий линейный сегмент может отстоять по высоте от предыдущего максимум на одну ширину сегмента (а может остаться на том же уровне). Известно, куда по высоте и длине надо привести свободный конец финальной детали, на который будет посажена ось задних колес. Вот и все — надо построить некую формальную модель и получить какое-нибудь приемлемое решение. Можно, скажем, минимизировать число задействованных деталей. Т.е. переформулируя задачу — решаем 2D задачу инверсной сборки на виде сбоку. Вот в такой постановке задачи мне удалось без особого напряга с небольшим допущением, свести задачу к модели целочисленного линейного программирования (MIP LP). Звучит дико, ибо солверы MIP LP не имеют никакого отношения к решению подобных геометрических задач. На такой простоватой модели я просто спекулирую высокой степенью унификации деталек Лего и несколькими допущениями. Ну что, я беру свободно доступный (GNU license) солвер MIP LP — lp_solve с весьма удобным API и IDE, в IDE уже построил прототип модели и убедился, что солвер вполне решает ее.

Далее в ближайшие несколько недель надо написать на C++ сам движок, на Qt построить front-end, определить простейший формат для ввода исходных данных, отладить код, после чего начинается увлекательный процесс: усложняем модель до тех пор, пока не упремся в предел возможностей MIP LP солвера для решения данной задачи. (Этот предел вызывает у меня не столько озабоченность, сколько зоологическое любопытство...)

Робот Бельмана 3

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

Если все получится, то мы можем сказать что мы существенно облегчили житуху для big kids. Осталось понять — а как тут со small toy?

Ответ — никак! Ибо далее мы начинаем проектировать Lego extension. И вот тут как раз формулировка задачи очень ясная и четкая: есть крепежные отверстия на насадке на ось серво-моторчика Лего, которая (ось) строго вертикальна, есть габариты мини-камеры и ее элемента питания, есть вес камеры и элемента питания, заданы дополнительные расширения платформы для последующего крепления на ней дополнительных конструкций. Надо спроектировать вполне так себе ортогональную конструкцию, смоделировать ее совместимость по сборке с тем, что имеем, разбить ее (если потребуется) на односторонне-выпуклые части, и отправить ее на 3D printer.

Таким образом из двух базовых концепций фирмы Лего : «Big toy for small kids» & «Small toy for big kids» — мы свели к одной : «Smart toy for all kids».

Итак, скажем, решили проблему Lego extension — можно начинать программировать робота. В рамках такого проекта максимум, что он может делать — кататься по полу или рабочему столу и пытаться распознать некие предметы. Интересно, но ненадолго. Классические ожидания от робота — перемещаться с места на место, распознавать предметы и совершать с ними некие манипуляции. Однако, еще до перехода к проблеме дизайна манипулятора, хотелось бы посмотреть : какие более-менее интересные задачи такой робот (без манипулятора) мог бы решать. С учетом того, что основной софт пока еще пашет на PC, у нас руки развязаны. На уровне чисто состязательной деятельности: если в каком-либо неформальном робото-сообществе (клубе) захотят устроить соревнование, то вот навскидку три уровня такого игрового контента :

  • в автономном режиме пройти по лабиринту
  • проверить, кто больше распознает лица известных деятелей — ту конечно можно (раз все на PC) воспользоваться evaluation license на Samsung Luxand SDK, тогда вместо программирования эвристических алгоритмов на C++ можно снова воспользоваться мат. моделями, ибо Luxand SDK возвращет 66 контрольных точек на каждый фрейм
  • решить в том или ином виде, но опять в соревновательном контексте, всеобщую проблему парковки телеги на 4 колесах с приводом на задние и поворотом в заданных пределах передних. (Вот смеху будет если народ решит эту задачу эффективнее чем ее сегодня решают на экспериментальных моделях автономных легковушек такие монстры, как Форд или Тойота, причем за ничтожные доли процента от затрат тех монстров)...
Тут еще вопрос: а какого уровня интерфейс должен получить пользователь для такого вида игрового контекста? Пока у меня нет ответа, и я был бы сильно благодарен за любые идеи. Вот так вот: уже выползло полно проблем, а заодно — и идей превращения простых таких экспериментов в некий продукт.

Хотелось бы уже на этом этапе отметить что, начиная со встроенного компа Lego NXT 1 и оставляя практически все алгоритмы на уровне домашнего компа, мы должны определиться: когда и на какой встроенный комп реально переносить сложные алгоритмы. Собственно, определение таких границ и является одной из настоящих целей проекта с точки зрения зоологического любопытства его участников. На первом этапе решение более-менее очевидно — это двух-платный компактный комп типа Raspberry Pi с сотнями Мб памяти под Linux + Arduino на основе 8-bit микроконтроллера семейства AVR.

Однако, при всем нашем уважении к процессорам архитектуры ARM, надо заметить, что для сложных задач IP, да и не только, в более-менее real-time их мощи скорее всего не хватит. И хотя мы к такому придем где-то через год-полтора, но думать надо уже сегодня. Красивым шансом выглядит убедить руководство фирмы MobilEye (или найти инвесторов под такое) в реализации consuming version оригинальной разработки — чипа EyeQ, интегрирующего multi-core MIPS, VMP и GPU-like процессорных ядер, последние два — оригинальная разработка MobilEye, при чем скажем VMP — целочисленный векторный процессор — ускоряет некоторые алгоритмы IP в 10-30 раз в сравнении с универсальным процессором на той же тактовой частоте.

Далее обязательно надо будет переходить к решению проблемы манипулятора. Хотелось бы заметить, что для решения частных проблем, скажем, для захвата небольших легких цилиндрических предметов, не требуется особо гибкий манипулятор как в реальных роботах, модель будет куда как упрощенной, а стало быть — на этом этапе мы не обязаны решать в общем виде задачу инвесной кинематики. А частный алгоритм для сильно упрошенного манипулятора может оказаться весьма простым. Для более сложных манипуляторов с 3+ степенями свободы у нас есть в загашнике решение — см. на сайте http://212.150.186.143/ikw/ — разработка одного из членов клуба.

Однако возникает вопрос — в наборе Лего всего 3 моторчика, если даже дозакупим 4-й/5-й — все равно в Лего компе NXT заложено всего 3 выходных разьема для управления моторчиков. Ну что тут поделать — надо покупать за $15-$20 простенький Ардуино, цеплять его по USB к Леговскому NXT — и проблема решается. Но есть еще один вопрос — равномерное распределение грузов по платформе может сильно отличаться если на нее придется крепить еще один серво-моторчик (а у Лего они — относительно большие и относительно тяжелые). И что — закладывать такую гибкость в дизайн платформы? Ничего подобного! Мы же уже в мире at-home production — просто снимаем эту платформу, проектируем новую (как было рассказано выше), печатаем ее на 3D printer — и проблема решена!

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

4. Текущее состояние работ и ближайшие планы

На сегодня мы имеем :
  • Неплохой алгортим инверсной кинематики, правда без динамических констрейнтов на максимальные углы поворота и без collision detection, — надо бы доработать, но сие не столь срочно.
  • Полуразобранный робот — платформа на 4-х колесах, требующая досборки как было указано выше.
  • Более-менее отработанный минимум кода на NQC (not-quite-C — диалект , на котором народ пишет всякие библиотеки, позволяющие программировать такие же цепочки управления моторчиками робота, как и скрипты, предлагаемые Лего для runtime на их компе NXT).
  • Базовый прототип кода на NQC для двустороннего обмена между NXT и PC, причем grabbing с камеры идет, минуя NXT).
  • Принципиальный прототип MIP LP модели, реализующей решение задачи инверсной сборки в рамках ограничений, описанных выше.
А вот и план работ до конца этого 2013 года :
  • (1) Реализовать движок инверсной сборки на основе MIP LP солвера lp_solve с соответствующим front-end,
  • (2) Завершить пересборку задней части робота с использованием движка инверсной сборки. Как минимум, приготовить презентацию с скриншотами всего процесса, как максимум — on-line demo в интернете,
  • (3) Спроектировать в каком-нибудь CADe платформу для стыковки с вертикальной осью движка платформы, напечатать ее на 3D принтере и установить на шасси робота,
  • (4) Доработать имеющуся тестовую программу на PC для управления роботом в рамках выполнения простейшего сценария — проехать линейно на расстояние 1 метр по рабочему столу, с самого начала повернуть платформу на 90 град. и граббить на всем пути изображения с камеры, сохраняя их просто как цепочку JPG фалов с нумерацией фреймов в имени файла. Это даст нам на первом этапе зависимость разрешающей способности протокола граббинга картинок с камеы на PC как функцию скорости движения,
  • (5) Попытаться построить приложение на основе движка из п. 1 данного раздела с достаточно богатым GUI и дать на тестирование всем знакомым, конструирующим роботов из MindStorm Lego для получения feedbacks на самом раннем этапе. Ибо — no feedback — no business,
  • В случае успешного завершения первых четырех пунктов до конца ноября, попытаться имплементировать на PC механизм векторизации изображений по всем полученным фреймам с целью оценки качества доступного в Open Source кода raster-2-vector converter для последующей оценки уровня сложности изображений, которые удастся классифицировать на основе векторизации В случае успешного завершения п. 5 до конца ноября (включая получение feedbacks) попытаться реализовать задачу интеграции сборок из деталек Лего в более крупные блоки для их последующей печати на 3D принтере (попытка ухода от зависимости от Лего). Эта задача сама по себе малополезна, ибо для успешного построения даже простейших роботов надо все равно иметь готовое решение для альтернативы как управляющего компа Lego NXT, так и серво-моторчиков, включая разъемы, которые, конечно, надо печатать на 3D принтере:). Ну, мы и так живем в мире альтернативы, стало быть, надо искать решение уже в начале следующего года.

5. Послесловие: о названии проекта и женском лаке для волос

Название проекта «Талмудо-Вуду» имеет вполне конкретный смысл: Вуду — ну тут все понятно — из неживого делаем квази-живое. Талмудо — как символ трепетного отношения к неким священым текстам. Только тут у нас роботы вместо иудеев, стало быть, их Талмуд — это тексты Айзека Азимова из серии «Foundation». Тех, кто знает об этих текстах немало, включая нулевой закон робототехники, но не хочет перечитывать так многа букафф, решительно призываю читать пародию на роботов Степана Вартанова «AI» — не пожалеете!

Теперь пару слов о 3D printer — если кто не знает, то главной инновацией за последние пару лет в этой области надо считать появление возможно самого ценного материала, существенно поднявшего качество изготовления на дешевых устройствах — женский лак для волос! Именно так — народ делает плиту из 2-мм стекла размером как раз под стол принтера, опрыскивает его женским лаком для волос, греет стекло до 85-90 град., после чего пластик так здорово прилипает — куда лучше, чем к конвенциональной прокладке стола принтера!

А можно найти новую, не менее прикольную инновацию в мирке 3D принтеров? Надеюсь что да. Далее излагаю пример.

Сегодня 3D принтеры самых дешевых моделей стоят порядка $500-$600, при весьма ограниченной площади стола. А можно иметь полностью функциональное устройство по цене скажем $200, не считая затрат на материал? Мой ответ — да! Итак, сегодня можно купить в Бостоне полностью собранный extruder за $75 — 3Doodler — в конструктиве толстого такого карандаша. Далее, делаем, как было описано выше, стационарный манипулятор, способный держать такой 3Doodler. Исключаем стоимость печати деталей (мы же живем в мире неформальных клубов пользователей 3D принтеров:)), однако один-два моторчика надо прикупить — ну еще $25 — итого $100. Еще $20 — купить Ардуино 8-бит и накатать для него код, а скорее — сгрузить готовый. Весь софт для 3D принтеров доступен в Open Source. Итого, уложились всего в 120$! Ну, еще $1 за плату 2-мм стекла. Итак, манипулятор, держащий extruder — карандаш-переросток — будет выполнять все функции подачи, разогрева пластика и елозить его по разогретой стекляной плате с женским лаком для волос. Вы имеете право задать вопрос — а стекло кто греть-то будет? И имеете право получить ответ — а греть стекло будет ... перевернутый кверху каком бытовой утюг! Осталось решить вполне инженерную задачу — сделать станину для фиксации перевернутого утюга и продумать механизм его горизонтальной калибровки. Таким образом, мы и дадим наш ответ Чемберлену — в ответ на их буржуазную принципиальность доминирования всеобщего потребления мы ответим нашей пролетарской беспринципностью доминирования производства средств производства! СССР — forever!

Спасибо за любые feedbacks!

Приложение. Глоссарий, составленный автором

MindStorm Lego — весьма популярная версия конструктора Лего, ориентированная на подростков и взрослую публику, отличается от детских конструкторов Лего добавлением к набору деталек таких новых компонент как серво-моторчики, несколько видов датчиков, встроенным управляющим компьютером и набором программного обеспечения как для встроенного управляющего компьютера, так и для PC под Windows, позволяющего создавать управляющие программы (скрипты) для конструируемых изделий без знаний программирования на низком уровне (типа Си).

MindStorm Lego NXT — управляющий компьютер для MindStorm Lego — см. выше. Имеются две версии — NXT1 и NXT2.

«Foundation» — самая значимая серия романов в жанре научной фантастики, написанная одним из самых знаменитых авторов в данном жанре — Айзеком Азимовым. В советских изданиях называлась «Основание». В данной серии книг автор неоднократно формулирует им же предложенные основные три закона робототехники, а в последней (недописанной) книге серии формулирует самый главный — нулевой закон робототехники. Еще более фундаментальной идеей автора является идея о разработке не совсем понятной науки «психо-история», в основе которой — гипотеза о возможности разработки математического аппарата, позволяющего с высокой степенью точности прогнозировать поведение больших масс людей, живущих в некоем социуме. Данная идея перекликается с законами робототехники.

ABS Filament — весьма высококачественный вид пластика, для дешевых 3D принтеров поставляется в виде тонкой (1.75мм) проволоки в рулонах, удобных для крепления рядом с 3D принтерами. Температура плавления — около 190 град. Цельсия. Помимо бытового применения в 3D принтерах широко применяется в промышленности в весьма сложных устройствах.

Ардуино (Arduino) — весьма популярное семейство одноплатных дешевых микро-контроллеров, построенных на семействе AVR 8-bit микро-контроллеров. Массово применяется в управлении простенькими устройствами типа домашних роботов и пр. именно для домашнего конструирования. Имеет весьма полный набор библиотек для программирования на языке Си, постоянно расширяется и развивается. На сегодня уже появились 32-бит версии таких устройств, с полностью совместимыми с предыдущими поколениями средствами программирования. Идеальное решение для работ на уровне хобби. Уровень цен — $16-$25 за 8-бит устройства, $40-$80 — за 32-бит устройства.

lp_solve — один из самых популярных, бесплатных (в рамках GNU license) решателей целочисленного линейного программирования, массово используемый во многих задачах оптимизации, как в финансовой, так и в технической сферах.

Samsung Luxand SDK — одна из недавних разработок фирмы Samsung — библиотеки на языке Си++ для идентификации человеческих лиц по картинкам, снятым с моно камеры. Используется в разработках фирмы для нового поколения ТВ.

Raspberry Pi — весьма продвинутая платформа из семейства одноплатных много-функциональных компьютеров с очень эффективным показателем соотношения цена-функциональность/производительность. Построена на процессорах семейства АРМ, массово используемых в мобильных устройствах. Сегодня можно купить такое устройство в комплектации 2-ядерный процессор на 1.7МГц с 1Гб памяти, интерфейсами ethernet и USB, всего за $40-$50. Может работать как под Linux, так и под Android.

ARM — 32-бит RISC процессоры оригинальной разработки фирмы Acorn Computers, ныне архитектура лицнзирована многими производителями чипов. Доминирует на рынке мобильных устройств, Set-top boxes и многих других рынках встроенных устройств.

MobilEye — одна из ведущих в мире фирм по разработке систем Image Processing для встроенных систем автомобильной электроники. Имеет серьезные наработки (более 10 лет на рынке) как в области разработок сложных алгоритмов распознавания образов в реальном времени, так и в области разработки специальных чипов, интегрирующих внутри много-ядерные архитектуры как стандартных процессоров (MIPS, ARM и др.), так и спец. процессоров для ускорения операций с матрицами битов). Фирма также имеет богатый опыт в разработке кросс-компиляторов, загрузчиков, спец. одноплатных компьютеров и многих других компонент для встроенных систем. Фирма также позиционируется сегодня как конкурент Google в разработке систем управления автономных автомобилей (полное компьютерное управление).

VMP — спец. процессор обработки изображений, используемый фирмой MobilEye — см. пункт выше. Оригинальный дизайн Ёсси Крейнина — сотрудника MobilEye — главный архитектор SoC (System-on-Chip) фирмы.

Inverse kinematics

http://212.150.186.143/ikw/ — ссылка на персональную страницу члена нашего клуба Алекса Швефельберга — оригинальный алгоритм решения задачи Inverse kinematics.

NQC — Not Quite C

Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

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