e Роботы в облаках: совмещение ROS и Jupyter – Блог Рег.ру
Категории AI да GPU

Роботы в облаках: совмещение ROS и Jupyter

Робототехника — одна из самых популярных и прогрессивно развивающихся отраслей. Ролики Boston Dynamics на YouTube собирают миллионы просмотров. Если вы давно хотели собрать собственную робособаку Spot, но не знали, с чего начать — вам на помощь придёт облачная робототехника, Jupyter и ROS. В этой статье мы расскажем, как исследователям удалось совместить эти инструменты в удобном интерфейсе для более быстрой разработки программ, управляющих роботами.

Jupyter пользуется большой популярностью в data science, но пока еще не находит широкого применения в робототехнике. Не так давно сотрудниками компании Quantstack была выпущена первая версия пакета jupyter-ros — набора интерактивных виджетов Jupyter, аналогичных по своим возможностям Qt и Rviz. Поскольку облачная робототехника начинает активно развиваться, эти инструменты могут очень пригодиться разработчикам.

Танцующий робот PR2 в браузере

Исторически сообщество ROS пользуется средствами Qt для создания пользовательских интерфейсов. На сегодняшний день блокнот Jupyter и фреймворк ipywidgets предлагают убедительную по нескольким причинам альтернативу:

— Код и интерфейс не разделены, оба находятся в одном блокноте.

— Доступно создание сложных виджетов с использованием браузерных технологий: от JavaScript-слайдеров до 3D с WebGL и потокового видео в реальном времени с WebRTC.

— Поддержка любого веб-браузера, нет привязки к Linux.

— Не нужно компилировать Qt-приложения.

— Не требуется локальный запуск. Приложения могут работать на удалённом сервере без какой-либо ручной настройки или установки.

Однако ROS не очень хорошо взаимодействует с Jupyter. Библиотека rospy по сути является многопоточной (каждый новый подписчик ROS-топика создаёт новый поток). Если возникнет необходимость вывести отладочные сообщения, то Jupyter напечатает их в области вывода активной ячейки блокнота, превратив её в огромное нагромождение текста. И остановка печати логов будет довольно проблематичной.

Jupyter-ros спешит на помощь

Поэтому и был создан jupyter-ros. Это набор плагинов для экосистемы Jupyter, позволяющий с лёгкостью работать с ROS.  

Пример ROS.ipynb: подписка с помощью jupyter-ros создаёт интерактивный виджет

Когда вы подписываетесь на топики с помощью jupyter-ros, функция возвращает ipywidget с кнопкой запуска / остановки и выделенной областью для вывода отладочной информации. То есть, весь вывод из потока подписчика перенаправляется в эту ячейку, и вы получаете полный контроль над ним. Можно в любое время остановить и перезапустить процесс.

Если вы вызываете функцию издателя (publisher) в jupyter-ros, то виджет генерируется автоматически в зависимости от спецификации сообщения. Например, поле String становится виджетом ввода текста, а Float32 превращается в слайдер.

Прямая передача данных IMU из BBC micro:bit

Ещё одна интересная функция: построение графиков прямо в процессе работы программы, похожее на rqt-plot. Для этого используется инструмент bqplot. С помощью jupyter-ros можно автоматически отобразить на графике необходимые данные из сообщений.

Как насчёт 3D?

Большинство роботов — трёхмерные, поэтому нам нужна визуализация! В ROS на данный момент используется Rviz, очень мощный инструмент для работы с объёмными объектами.

Некоторые функции RViz уже были перенесены в браузер в программе RobotVebTools. Взяв за основу их впечатляющую работу, разработчики из Quantstack выпустили первую версию виджетов ROS3D Jupyter. С их помощью можно визуализировать различные типы данных: лазерное сканирование, траектории движения и 3D-модели роботов.

Благодаря ipywidgetification вы можете создавать сложные визуализации прямо в браузере без JavaScript и свободно размещать их в JupyterLab.

Jupyter, виджеты и облачная робототехника

В облачной робототехнике часть программного обеспечения для одного или нескольких роботов выполняется на мощных компьютерах в дата-центрах. Jupyter и JuputerLab являются идеальными кандидатами для разработки такого ПО. Клиентские программы роботов смогут работать в едином удобном интерфейсе без необходимости устанавливать дополнительные расширения или запускать определённую операционную систему (разные версии ROS обычно совместимы с разными Ubuntu). Это даёт простор для возможностей: с JupyterLab и jupyter-ros можно даже запустить Docker-контейнер на облачных серверах.

Например, если вам нужно обрабатывать много данных, поступающих с датчиков, или отрисовывать массивные карты — на наших серверах стоят мощные GPU NVIDIA Tesla V100, с которыми эти задачи будут выполняться гораздо быстрее.

Продемонстрируем, как использовать jupyter-ros на сервере.

Пример использования jupyter-ros

Для начала нам понадобится настроенная среда ROS. Для удобства будем использовать готовый docker-образ. 

Установка и настройка

1. Загрузим и запустим ROS-образ с поддержкой CUDA — для этого понадобится nvidia-docker. Мы будем использовать последнюю версию ROS. 

docker pull ros
nvidia-docker run -p 8888:8888 -it ros 

2. Выполним скрипт, который автоматически настроит среду:

./ros_entrypoint.sh

3. Теперь установим pip, Jupyter и необходимые для jupyter-ros пакеты следующими командами:

apt update
apt install python3-pip -y
pip3 install jupyter bqplot pyyaml ipywidgets jupyros rospkg
pip3 install jupyter_contrib_nbextensions && jupyter contrib nbextension install
jupyter nbextension enable --py --sys-prefix widgetsnbextension
jupyter nbextension enable --py --sys-prefix jupyros

6. Запустим Jupyter:

jupyter notebook --allow-root --ip=0.0.0.0 --no-browser --NotebookApp.token=''

Запуск jupyter-ros

1. Для начала клонируем репозиторий jupyter-ros в домашнюю папку.

cd /home
git clone <a href="https://github.com/RoboStack/jupyter-ros.git">https://github.com/RoboStack/jupyter-ros.git</a> 

Репозиторий успешно клонирован:

2. Проверим работу jupyter-ros на примере ROS 3D Grid.ipynb. Файл находится в папке jupyter-ros/notebooks.

Необходимо запустить процессы ROS с помощью команды roscore. Вернёмся в терминал Jupyter:

3. Теперь откроем и запустим файл:

Видим, что 3D-сетка успешно отображается.

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

Если раньше робототехника преимущественно развивалась в военной промышленности, то теперь она проникает и в другие отрасли. Машины научились не только удерживать равновесие и танцевать, но и помогать в бытовых делах, доставлять посылки и следить за состоянием здоровья людей. Роботы исследуют местность, где не может находиться человек — взять хотя бы марсоходы или ликвидаторы, разбиравшие радиоактивные завалы в Чернобыле, о которых умолчали в популярном сериале. Облачная робототехника должна стать мощным толчком в развитии технологий, позволяющих внедрять искусственный интеллект в системы управления роботами и существенно ускорять их разработку.

Примеры использования и исходный код jupyter-ros можно найти на GitHub.

С оригинальной статьёй можно ознакомиться в блоге Jupyter.

Похожие публикации

Пошаговая инструкция по созданию сайта на Tilda

Tilda — это конструктор сайтов, который позволяет создавать современные веб-проекты без глубоких знаний программирования. С…

2 дня назад

Бизнес на маркетплейсах: новые правила с 1 октября 2026 года

С 1 октября вступает в силу закон о платформенной экономике № 289-ФЗ. Изменения затронут продавцов на…

2 дня назад

Контент для сайта: как эффективно наполнить страницы, чтобы бизнес развивался

На любом сайте есть контент — всё то, что посетитель читает, видит или слушает. Он…

1 неделя назад

Как избежать штрафов Роскомнадзора: разбор ошибок на сайте, рекомендации и чек-лист для самопроверки

Часто внеплановая проверка Роскомнадзора происходит не из-за жалоб, а из-за несоответствия сайта требованиям, которые регулятор…

1 неделя назад

Как подать жалобу в налоговую службу в 2026 году

Бывает, что бизнес не согласен с решениями, действиями или бездействием своей налоговой инспекции. Например, ФНС…

2 недели назад

Как оформить ЛПХ в 2026 году: пошаговое руководство

Вместе с экспертами Destra Legal разбираемся, как оформить ЛПХ в 2026 году — пошагово и…

2 недели назад