Как мы превращали 3d-принтеры в автономных экономических агентов на берегу Волги с AIRA Lab

Что такое Робономика

Робономика - это ежегодный шабаш слёт блокчейн разработчиков на берегу Волги, проводимый командой AIRA Lab в Тольятти. В этом году она запомнилась мне не только прекрасными сказками Гайдука и чудесной музыкой Эмпатии в свете полной луны. Для меня это был недельный хакатон, пожалуй, лучший из всех, где мне доводилось участвовать.

Что делали

В рамках Робономики-2018 ребята из AIRA Lab провели интереснейший интенсив для разработчиков, на котором покрыли такие темы как:

  • Разворачивание mesh сетей
  • Обмен файлами через IPFS
  • Обмен сообщениями через IPFS Pub Sub
  • Введение в ROS и фреймворк Робономики от AIRA Lab
  • Кейсы: построение реальных робономических систем поверх изученного стека:
    • Мобильная робототехника: Дрон, выполняющий полётное задание по заключенному с заказчиком контракту, с оплатой в XRT токенах.

    • Индустрия 4.0: 3D принтер, выполняющий печать заданной модели по заключенному с заказчиком контракту, с оплатой в XRT токенах.

    • Сенсорная сеть города: Набор датчиков взвешенных частиц, производящих измерения по заключенному с заказчиком контракту, с оплатой в XRT токенах.

Все три кейса ужасно интересны. Ваш покорный слуга выбрал кейс Индустрия 4.0 ввиду имеющегося опыта работы с 3D принтерами. Поэтому его я опишу подробнее ниже.

Поднимаем Mesh сеть: B.A.T.M.A.N. + CJDNS

Какая же децентрализованная система без одноранговой p2p сети! Поэтому первым делом поднимаем такую сеть, затем уже разворачиваем IPFS и Ethereum ноду поверх неё.

  • B.A.T.M.A.N строит виртуальную Ethernet сеть
  • CJDNS строит маршрутизацию в этой сети
  • IPFS и Geth работают уже поверх них

Для экспериментов разворачивалась приватная сеть Ethereum. Но всё проделанное с тем же успехом можно повторить и в основной сети Ethereum.

Пошаговые руководства: тут и тут

Строим Индустрию 4.0 своими руками

Задача

Нашей задачей было построить систему, в которой любой желающий может вступить в экономическое взаимодействие с роботом. А именно, выбрать модель и распечатать её на 3D принтере ZENIT, заключив с ним контракт и оплатив его через простой и понятный веб-интерфейс.

Архитектура

Architecture Diagramm

Основные компоненты:

  • DApp с UI, позволяющий выбрать модель для печати и отправить подписанную транзакцию со спросом на услугу “маяку”
  • Robomomics Communication Stack: набор ROS пакетов, включающий в себя
    • Lightghouse - “маяк”, компонента, сводящая предложение услуги и спрос на неё, подобно ордерам Ask и Bid на бирже
    • Liability - компонента, формирующая “контракт-обязательство” между роботом и заказчиком услуги
  • Сеть Ethereum с развернутыми смарт-контрактами “маяка” и “обязательства”
  • IPFS PubSub как распределенный канал коммуникации компонент системы
  • 3D принтер с Octoprint интерфейсом, и скрипты pub_bid.py и print.py, служащие адаптером принтера к ROS

Процесс

Sequence Diagram

Диаграмма последовательности показывает основные узлы процесса, без связующих компонент, таких как IPFS PubSub топики и скрипты-адаптеры, выполняющие 2 функции:

  • автоматизация размещения принтером бида (будем считать, что бид размещает экономический агент, “робот-принтер”, самостоятельно)
  • отправление на принтер задания (опять же, можно считать это частью логики принтера)

Пошаговое руководство

Для желающих повторить наши эксперименты, мы подготовили пошаговые гайды:

Результат

Кто бы мог подумать, но футуристические, будоражущие сознание идеи, описанные в бумаге AIRA, воплощаются в реальность прямо на наших глазах! Честно говоря, слушая ребят из AIRA год назад, я посчитал их немного сумасшедшими ;). И вот сегодня я и другие разработчики уже используем их фреймворк для построения реальных систем экономики роботов! Спасибо ребятам за полученное удовольствие и предоставленную возможность соприкоснуться с технологическим будущим.

Hacking Photo