Как стать автором
Обновить

ROS2 vs ROS1.Установка ROS2 на Ubuntu 18.04

Время на прочтение 5 мин
Количество просмотров 20K
ROS (Robotic operation system) уверенно занимает лидирующие позиции в стандартах робототехники. Говоря словами известного политика, ею уже пользуются «не только лишь все».
В данной статье попробуем взглянуть на следующий этап развития ROS — систему ROS2, подходящую для более «рукастых» разработчиков. Сравним обе системы в общих чертах, а заодно установим ROS2 на систему Ubuntu 18.04.



*изображение с www.theconstructsim.com
В качестве базовой конфигурации ПК будет использоваться слегка устаревшая модель — intel NUC (5i5RYK), 4GB RAM, SSD M.2 120Gb. Производительности NUC хватит «за глаза» для целей ROS, но одноплатники (raspberry, odroid, jetson) намеренно не рассматриваются, потому как каждый из них имеет свою специфику. Предполагается, что система Ubuntu 18.04 (рекомендуемая для целей использования с ROS) уже установлена.

Вступление.


За последнее десятилетие ROS (ROS1) вырос и вырос в несколько раз. В настоящий момент
он имеет огромный список пакетов, где каждый пакет решает проблему либо частично, либо
полностью, что исключает концепцию изобретения колеса заново. Созданные сообществом пакеты привели к тому, что был создан совершенно новый подход к робототехнике и предложена интеллектуальная начинка для существующих систем.

Ограничения ROS1.


Несмотря на то, что ROS1 дал определенную свободу общения со сложными аппаратными средствами и программными компонентами, имеются некоторые сложности, связанные с использованием ROS1 в конечном продукте. Данные сложности начинают появляться, когда существует целый парк разнородных роботов (мобильные роботы, роботы- манипуляторы и так далее).
Установить связь между ними довольно сложно из-за того, что существуют архитектурные ограничения ROS1.
Первое ограничение состоит в том, что ROS1 не поддерживает концепцию мультимастера.
Второе ограничение ROS1 заключается в том, что, несмотря на тот факт, что ноды могут без проблем общаться по сети между собой, нет безопасного пути в этом общении. Любой, кто имеет возможность подключиться к мастеру (master-node), может получить доступ к топикам и далее либо эксплуатировать или изменять их. Поэтому основное предназначение ROS1 — проверка концепции или прототипирование для научных целей.
И третье, пожалуй, основное ограничение ROS1 — данная система не является real-time системой. Что приводит к задержкам в получении данных и их потере.
Все вышеизложенные недостатки подтолкнули к созданию ROS2.

Какие преимущества дает ROS2 ?


— позволяет устанавливать безопасные соединения между компонентами системы (нодами)
— взаимодействие осуществляется в режиме «real-time»
— соединение нескольких роботов в одну сеть упрощено
— улучшено «качество общения» между нодами
— реализуется уровень ROS архитектуры непосредственно на аппаратном обеспечении
— используются новейшие пакеты обновлений (ROS1 обновляется не так часто).

ROS2 следует индустриальному стандарту и реализует real-time взаимодействие через так называемую концепцию DDS (Data Distributed Services).

Версии ROS2

.
Первая официальная стабильная версия ROS2 была выпущена в декабре 2017г. Дистрибутив назвали «Ardent Apalone». Далее был релиз в июне 2018, с именем «Bouncy Bolson». «Crystal Clemmys» появился в декабре 2018. «Dashing Diademata» (актуальная версия) в мае 2019 г. Как видно, дистрибутивы обновляются достаточно бодро, и, надеемся, алфавита хватит на первое время.

Поддержка ОС

.
ROS2 поддерживает (если говорить об официальной поддержке) Linux, Windows, macOS, и Real-Time Operating Systems (RTOS) OS layers, ROS1 только Linux и macOS.
Более детально поддержка ОС:


Итак, зачем нужен ROS2?


ROS2 использует те же принципы работы, что и ROS1. В то же время, ROS2 не является частью ROS1. ROS2 был создан, чтобы перешагнуть ограничения своего собрата путем использования более новых зависимостей и инструментов.
В отличие от ROS1, cтек которого написан на C++, а клиентские библиотеки на C++ и Python, в ROS-2 также используется язык C. Представлен независимый уровень, написанный на C, который взаимодействует с клиентскими библиотеками ROS2, такими как rclcpp, rclpy, and rcljava.

ROS2 лучше поддерживает сетевые конфигурации и реализует надежные соединения.
ROS2 также более не использует концепцию nodelets (http://wiki.ros.org/nodelet ) и поддерживает возможность инициализации нескольких нод одновременно (multinode initialization). В отличие от ROS1, еще одной отличительной чертой ROS2 является возможность отслеживать статус ноды и получать сообщения, если нода или топик добавились или были удалены. Это можно использовать для создания отказоустойчивых систем.

Изменения, которые произошли в ROS2 в сравнении с ROS1:


Установка ROS2

.
Итак, установим из исходников актуальный дистрибутив Dashing Diademata (dashing) на Ubuntu 18.04

Настроим окружение.


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


Добавим репозитории ROS2.


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


Установим инструменты разработчика ROS.


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


Создадим workspace ROS2.


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

Это займет некоторое время.

Установим зависимости, используя rosdep.


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

Если все прошло успешно и в терминале появилась запись «All required rosdeps installed successfully», можно переходить к следующему шагу.

Собираем код, устанавливаем colcon.


В ROS1 пакеты собирались с помощью инструмента catkin. В ROS2 используется colcon (утилита, вобравшая в себя catkin_make, catkin_make_isolated, catkin_tools, и ament_tools). colcon может собирать как пакеты ROS1 и пакеты ROS2.
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install


После последней команды, можно смело отправиться пить чай, т.к. установка может занять около часа времени.
По ее успешном завершении, в терминале появится примерно следующая информация об успешной установке:


Настройка окружения для ROS2 (environment).


Чтобы каждый раз для инициации ROS в терминале не вводить длинную команду 'source ~/ros2_ws/install/local_setup.bash', добавим alias в bashrc:
$ sudo gedit ~/.bashrc

Далее необходимо в конец файла добавить строку:
alias initros2='source ~/ros2_ws/install/local_setup.bash

Сохранить, выйти из файла и перечитать его командой (чтобы не перезагружать систему):
$ source ~/.bashrc

Проверим работу ROS2.


1-й терминал:
$ initros2
$ ros2 run demo_nodes_cpp talker

Эти команды запускают «говорящую» ноду.

2-й терминал:
$ initros2
$ ros2 run demo_nodes_py listener

Здесь, соответственно, запускается «слушающая» нода.

Наглядно обе ноды выглядят примерно так:


Можно посмотреть также генерируемые нодами топики в 3-м терминале:


Подведем итог. Была обзорно рассмотрена ROS2 в сравнении с ROS1, продемонстрирован порядок установки ROS2 (Dashing Diademata (dashing)) на Ubuntu 18.04.
Теги:
Хабы:
+8
Комментарии 20
Комментарии Комментарии 20

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн