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

e7337e809dd54592b3b65b518952df32.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© Geektimes