Магистр ДонНТУ Кишинский Владимир Викторович

Кишинский Владимир Викторович

Факультет:

 

Институт информатики и искусственного интеллекта

Специальность:

Программное обеспечение систем

Тема выпускной работы:

Разработка системы интеллектуального управления движением мобильного робота

Научный руководитель:

к.т.н., доц. каф. ПОИС

Волченко Елена Владимировна

РЕФЕРАТ


Содержание

ВВЕДЕНИЕ

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

Шагающие машины являются сложными механическими системами с большим количеством управляемых степеней свободы. Каждая нога должна иметь как минимум три привода, чтобы обеспечить возможность поместить стопу в произвольную точку в трёхмерном пространстве в пределах некоторой рабочей зоны, определяемой конструкцией ноги. Таким образом, шестиногая шагающая машина должна иметь 18 приводов. Система управления должна быть построена так, чтобы обеспечить координированное движение всех ног, обеспечивающее заданное движение корпуса. Следует отметить то обстоятельство, что задача планирования движения корпуса может решаться едиными методами для мобильных роботов любого типа: колёсных, гусеничных или шагающих. Специфичной для шагающей машины является задача планирования движений ног. С одной стороны, шагающая машина обладает лучшими способностями преодоления препятствий благодаря тому, что для её перемещения необходимы дискретные опорные точки, а не непрерывная колея. С другой стороны, необходимы специальные алгоритмы поиска этих опорных точек. В настоящее время имеется несколько подходов к построению систем управления шагающими машинами. Используются принципы централизованного и децентрализованного управления, традиционные методы вычислений и нейроподобные вычислительные структуры. Использование простых алгоритмов, когда управление осуществляется отдельными приводами или движением корпуса и отдельных ног попеременно является бесперспективным и малорезультативным, поэтому этот подход не будет рассмотрен. Перспективными являются полностью автоматический и супервизорный способы управления. В последнем случае оператор управляет шагающей машиной, задавая компоненты линейной и угловой скоростей движения корпуса, а движения ног автоматически вычисляются системой управления [10].

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


1 АКТУАЛЬНОСТЬ ТЕМЫ РАБОТЫ

На данный момент все больше видов деятельности переходят от человеческого и управляемого человеком труда к полностью автоматизированному. В заводских условиях, в массовых производствах большинство работы уже выполняют роботы. Однако там, где рельеф местности или тип грунта не позволяет использовать автоматизированы установки, и там, где деятельность не может быть строго детерминирована, существующие на данный момент робототехнические средства бесполезны. Одной из главных проблем использования роботов вне заводских условий является неспособность колесной и гусеничной техники перемещаться по участкам сложного рельефа – переступать препятствия и опираться только на надежные точки грунта, избегая непригодные для этого участки [6]. По этому, разработка новых алгоритмов для адаптируемого ходящего робота или шасси для техники является актуальной научно-технической задачей.

При использовании шагающего передвижения способности робота по преодолению препятствий и возможности его применения значительно возрастают.


2 ЦЕЛИ И ЗАДАЧИ

Объектом исследования является шагающий робот или шагающее шасси для техники.
Предметом исследования является алгоритм формирования походки и передвижение конечностей робота.
Хождение шагающего робота характеризуется:

  • Сложностью точного описания модели движения из-за большого числа воздействующих факторов
  • Большим количеством параметров, влияющих на процесс хождения
  • Неравномерностью перемещения конечностей в каждый момент времени
  • Постоянно изменяющимся направлением вектора центра тяжести
  • Возникновением неконтролируемых внешних воздействий на робота
  • Значительным отклонением от траектории или падением в случае несвоевременной или неточной реакции на внешние воздействия
  • Необходимостью постоянной корректировки положения тела для сохранения устойчивого положения.

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

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


3 НАУЧНАЯ НОВИЗНА

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


4 ОБЗОР ИССЛЕДОВАНИЙ И РАЗРАБОТОК

В ходе выполнения анализа литературы были выделены основные подходы к управлению хождением роботов.  Их условно можно разделить на две группы: роботы, использующие статические алгоритмы и роботы, использующие эволюционные алгоритмы. Особенностью первой группы алгоритмов является то, что заложенный в них механизм хождения статичен и не изменяется в процессе работы робота [5]. Одним из представителей этой группы является алгоритм, на основе которого построен робот «RunBot». Детальное описание принципов работы этого робота приведено ниже. Вторая группа алгоритмов управления отличается тем, что алгоритм зависит от обучения, и при изменении входных данных робот может быть дообучен или переучен [11]. Роботы, основанные на алгоритмах этого типа, представлены ниже.


4.1 Робот «RunBot»


В работе Тао Генга «Рефлексивные нейронные сети для динамического контроля двуногого хождения» представлена разработка нового рефлексивного нейронного контроллера, который был реализован на двуногом роботе. Динамически устойчивая двуногая походка появляется в результате комбинации нейронных  и физических вычислений. Шагающий робот спроектирован с очень малым набором входных сигналов и с контроллером, который действует приблизительным и автономным способом. Оба аспекта могут иметь значение в биологических системах также, потому что они учитывают намного более ограниченную структуру нейронной сети и уменьшают сложность необходимой обработки информации [4]. В роботе контроллер непосредственно связан с двигателями робота, (его «мышцами»). Эти механизмы позволили впервые создать динамически устойчивого искусственного двуногого, объединяющего физическое вычисление с рефлексивным контроллером.

Рефлексивные контроллеры, такие как модель Круза, не применяют центральный процессор, который требует информацию о состоянии каждой конечности в реальном времени и вычисляет глобальную траекторию явно. Вместо этого локальные рефлексы каждой конечности запрашивают только очень небольшую информацию относительно состояния других конечностей. Скоординированное передвижение появляется из взаимодействия между локальными рефлексами и землей [7]. Таким образом, такая распределенная структура может значительно уменьшить вычислительную нагрузку на контроллер передвижения. С такими преимуществами, рефлексивный контроллер Круза и его варианты были осуществлены на некоторых многоногих роботах. В случае двуногих роботов некоторые из них также используют некоторую форму рефлексивных механизмов, их рефлексы обычно работают в качестве вспомогательной функции или инфраструктурными единицами для других нерефлексивных или параллельных контроллеров высокого уровня. Например, на моделируемом двуногом 3D роботе, специально предназначенные рефлексивные механизмы использовались, чтобы разрешить два типа проблем контакта робота с земной поверхностью, скольжение и опрокидывание, в то время как высота прыжка робота, поступательная скорость, и ориентация тела отдельно управляются тремя обычными контроллерами. На реальном двуногом роботе, два предварительно зашитых рефлекса компенсируют  два различных типа проблем, связанных с импульсной и непрерывной силой соответственно. До настоящего времени не существовало ни одного реального двуногого робота, который работал исключительно на рефлексивных контроллерах хождения. Возможно, это связано с неустойчивостью, свойственной двуногой ходьбе, которая делает контроль динамической стабильности двуногих роботов намного более трудным, чем многоногих роботов. В конце концов, в чистом виде контроллер локальных рефлексов не содержит механизмов, чтобы гарантировать полную стабильность двуногого робота.

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

Пассивные двуногие роботы обычно оборудуются круглыми ногами, которые могут увеличить диапазон стабильности походок и могут заставить выглядеть движение ног более плавным. Вместо этого движимые двуногие роботы, как правило, используют плоские стопы так, чтобы их лодыжки могли эффективно использовать вращающий момент, чтобы продвинуть робота вперед в опорной фазе  и облегчить контроль стабильности. Хотя робот, приведенный в статье – движимый двуногий, у него нет движимых голеностопных суставов, это делает контроль стабильности еще более трудным, чем у других движимых двуногих. Так как предполагалось использовать пассивную динамику робота во время некоторых стадий его цикла походки, так же как и у пассивного двуногого, его основание ноги также имеет кривую форму с радиусом, равным длине ноги. Части туловища собраны таким способом, при котором его центр массы расположен максимально впереди. Эффект этого решения  иллюстрирован в рисунке 4.1. Как показано один шаг включает две стадии, первая от (A) до (B), вторая от (B) до (C). Во время первой стадии робот должен использовать свой собственный импульс, чтобы подняться на стоящую ногу. Идя на низкой скорости, у робота может быть недостаточно импульса, чтобы сделать это. Так, дистанция, которую центр массы должен преодолеть за эту стадию, должна быть максимально короткой, насколько возможно, это может быть выполнено путем перемещения центра тяжести туловища вперед. На второй стадии робот просто падает вперед и ловит себя на следующем шаге. Затем цикл ходьбы повторяется. Рисунок также ясно показывает движение сгиба стоящей ноги. Фаза опоры начинается с касания пяткой земли и заканчивается когда палец ноги отрывается от земли.

Иллюстрация шага робота
Рисунок 4.1 Иллюстрация шага робота.

4.2 Эволюционные модели движения шагающих роботов


4.2.1 Основные принципы эволюционного подхода


При создании модели движения шагающих роботов структура программного обеспечения состоит из двух основных частей: генетический или нейросетевой модуль, отвечающие за расчет траекторий конечностей и дальнейшее обучение и модуль, который будет эмулировать взаимодействие с реальной средой [1]. Необходимость данного модуля обусловлена тем, что, при использовании эволюционных алгоритмов, обучение робота происходит методом проб и ошибок и если изначально работу алгоритма организовать на рабочей физической модели, то, во–первых, обучение данной системы займет огромное количество времени, так как все процессы будут происходить в реальном времени, а во–вторых, неизбежным окажется повреждение этой физической модели в связи с неверными вариантами предполагаемых движений, которые в данной модели обучения неизбежны [3].
Для моделирования необходимо описание физической модели робота, чтобы подпрограмма, отвечающая за взаимодействие с окружающей средой, могла рассчитать итоговое состояние и положение робота, тем самым охарактеризовать результаты работы алгоритма.


4.2.2 Робот «Dexter»


Рассмотрим вариант применения технологий искусственного интеллекта для моделирования движений шагающего робота, разработанный Михаэлем Палмером и описанным в работе «An Evolved Neural Controller for Bipedal Walking: Transitioning from Simulator to Hardware».

Параметры этой модели были настроены так, чтобы соответствовать модели фактического робота. Моделируемая версия робота изображена на рисунке. 4.2.

С точки зрения контролирующего программного обеспечения моделируемый робот может быть представлен в итоге как «черный ящик» с 12 входами (12 сервоприводов) и 18 выходов (12 сервоприводов плюс 6 степеней свободы IMU). Каждые 10 миллисекунд, диспетчер нейронной сети вычисляет новый набор 12 значений приводов; физический симулятор вычисляет положения всех частей робота для следующего временного шага.

Задачи ходьбы следующие: начиная с фазы баланса, необходимо, чтобы робот сделал пять шагов, приводящих к возвращению в исходное положение. Робот должен тогда вернуться к самобалансу, и остаться стоять вертикально. Вся задача ходьбы, не включая балансирующие фазы, 3,4 секунды длиной. Область поиска движений всех сервоприводов робота от старта до конца движения является многомерной и очень большой. Большая часть пространства состояний не будет иметь сходство с человеческой походкой [8].


Физическая модель робота
Рисунок 4.2 – Физическая модель робота

Разработчик ограничил поиск, предоставляя набор целевых или «предложенных» траектории трех типов, параметризованных во времени, для того, чтобы робот им следовал.

Во–первых, был получен набор предлагаемых траекторий для углов всех суставов. Этот набор был сгенерирован алгоритмически с помощью синус–основанных генераторов, и напоминает основные человеческие циклы ходьбы, в том числе начальные полшага от правой ноги, а затем три полных шага влево, вправо, влево и последние полшага правой ногой, в результате чего робот возвращается в исходное положение. Во–вторых, была предоставлена предполагаемая траектория центра масс робота, состоящая из фазы ускорения, фазы равномерного перемещения, и фазы замедления. Общее желаемое передвижение центра масс составляет примерно 1,2 метра. Наконец, вычисляемая и желаемая траектории должны свести к минимуму изменения по тангажу, крену и рысканию туловища, необходимо чтобы туловище перемещалось плавно.

Завершение всей задачи требует, чтобы контролирующие сети несколько отклонились от предложенных траекторий; если бы робот должен был бы следовать за предложенными траекториями точно, он был бы не в состоянии балансировать.

Задача ходьбы продолжительностью 3,4 секунды была разделена на 34 временных отрезка в 100 миллисекунд каждый. Фенотип одного эволюционного экземпляра состоит из 22 отдельных нейронных сетей. Каждая из этих сетей отвечает за управление роботом для одного или нескольких из 34 временных срезов (некоторые сети используются повторно для нескольких временных отрезков). Кроме того, есть одна предварительно обученная сеть, которая отвечает за балансирование только стоя, эта сеть является идентичной для всех экземпляров и контролирует робота в начале и в конце ходьбы, когда робот (в идеале) стоит на месте и в вертикальном положении. Чтобы оценить производительность данного набора нейронных сетей, запускается серия тестов с использованием сетей для контроля робота. Для каждого теста, создаются немного отличные начальные условия для того, чтобы симулятор не повторял свои предыдущие пути. Рандомизация состоит в применении случайного импульса силы робота, в случайном направлении, во время балансировки, прежде чем он начинает идти. Кроме того, мы изменяем расстояние между ногами, порядка нескольких сантиметров. В некоторых экспериментах, мы изменяем другие параметры, такие как коэффициент трения поверхности. Во время каждого теста моделируемого робота опускают на землю, и включают предварительно обученную сеть балансировки. Отводится несколько секунд на то, чтобы сбалансировать робота. Затем происходит переход от фазы балансировки к ходьбе. Каждая нейронная сеть имеет полный контроль над роботом в течение 100 миллисекунд. В пограничных точках перехода между сетями, применяется 50 мс период плавного перехода между сетями. В течение этого переходного периода, веса ребер нейросети опускаются от 1,0 до 0,0, в затем веса ребер следующей сети плавно поднимаются с 0,0 до 1,0.

Эта картина продолжается до конца хождения, и в этот момент мы переходим назад к балансировочной сети. Самые ранние попытки решения задачи приводили к тому, что робот терял свой баланс до завершения цикла хождения. (см. рис. 4.3, строки 1 и 2). При эволюционировании системы, хромосомы в популяции начали улучшаться, средняя популяция имеет возможность достичь завершения всей задачи перед потерей баланса. (см. рис. 4.3, строки 3, 4 и 5.) [9].


Демонстрация улучшения ходьбы
Рисунок 4.3. – Демонстрация улучшения ходьбы с течением времени

4.2.3 Робот «Морская звезда»


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

Робот «Морская звезда» (Starfish), имеет возможность изучать своё собственное строение и затем использовать эту модель для передвижения. Внешний вид робота изображен на рисунке 4.4.


Морская звезда (Starfish) Корнеллского университета
Рисунок 4.4 – Робот «Морская звезда»

Большинство роботов имеет фиксированную модель – программу, заложенную при проектировании. Данный робот имеет систему самомоделирования. Это делает его адаптивным. Он может решать задачи без заранее заданного алгоритма. Данный робот может приспособиться и продолжать действовать после получения повреждений.
В результате  тестирования «Морская звезда» самостоятельно, без написанного алгоритма, научилась передвигаться. При работе робот передвигался ползком, рывками, однако основная цель была достигнута, так  как изначально у него было задание передвигаться по плоскости по прямой.

Сразу после включения модель робота практически не содержит информации. Перед ним ставится задача двигаться по прямой. Кроме того, роботу известен набор элементов, из которых он состоит. За моторику отвечают 8 подвижных частей – по 2 на каждую конечность. Из этого набора данных он случайным образом строит различные комбинации предположений о том, как работают заложенные в него механизмы. После чего посылается сигнал на сервоприводы. С помощью встроенных сенсоров робот проверяет полученный результат. Из 100 моделей первого поколения 90% признаются непригодными, а остальные дорабатываются путем скрещивания друг с другом и заново проходят проверку на эффективность в достижении поставленной задачи.

По прохождении 16 циклов, в каждом из которых строится по 200 поколений виртуальных моделей «Морская звезда», получает информацию о своем устройстве, и запоминает выбранную ею виртуальную модель. На основе этой модели робот пытается добиться такого режима работы, при котором поставленная цель будет достигнута и робот не получит повреждений.

В итоге робот вырабатывает вполне функциональную походку. Самым эффективным вариантом на данный момент  является способ, при котором робот опирается на «живот», подтягивает своё тело, отталкивается «задними» ногами и переваливается.

После того как робот научился передвигаться с помощью четырех ног, имитируется авария: робот отключается, убирается одна нога и включается заново. Во время тестов машина вычисляет, что приспособленная ранее виртуальная модель для четырех ног не соответствует реальным показаниям датчиков. В таком случае робот вырабатывает новый алгоритм передвижения в соответствии с новой моделью [2].


5 АНАЛИЗ СУЩЕСТВУЮЩИХ МЕТОДОВ

В результате проведенного обзора литературы были выделены следующие подходы:

  • Управление передвижением робота с использованием статических алгоритмов и различных дополнений для обеспечения стабильности ходьбы. Так, например в роботе «RunBot» в качестве стабилизатора походки используются так называемые «локальные рефлексы» – заложенная в конечности упругая реакция на нагрузку. Благодаря ей осуществляется возврат конечности в исходное положение для поддержания стабильной ходьбы.
  • Обучение ходьбе с использованием генетических алгоритмов по предварительному шаблону. Подход подразумевает пересчет управляемых параметров через фиксированные временные промежутки, не связанные с фазами движения конечностей. Недостатком такого подхода является большая вычислительная нагрузка на робота и невозможность оптимизации управления ходьбой из-за отсутствия структурирования фаз движения конечностей. Также, из-за использования шаблона походки, управление конечностями осуществляется в небольшом диапазоне, допускаемом шаблоном. Это также негативно отражается на результате.
  • Обучение эволюционными методами с последовательным управлением конечностями. Данный подход не требует значительных ресурсов для вычислений. Шаблоны при данном подходе не используются. Однако такой подход не может обеспечить полноценную ходьбу, потому что при ходьбе в каждый момент времени должны использоваться все конечности. Из-за отсутствия шаблона походки и «неприродного» последовательного режима управления конечностями ходьба такого робота абсолютно не похожа на ходьбу животных и ее результативность низка.
Изменение вектора силы во время шага
Рисунок 4.5 – Изменение вектора силы, действующей на робота во время шага

(анимация: 7 кадров, задержка между кадрами 0,5 сек, количество циклов воспроизведения – 6, размер – 53 кб)


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


6 ВЫВОДЫ

В ходе анализа существующих подходов, были выбраны шагающие механизмы как наиболее перспективные и независимые от условий среды, рельефа местности, покрытия грунта.

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

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

Примечание

При написании данного реферата магистерская работа еще не завершена. Окончательное завершение: декабрь 2012 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Hein D. Simloid: Evolution of Biped Walking Using Physical Simulation / D. Hein – Berlin, Institut für Informatik, 2007. – 415 р.
  2. Lipson H. Evolutionary Robotics for Legged Machines: From Simulation to Physical Reality / H. Lipson, J. Bongard, V. Zykov, and E. Malone // Intelligent Autonomous Systems 9 (IAS–9) – 2006. – P. 11–18.
  3. Jakobi N. Evolutionary Robotics and the Radical Envelope–of–Noise Hypothesis / N. Jakobi // Adaptive behavior vol. 6 – 1997. – №9 – P. 325–368.
  4. Zielinska T. Motion synthesis. Walking: biological and technological aspects / T. Zielinska – CISM Courses and Lectures 467 – 2004. –  P. 151– 187.
  5. Hasimoto K.  Journal of the Robotics Society of Japan / K. Hasimoto, Y. Sugahara, M. Kawase, A. Hayashi, C. Tanaka, A. Ohta, T. Sawato, N. Endo, H. Lim,  A. Takanishi –  2007. –  №6. –  P. 53–60
  6. Bai S. Terrain evaluation and its application to path planning for walking machines / S. Bai , K.H. Low // Advanced Robotics –  2001. –  №7 – P. 729–748.
  7. Wongsuwarn H. Neuro–Fuzzy Algorithm for a Biped Robotic System / H. Wongsuwarn, D. Laowattana // Proceedings of the World Academy of Science, Engineering, and Technology – 2006. – №10. – P. 81–102.
  8. Garder L. M. Robot gaits evolved by combining genetic algorithms and binary hill climbing / L. M. Garder, M. E. Hovin // Genetic and Evolutionary Computation Conference (GECCO 2006) – 2006. – vol. 2 Seattle – P. 1165–1170.
  9. Palmer M. E. Evolved Neural Controllers for Bipedal Dynamic Walking with Multiple Demes and Progressive Fitness Functions / M. E. Palmer, D. B. Miller // Genetic and Evolutionary Computation Conference (GECCO 2009) – Montreal, Canada – 2009. – P. 289–301.
  10. Ковальчук А.К. Обзор моделей двуногих шагающих роботов / Ковальчук А.К. – М.: МГОУ, 2007. – 152 с.
  11. Loffler К. Sensor and Control Design of a Dynamically Stable Biped Robot / К. Loffler, М. Gienger, F. Pfeiffer // Robotics and Automation. 2003: Proceeding. ICRA apos; 03. IEEE International Conference. W.t. –  2003. – vol. 1. Issue 14–19. – P. 484–490.


Резюме | Автобиография | Реферат | Библиотека | Ссылки | Отчет о поиске | Индивидуальный раздел
ДонНТУ | Портал магистров