<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>РЕАЛИЗАЦИЯ АЛГОРИТМОВ ГРУППОВОГО УПРАВЛЕНИЯ НА ЯЗЫКЕ JAVA В СРЕДЕ ОС «ЭЛЬБРУС»*</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nikita Bocharov</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nikolay Paramonov</string-name>
          <email>paramonov_n_b@mail.ru</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ilya Sapachev</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>«MCST»</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Moscow</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Russia</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>«INEUM im. I.S. Bruka»</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Moscow</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Russia</string-name>
        </contrib>
      </contrib-group>
      <fpage>108</fpage>
      <lpage>114</lpage>
      <abstract>
        <p>Цель работы - разработка программного комплекса для отладки и демонстрации задач управления движением групп роботов, а также наблюдения за группой роботов с использованием нескольких камер с использованием Java в среде «Эльбрус». Показана возможность использования вычислительных средств ряда «Эльбрус» в качестве вычислителей для задач управления и наблюдения за группой роботов. Моделирование движения; поиск пути на графе; моделирование алгоритмов группового управления. The purpose of this work is developing the software for debugging and demonstration of tasks of motion control of robots group and monitoring a robots group using multiple cameras using Java language in the OS «Elbrus» environment. The article displays possibility of using computer systems of «Elbrus» series as computer for robots control and monitoring tasks. Motion modelling; search path on the graph; modelling algorithms of group control.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>ABSCTRACT
Постановка задачи</p>
      <p>В предыдущей работе [2] авторами было проведено моделирование алгоритмов поиска
пути отдельным роботом и алгоритмов технического зрения. Движение робота было сведено к
поиску пути на графе, соответственно был проведен анализ существующих алгоритмов поиска пути
на графе. В качестве используемого алгоритма был выбран алгоритм А* с некоторыми
изменениями в эвристической функции для учета дополнительных параметров. Для повышения
реалистичности модели в нее был включен учет таких параметров робота, как: скорость, ускорение,
радиус поворота, радиус обнаружения препятствий. В данной работе планировалось расширить
данную модель для моделирования уже не одного, а группы из нескольких роботов.</p>
      <p>Формально, в задаче обрабатываются три множества: множество роботов, множество целей
и множество внешних факторов. В разрабатываемой программе должно быть моделирование всех
этих множеств.
Задача поиска пути</p>
      <p>Задача поиска пути была сведена к задаче поиска пути на графе из узла-старта до
узлафиниша [3, 4]. Пара (V(G), E(G)) называется графом, если V(G) — непустое конечное множество
элементов, называемых узлами, а E(G) — конечное множество неупорядоченных пар различных
элементов из V(G), называемых рёбрами [5]. При этом поиск необходимо осуществлять, учитывая
проходимость различных опорных поверхностеи и радиус поворота робота.</p>
      <p>Для задачи поиска пути роботом также необходимо учитывать длину пути, что можно
обозначить через вес рёбер. При этом, если робот может переместиться из точки A в точку B, то не
обязательно, что он может и переместиться из точки B в точку A. Например, если точка A — это
точка на открытои местности, а точка B — точка у стены с азимутом, направленным прямо в стену.
Таким образом, для поставленнои задачи подходит использование взвешенного ориентированного
графа.</p>
      <p>Узел графа по определению представляет собои элемент графа, обозначающии объект
любои природы. В даннои задаче узел графа обозначает область на местности, в которую робот
имеет возможность встать. Так как необходимо учитывать радиус поворота робота, то необходимо
и учитывать азимут робота при построении пути. Таким образом, узел графа задается не только
координатами x, y, но и азимутом.</p>
      <p>Ребром графа обозначается траектория между узлами, которые она соединяет, по которои
может перемещаться робот. При этом траектория строится с учетом радиуса поворота робота. Так
как при поиске пути надо учитывать проходимость различных опорных поверхностеи, то вес ребра
обозначим как среднии коэффициент проходимости на всём протяжении траектории данного
ребра.</p>
      <p>Рисунок 1. Обход окружностей в одном направлении
Путь робота проходит от узла к узлу. Но эти узлы не могут быть соединены ребрами,
являющимися прямыми траекториями, так как робот не имеет возможность мгновенно
развернуться в нужном направлении. Поэтому между узлами необходимо находить траекторию с
плавными поворотами, соответствующими радиусу поворота робота. При этом необходимо
проверять эти траектории на наличие препятствий на пути.</p>
      <p>Учет радиуса поворота происходит при построении траектории от узла к узлу.
Соответсвенно, каждый узел, помимо координат, характеризовался еще и азимутом. Итоговая
траектория между двумя узлами состоит из трех сегментов - двух дуг и отрезка прямой. При этом
могут возникнуть два случая, различающиеся подсчетом основных точек: когда обе окружности
обходятся в одном направлении и наоборот. Выбирается та, которая имеет наименьшую длину.
Варианты обхода окружностей изображены на рисунках 1 и 2.</p>
      <p>Задача поиска наилучшего пути могла бы сводиться к задаче поиска кратчаишего пути. Но
в реальности данное решение не всегда приемлемо. Путь может проходить по различным опорным
поверхностям. Например, есть более длинныи путь по асфальтированнои дороге и более короткии
по песку. Заранее известно, что робот движется по песку намного медленнее, чем по асфальту и
поэтому лучшии путь был бы более длинным.</p>
      <p>Робот оценивает проходимость двумя методами: посредством анализа загружаемои в него
карты и посредством своих датчиков.</p>
      <p>Первыи метод формирует карту проходимости на основе загружаемои в робота карты
местности. Карта местности отображает виды опорных поверхностеи, а карта проходимости
отображает коэффициенты проходимости этих поверхностеи.</p>
      <p>Второи метод анализирует реальную проходимость и меняет карту проходимости, если
реальныи коэффициент отличен от коэффициента на карте.
Расчет карты проходимости</p>
      <p>При расчете карты проходимости карта местности в формате OpenStreetMap разбивается на
квадраты, соответствующие размерам робота. В каждом таком квадрате считается среднии
коэффициент проходимости по каждому пикселю. Если хотя бы один пиксель в этои области
окажется непроходимым, тогда вся область считается непроходимои. Иначе, робот помечает эту
область рассчитанным средним коэффициентом проходимости.</p>
      <p>Но с растровыми картами могут возникнуть некоторые проблемы. Во-первых, между
разными областями на карте в результате сглаживания, некоторые пиксели не соответствуют ни
одному цвету из легенды. Во-вторых, в результате того же сглаживания, некоторые пиксели могут
обозначать непроходимую область, хотя на самом деле это не так. И в-третьих, некоторые пиксели
могут немного отличаться от цветов в легенде (обычно не больше чем на 2 в одном из каналов). Эти
проблемы решаются путем сглаживания, использование скользящего окна и введения небольшои
погрешности. Пример формирования карты местности и сформированнои карты проходимости
приведен на рисунке 3.
Рисунок 3. Пример карты местности и карты проходимости
Алгоритм поиска пути</p>
      <p>Алгоритмы поиска пути ищут путь на графе из стартового узла в узел-финиш. При этом, в
зависимости от алгоритма, путь может быть кратчаишим. Кроме того, некоторые алгоритмы
позволяют учитывать вес узлов.</p>
      <p>Алгоритм А* считается одним из лучших алгоритмов поиска пути [6]. Он объединяет в себя
достоинства двух алгоритмов: учет длины пути из алгоритма Деикстры и учет эвристическои
функции из алгоритма «лучшии первыи».</p>
      <p>Алгоритм А* [7] использует формулу эвристики, которои в общем случае имеет вид:
f(n)=g(n)+h(n),
где f(n) — значение оценки для узла n, g(n) — стоимость пути из узла-старта в узел n, h(n) —
эвристическое приближение стоимости пути из узла n в узел-финиш.</p>
      <p>Функция h(n) должна быть допустимои эвристическои оценкои, то есть не должна
переоценивать расстояние до узла-финиша. Одним из способов задания такои функции является
длина прямои, соединяющии узел n и узел-финиш.</p>
      <p>Алгоритм работает аналогично алгоритму Деикстры, где вместо длины пути учитывается
функция f(n), а когда узлу n1 устанавливается родитель n2, пересчитывается функция g(n)
следующим образом:</p>
      <p>g(n1) = g(n2) + d(n1, n2),
где d(n1, n2) — расстояние между узлами n1 и n2.</p>
      <p>Так как подразумевается использование различных опорных поверхностеи с разными
коэффициентами проходимости и учет радиуса поворота, то функции g(n) и h(n) были изменены.</p>
      <p>Функция g(n) должна учитывать не только длину ребра, но и его вес. При этом желательно
внести штраф к поворотам. При указании узлу n1 родителя n2 происходит пересчет функции g(n)
следующим образом:</p>
      <p>g(n)=g(n2)+d(n1, n2)*w(n1, n2)+r(n1, n2)*w(n1, n2),
где d(n1, n2) — длина пути от узла n1 до узла n2, w(n1, n2) — вес ребра, соединяющего узлы n1 и n2,
r(n1, n2) — суммарныи угол поворота в радианах ребра, соединяющего узлы n1 и n2.</p>
      <p>Оценка h(n) рассчитывается как длина пути от узла n до узла финиша с учетом направлении
узла n и узла финиша, умноженная на среднии вес. Среднии вес в данном случае рассчитывается как
среднее значение веса в точках узла n и узла финиша.
Поиск пути группой роботов</p>
      <p>Для разрабатываемои модели было принято использовать схему независимого управления
с использованием общих ресурсов. Каждыи робот движется независимо от других в свою целевую
точку, считая остальных роботов препятствиями, которые надо объезжать. Общение между
роботами происходит через управляющую машину, которая уведомляется обо всех обнаруженных
несоответствиях карты местности и карты реальности. Далее, управляющая машина уведомляет
всех роботов о необходимости изменении карты проходимости, вследствие чего все роботы имеют
одинаковую и актуальную карту проходимости, позволяющую более точно планировать маршрут.
На рисунке 4 изображено окно программы с группои из трех роботов.</p>
      <p>Рисунок 4. Окно программы с группой из трех роботов
Рисунок 5. Окно программы наблюдения за группой роботов</p>
      <p>Наблюдение за роботами осуществляется группой камер с такими различными
параметрами, как радиус обзора и угол обзора. В данной модели предполагается, что отдельная
камера способна отследить в своей области видимости отдельных роботов и вести их от момента
въезда в область видимости до момента выезда из области видимости. Если робот выезжает из
области видимости на любое время большее минимального кванта, воспринимаемого программой,
то считается, что камера его «потеряла» и следующий въезд будет восприниматься как въезд
другим роботом. Далее алгоритм поиска соответствий ищет точки въезда и выезда и областей
видимости, которые могли бы принадлежать одному роботу. При поиске соответствий помимо
местоположения учитываются такие характеристики роботов, как: скорость, ускорение и азимут.
Если области видимости камер перекрываются, и робот проехал через это перекрытие хотя бы в
одной точке, то соответствие между траекториями с камер определяется отдельно и однозначно.
На рисунке 5 изображено окно программы с добавленными камерами, обнаруженными
траекториями и некоторыми соответствиями.</p>
      <p>Рисунок 6. Временные характеристики алгоритма построения графа проходимости</p>
      <p>Рисунок 7. Временные характеристики алгоритма поиска пути
Тестирование</p>
      <p>Разработанныи программныи стенд позволяет проводить эксперименты для оценки
скорости работы алгоритмов поиска пути, как для одиночного робота, так и в составе группы. Было</p>
      <p>В статье показано, что вычислительные средства ряда “Эльбрус” могут удовлетворять
требованиям, предъявляемым РТК в области планирования маршрута и наблюдения за группои
роботов. Показаны временные характеристики для соответствующих алгоритмов.</p>
      <p>Использование отечественных вычислительных средств и сертифицированного ОПО
“Эльбрус” позволяет говорить о перспективах решения задач импортозамещения в области
робототехники.</p>
      <p>References</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Bryan</surname>
          </string-name>
          <article-title>Stout (оригинальная статья) Maxim Kamensky (перевод). Алгоритмы поиска пути</article-title>
          [Электронный ресурс] // Программирование магических игр [Сайт] URL: http://pmg.org.ru/ai/stout.htm (дата обращения:
          <volume>27</volume>
          .
          <fpage>09</fpage>
          .
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Алгоритм</surname>
            поиска
            <given-names>A</given-names>
          </string-name>
          * [Электронный ресурс] // Википедия [Сайт] URL: https://ru.wikipedia.org/wiki/Алгоритм_поиска_A* (
          <source>дата обращения 27.09</source>
          .
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>Paramonov N.B.</given-names>
            ,
            <surname>Rzhevskiy</surname>
          </string-name>
          <string-name>
            <given-names>D.A.</given-names>
            ,
            <surname>Perekatov</surname>
          </string-name>
          <string-name>
            <surname>V.I.</surname>
          </string-name>
          <article-title>Doverennaya programmno-apparatnaya sreda «Elbrus» bortovykh vychislitel'nykh sredstv robototekhnicheskikh kompleksov // Voprosy radioelektroniki, ser</article-title>
          .
          <source>EVT</source>
          ,
          <year>2015</year>
          , vyp. 1.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>N.A.</given-names>
            <surname>Bocharov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.D.</given-names>
            <surname>Sapachev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.B.</given-names>
            <surname>Paramonov</surname>
          </string-name>
          .
          <article-title>Makety robototekhnicheskikh kompleksov na yazyke Dzhava v srede OS «Elbrus» : Materialy 58 nauchnoy konferentsii</article-title>
          MFTI,
          <fpage>23</fpage>
          -
          <lpage>28</lpage>
          noyabrya
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>universiteta</surname>
          </string-name>
          ,
          <year>2005</year>
          . -
          <fpage>307</fpage>
          s.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Berzh</surname>
            <given-names>K.</given-names>
          </string-name>
          <article-title>Teoriya grafov i ee primeneniya / Pod red. I. A</article-title>
          .
          <string-name>
            <surname>Vaynshteyna</surname>
          </string-name>
          .
          <article-title>- Moskva: Izdatel'stvo inostrannoy literatury</article-title>
          ,
          <year>1962</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <source>- 320 s.</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Uilson R. Vvedenie</surname>
          </string-name>
          <article-title>v teoriyu grafov</article-title>
          .
          <source>Per s angl. M.: Mir</source>
          ,
          <year>1977</year>
          . 208s.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Bryan</surname>
          </string-name>
          <article-title>Stout (original'naya stat'ya) Maxim Kamensky (perevod). Algoritmy poiska puti</article-title>
          [Elektronnyy resurs] // Programmirovanie magicheskikh igr [Sayt] URL: http://pmg.org.ru/ai/stout.
          <source>htm (data obrashcheniya: 27.09</source>
          .
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Algoritm</surname>
            poiska
            <given-names>A</given-names>
          </string-name>
          * [Elektronnyy resurs] // Vikipediya [Sayt] URL: https://ru.wikipedia.org/wiki/Алгоритм_поиска_A*
          <article-title>(data obrashcheniya 27</article-title>
          .09.
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>