- PVSM.RU - https://www.pvsm.ru -

Buzz, язык программирования для самоорганизующегося роя беспилотников

Buzz, язык программирования для самоорганизующегося роя беспилотников - 1

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

Эта же тема заинтересовала канадца итальянского происхождения, Карло Пинцироли (Carlo Pinciroli [1]), который с 2007 года занимается исследованиями в области управления большим количеством полуавтономных роботов [2]. Он вместе с коллегами рассказал [3]о последнем достижении в этой области — язык для программирования роя роботов Buzz [4]. Разработку ведут учёные из политехнической лаборатории MIST канадского института École Polytechnique de Montréal и их зарубежные коллеги.

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

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

image
Рой роботов из проекта МакЛюркина [5], другого исследователя в этой области

Авторы языка Buzz описывают его, как синтаксического наследника распространённых сейчас JavaScript, Python и Lua. Это сделано для уменьшения входного порога в язык. Они постарались сделать его таким образом, чтобы у программиста был выбор подхода — он сможет выбирать, работать ему снизу вверх или сверху вниз.

Язык обогащён специальными конструкциями для работы с роями роботов. Например, swarm позволяет делить роботов на группы, у каждой из которых будет своя задача. Конструкция neighbors позволяет работать с взаимодействием соседних роботов между собой и эмулировать поведение животных в настоящих стаях.

Существуют и другие конструкции — например, virtual stigmergy (виртуальная стигмергия), дающая роботам команду передать всем и запомнить информацию в виде наборов пар «ключ-значение». Она названа так в честь механизма опосредованного координированного взаимодействия насекомых, который впервые наблюдали у термитов. Когда один из них меняет состояние окружающей среды, другие воспринимают это изменение, и оно служит для них стимулом, определяющим их последующие действия.

Карло Пинцироли в ходе своей исследовательской деятельности также создал ARGoS [6] — программу для симуляции работы большого количества роботов. Эту программу использует несколько институтов и независимых команд исследователей, работающих в схожих направлениях. На видео показана демонстрация взаимодействия виртуального роя роботов в виртуальном окружении ARGoS, которые эмулируют работу коптеров Spiri [7](краудфандингового проекта, в данный момент находящегося в стадии выпуска готового продукта).

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

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

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

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

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

Язык Buzz свободный, его исходный код открыт и распространяется по лицензии MIT.

Автор: SLY_G

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/robototehnika/95944

Ссылки в тексте:

[1] Carlo Pinciroli: http://carlo.pinciroli.net/publications.php

[2] полуавтономных роботов: http://geektimes.ru/post/249140/

[3] вместе с коллегами рассказал : http://robohub.org/buzz-a-novel-programming-language-for-heterogeneous-robot-swarms/

[4] Buzz: http://the.swarming.buzz/wiki/doku.php

[5] МакЛюркина: http://www.pbs.org/wgbh/nova/tech/mclurkin-robot.html

[6] ARGoS: http://www.argos-sim.info/users.php

[7] коптеров Spiri : http://pleiades.ca/pre-order/

[8] Источник: http://geektimes.ru/post/260144/