Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Теннисная робототехника для инженерного бакалавриата и выше

Напомню, что робототехника -- это название не дисциплины, а инженерного рабочего проекта по созданию киберфизической системы. Такой проект помогает "оживить" и объединить знания отдельных дисциплин -- математики, физики и мультифизического моделирования, информатики, ТАУ, кинематики, 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 -- но в отличие от всех предыдущих дисциплинарных курсов, в данном курсе в качестве "сквозного примера" и "рабочего проекта" используется весь проект создания робота "под ключ" для соревнований. Требования, архитектура, испытания. Порождение стратегии выигрыша на соревнованиях, интеграция работы всей команды, определение вида жизненного цикла разработки, управление конфигурацией (деталей и моделей там будет много, их нужно как-то обозначить, обеспечить контроль версий), и т.д.. Не буду расписывать этот пункт подробней, я и так на эту тему пишу часто.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 8 comments