?

Log in

No account? Create an account
Лабораторный журнал -- Day [entries|friends|calendar]
Anatoly Levenchuk

[ website | Лабораторный журнал ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Теннисная робототехника для инженерного бакалавриата и выше [18 Jan 2015|05:41pm]
Напомню, что робототехника -- это название не дисциплины, а инженерного рабочего проекта по созданию киберфизической системы. Такой проект помогает "оживить" и объединить знания отдельных дисциплин -- математики, физики и мультифизического моделирования, информатики, ТАУ, кинематики, 3D дизайна, электроники, компьютерного зрения (а то и распознавания речи, плюс машинной сенсорики), системной инженерии. Этот набор дисциплин нужен как для студентов-инженеров, так и для повышения квалификации уже работающих инженеров.

Я рассказывал об этом в докладе http://incose-ru.livejournal.com/50538.html, рассказ по слайду 15). Там я погорячился немного с "манипулятором на тележке" для старшеклассников. Увы, сегодня в России этот уровень доступен только для бакалавриата и выше. Важно, что студентам не столько даётся сразу "рабочий проект", сколько перед его выполнением они вынуждены сделать множество учебных упражнений, решить множество задач -- чтобы получить необходимый опыт в освоении дисциплин и технологий, которые требуются для создания робота. Можно обсуждать дополнительно, как могла бы быть устроена на производстве в порядке повышения квалификации такая организация образования, в которой сочетается изучение теоретических дисциплин и выполнение вменённого учебным планом (а не производственной деятельностью) соревновательного проекта.

В качестве создаваемой целевой системы берётся теннисный робот типа (http://youtu.be/imVNg9j7rvU):


Спорт отличается тем, что в нём нужно показывать точные и быстрые движения -- при этом точность существенно противоречит скорости, преодоление этого противоречия требует множества инженерных решений. Если брать разные требования к уровню преодолению этого противоречия (типа "подвести ракетку из одной заданной позиции в другую с точностью 1 мм и полным остановом за время не более 0.3 секунды"), то можно получить ранжированные задачи "по ступенькам лёгкости" и перепробовать множество методов решения от самых простых до "олимпиадного уровня".

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

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

Для теннисного робота подобного уровня сложности уже можно задумываться: использовать ли алгоритмы обучения или прямое моделирование физики, ибо мне кажется, что граница как раз где-то тут проходит (с перевесом в сторону прямого физического моделирования, но экспериментировать с обучением уже осмысленно и понятно зачем). Плюс можно задействовать виртуальные модели манипулятора, сюда же САПР с 3D печатью и эксперименты с размерами-массой-жёсткостью-точностью. Отдельное развлечение с машинным зрением. Отдельное развлечение со стратегиями собственно игры! Принципиальная возможность сделать матч между двумя девайсами. Полный букет отрабатываемых проблем, цветущая сложность, но на весьма ограниченном объеме и абсолютно понятном даже непосвящённым конечном результате. При этом набор задач и акценты в них другие, нежели в баскетбольном роботе.

Правильные задачи "по ступенькам лёгкости" подобрать очень трудно. А эта мне чисто интуитивно кажется правильной и не чрезмерно сложной -- а "ступеньки лёгкости" можно организовать, вплоть до профессиональных характеристик настоящего теннисного спорта: http://stack-sport.ru/index.php?option=com_content&task=view&id=66&Itemid=46

Стратегию прохождения программы можно обсуждать, но ежели считать, что каждый курс три кредита плюс собственно проектная работа (создание робота для соревнований), то при стандартном раскладе времени это займёт год или даже два. А если чуток задрать поднять планку требуемого класса робота ("чтобы робот мог играть с человеком, а на соревнованиях выигрывал"), то это будет вполне полноценная магистерская программа на пару лет (а при хорошо задранной планке -- это работа на пару лет для целой команды). Как упрощать и уменьшать этот объем? Например, выкидывая отдельные курсы и связанные с ними упражнения: заменяя разработку каких-то софтверных или хардверных модулей этого робота использованием заранее готовых. Или обучать команду, понимая, что каждый в чём-то недоучится -- но надеяться, что какой-то обмен знаниями у членов команды при этом произойдёт (чего не будет в случае использования готовых модулей). Модульность основанной на проекте создания теннисного роботе инженерной учебной программы вполне достаточна, чтобы она легко модифицировалась и поэтому вписывалась в специфические условия самых разных образовательных инициатив.

1. Кинематика (жёсткий безынерционный робот)
Для начала нам нужно научиться моделировать кинематику -- с этого начинается любой робототехнический курс. Мы это будем делать курс моделирования кинематики на Modelica, совмещая освоение самого предмета и изучение языка. Это будет происходить в форме выполнения последовательности предзаданных упражнений (решения задач, ответом для которых является программа-модель на Modelica) и должно в конечном итоге привести к появлению кинематической модели теннисного робота.

Для курса будет использована Open source Modelica-среда OpenModelica (https://openmodelica.org/), пример моделирования многоосного манипулятора входит в комплект поставки (https://build.openmodelica.org/Documentation/Modelica.Mechanics.MultiBody.Examples.Systems.RobotR3.fullRobot.html).

Упражнения по моделированию кинематики в ней будут выполняться примерно так же, как в курсах по языкам программирования (но нужно подумать, как сделать автоматизацию проверок выполнения упражнений типа той, что используется КуМире или курсах типа http://informatics.mccme.ru/course/view.php?id=156).

Кстати, Georgia Tech использовал пример Modelica-робота для теннисной подачи в своём курсе ME6105 Modeling and Simulation ещё в 2008 году (https://www.youtube.com/watch?v=bjAHljq24rk). И вообще роботических моделирований в Modelica с экспортом потом моделей в другие системы по стандарту FMU довольно много (вот типичное: http://youtu.be/Q-EL6T7-T1I).

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

2. Dynamic Systems and Control (упругий робот и инерция, автоматическое управление)
Можно делать супержёсткий тяжёлый робот с дорогими моторчиками и металлическими деталями сложной формы (и получать в переделе "промышленный манипулятор"), можно делать робот с моторчиками попроще -- но тогда придётся заняться продвинутыми алгоритмами компенсации упругости и инерции, типа вот таких (http://youtu.be/kJPuenyxeps):


Тележка манипулятора тоже к этому может как добавить точности, так и испортить (http://youtu.be/cyN-CRNrb3E):


Моделика как средство моделирования физики остаётся, но теперь она будет использована и для реализации алгоритмов автоматического управления. Курс будет заключаться в том же самом: студенты будут строить ряд программных контроллеров (начиная с PID-контроллера для тележки с тяжёлым грузом), а затем будут пытаться сочетать все эти контроллеры в их работе.

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

И сюда же embedded software engineering. И сюда же аппаратные контроллеры и их присоединение к интерфейсам общения с человеком, актуаторам и датчикам. Сюда же можно засовывать использование ROS (Robot Operation System, http://wiki.ros.org/), если речь идёт о магистрах.

В принципе, возможно развитие этого уже и так распухшего курса в направлении soft computing (обсуждение пунктом вторым в "техтрендах-2015", http://ailev.livejournal.com/1155745.html): добавить эксперименты в эволюционном синтезе и оптимизации алгоритма управления (по мотивам работы http://www.goatstream.com/research/, напомню знаменитое видео эволюционной оптимизации алгоритмов ходьбы для произвольных двуногих -- https://vimeo.com/79098420).

3. 3D design, управление конфигурацией и цифровые практики воплощения
Для этого робота вполне можно изготавливать детали на 3D принтере, с разной массой, размерами и жёсткостью. Для этого такие детали нужно спроектировать, в том числе и в сборке. Это можно делать в Autodesk Inventor. Почему вот так сразу? Можно, конечно, помучаться с какими-нибудь open source САПРами, но много проще воспользоваться бесплатным лицензированием для учебных целей для всех продуктов Autodesk (http://www.autodesk.ru/education).

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

Отдельное удовольствие -- это связка принципиальных схем робота в Modelica с САПР. Такого софта пока нет, это отдельная задача (хотя и потенциально решаемая, но в рамках создания инструментария для курса, а не в рамках студенческой работы при прохождении курса).

4. Scientific computing (зрячий и не глухой робот) и soft computing
Курс компьютерного зрения (мячик-то нужно отслеживать! и делать это в реальном времени!) можно делать на базе какой-то известной библиотеки распознавания изображений, типа http://opencv.org/. Но чтобы воспользоваться этой библиотекой, нужно уметь программировать.

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

Я бы опирался в этом на Julia (http://julialang.org/), а не на Python как классический инструмент для scientific computing. А библиотеки -- библиотеки могут быть и на Си и на Julia, это не так важно. Вот пример Julia-библиотеки, среди которых есть раздел для построения роботов: https://github.com/svaksha/Julia.jl/blob/master/X-Platform-SW.md

5. Системная инженерия
Тут я бы использовал собственный курс системноинженерного мышления и практик MBSE -- но в отличие от всех предыдущих дисциплинарных курсов, в данном курсе в качестве "сквозного примера" и "рабочего проекта" используется весь проект создания робота "под ключ" для соревнований. Требования, архитектура, испытания. Порождение стратегии выигрыша на соревнованиях, интеграция работы всей команды, определение вида жизненного цикла разработки, управление конфигурацией (деталей и моделей там будет много, их нужно как-то обозначить, обеспечить контроль версий), и т.д.. Не буду расписывать этот пункт подробней, я и так на эту тему пишу часто.
8 comments|post comment

Архитектура интернета вещей: блокчейны и онтологии [18 Jan 2015|10:22pm]
В части архитектуры интернет не имеет структуру, но имеет организацию, выражаемую в используемых им протоколах. В полной мере это относится и к архитектуре интернета вещей (Internet of Things, IoT). Насколько интернет вещей (а также людей, животных, серверов, облаков и всего остального) будет архитектурно (то есть своей организацией) отличаться от просто сегодняшнего интернета? Настолько, насколько будут отличаться его протоколы, будут отличаться его стандарты.

Архитектурная работа в отношении интернета вещей интенсивно идёт прямо сейчас. Так, IBM раскрыла (http://www.coindesk.com/ibm-reveals-proof-concept-blockchain-powered-internet-things/) информацию о своём с Samsung архитектурном проекте ADEPT (Autonomous Decentralized Peer-to-Peer Telemetry, https://www.scribd.com/doc/252917347/IBM-ADEPT-Practictioner-Perspective-Pre-Publication-Draft-7-Jan-2015), в котором использует три протокола: Bittorrent (file sharing, http://www.bittorrent.com/), Ethereum (smart contract, blockchain, https://www.ethereum.org/, TeleHash (peer-to-peer messaging, mesh networking, http://telehash.org/). Почему такой выбор, достойный шифропанков? Потому что миллиарды устройств не выживут в хоть как-то централизованных архитектурах, нужна архитектурно обеспечиваемая устойчивость при существенных воздействиях на сеть -- интернет вещей, как и просто интернет, должен выживать во время атомной войны, стихийных бедствий, авариях инфраструктуры, хакерских атак, политических наездов со стороны силовиков в правительствах разных стран, и т.д.

Зачем в IoT технология блокчейна? Устройства и программы смогут удостоверять свою подлинность и принадлежность, переходить из рук в руки, расплачиваться за расходники. И всё это без центральной инфраструктуры, которую должны были бы держать поставщики оборудования, программ, инфраструктуры связи и платежей. Samsung W9000 washing machine reconfigured to work within the ADEPT system uses smart contracts to issue commands to a detergent retailer in order to receive new supplies. These contracts give the device the ability to pay for the order itself and later receive word from the retailer that the detergent has been paid for and shipped. This information would be broadcast to the smartphone of the washer’s owner, a device that would also be connected to that home’s network.

Ontology Summit 2015 (http://ontolog-02.cim3.net/wiki/OntologySummit2015) тоже посвящён IoT, так как тамошнее сообщество уверенно, что самая перспективная технология федерирования систем/интеграции данных -- использование онтологий и терминологий. Тамошний подход подчёркивает мультимодальность и отсутствие централизации складывающейся новой сети: networks will extend beyond physically linked computers to include multimodal information from biological, cognitive, semantic, and social networks. This paradigm shift will involve symbiotic networks of people, intelligent devices, and mobile personal computing and communication devices (mPCDs), which will form net-centric societies or smart networked systems and societies (SNSS). Если есть сообщества (а хоть и network-centered), значит у них есть какая-то общая модель мира (онтология) и способ говорения друг с другом (терминология), и нужно с этим вопросом разобираться -- ибо говорят уже и люди, и машины, а говорят они по поводу окружающего их реального физического мира.

Доклады Ontology Summit 2015 будут идти по 4 трекам, представленным на заседании в этот четверг (http://ontolog-02.cim3.net/wiki/ConferenceCall_2015_01_15 -- там ссылки на слайды презентации каждого трека):
-- Track A: Ontology Integration in IoT
-- Track B: Beyond Semantic Sensor Network Ontologies
-- Track C: Decision Making in Different Domains
-- Track D: Related Standards and Synergies for Emerging IoT Ontologies
6 comments|post comment

navigation
[ viewing | January 18th, 2015 ]
[ go | previous day|next day ]