Как установить ROS NOETIC на UBUNTU 20.04

Почему я решил написать этот пост?

Вы конечно же можете посмотреть оригинальную инструкцию по установке ROS Noetic на сайте ROS Wiki , однако там все на английском и объясняется весьма туманно, я же постараюсь объяснить вам как можно понятнее. Итак, начнем.

Что такое ROS?

ROS — Операционная система для роботов, остов для программирования роботов, предоставляющий функциональность для распределённой работы. ROS был первоначально разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета.

Можно ли установить ROS Noetic на другие версии Ubuntu?

Правильного ответа на этот вопрос нет. Отдельные пакеты Noetic вроде как можно установить на другие версии операционной системы, однако стабильность их работы не гарантируется. Поэтому скорее все нет. Итак, давайте все-таки перейдем к самой установке.

Что делать если я использую другую версию Ubuntu

ROS разрабатывался в разных версиях, которые устанавливаются на разные версии Ubuntu.

Версия Ubuntu

Версия ROS

Ubuntu 15.04 & 16.04

ROS Kenetic

Ubuntu 18.04

ROS Melodic

Ubuntu 20.04

ROS Noetik

Как установить ROS если вы используете другую версию Ubuntu? Легко! Просто во всех примерах кода заменяйте слово noetic на название той версии, которая удовлетворяет вашем характеристикам например вместо ros-noetic, вы можете написать ros-melodic

Подготовка к установке. Настройка репозиториев

Начнем с того, что существуют четыре основных репозитория:

  • Main - бесплатное программное обеспечение с открытым исходным кодом, поддерживаемое Canonical.

  • Universe - бесплатное программное обеспечение с открытым исходным кодом, поддерживаемое сообществом.

  • Restricted - проприетарные драйверы для устройств.

  • Multiverse - Программное обеспечение, ограниченное авторским правом или юридическими вопросами.

Итак, начинаем настройку. Сначала открываем вкладку "Программное обеспечение Ubuntu" и в настройках "Ubuntu Software" ставим галочки так, как показано на картинке

Далее переходим во вкладку "Other sowtware" и ставим галочки на пунктах Canonical Parthners и Canonical Parthners(source code)

Установка этих параметров поможет корректно установить пакеты ROS

Установка ROS Noetic

Шаг 1

После настройки репозиториев можем приступать к самой установке. Для начала настраиваем систему на прием пакетов программного обеспечения с packages.ros.org . Вставляем в терминал следующую команду:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $ (lsb_release -sc) main"> /etc/apt/sources.list.d/ros-latest.list'

После этого настраиваем свои ключи. После добавление репозитория вводи одну из следующих команд:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

В качестве альтернативы мы можем использовать curl вместо команды apt-key, что может быть полезно, если вы находитесь за прокси-сервером:

curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

Шаг 2

Во-первых обновляем пакеты с помощью команды

sudo apt-get update

Шаг 3

Начинаем установку. Для этого надо решить, какой ROS вы хотите себе установить:

  1. Desktop Full - та сборка, которую я вам рекомендую ставить. Эта версия устанавливает все, что только можно: 2D/3D симуляторы и программы восприятия. Для того, чтобы установить эту версию пишем в терминале:

sudo apt install ros-noetic-desktop-full

2. Desktop Instal - этот пакет содержит в себе все компоненты на базе ROS, а также и такие элементы как  rqt и rviz. Для установки этой версии пишем в терминале следующую команду

sudo apt install ros-noetic-desktop

3. ROS-Base: (Bare Bones) - это просто голые библиотеки и пакеты ROS. Это тот вариант, который подойдет для продвинутых специалистов. Для установки этого варианта пишем в терминале:

sudo apt install ros-noetic-ros-base

Также вы можете установить какой-либо конкретный пакет ROS воспользовавшись командой:

sudo apt install ros-noetic-ИМЯ_ПАКЕТА

Шаг 4

Устанавливаем пакет bash, в котором мы будем использовать ROS. Пишем в терминале:

source /opt/ros/noetic/setup.bash

Шаг 5

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

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

Шаг 6

Прежде чем вы сможете использовать многие инструменты ROS, вам нужно будет инициализировать rosdep. Он позволяет легко устанавливать системные зависимости для исходного кода, который вы хотите скомпилировать, и требуется для запуска некоторых основных компонентов в ROS. Если вы еще не установили rosdep, то самое время его установить. Для этого пишем в терминале:

sudo apt установить python3-rosdep

Шаг 7

Для инициализации rosdep пишем в терминале:

sudo rosdep init

И потом пишем следующее:

rosdep update

ИТОГ

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

Комментарии 7

    +3
    Простите, но вы же просто перевели исходный гайд на официальном сайте ROS, добавив в него явно кусок на который этот гайд просто ссылается. При условии что процесс установки ROS почти буквально состоит из готового набора команд, который просто можно ввести в указанной последовательности. А ведь ROS можно установить не только на убунту, и не только для bash…
    Вы убрали то, что было в официальном гайде, исказили суть некоторых фраз своим переводом (Какой еще пакет bash вы устанавливаете в шаге 4? это настройка переменных окружения, о чем явно сказано в исходном гайде. Более того, вы делаете это неправильно — вы устанавливаете переменные только в текущем экземпляре терминала, чтоб установить их для всех будущих экземпляров нужно добавить эту строку в .bashrc)
    Более того, если официальный гайд изменится ваш гайд тут же станет еще больше путать других людей. Перевод не должен искажать смысл оригинала. И насколько я помню офсайт построен на вики структуре, и поддерживается сообществом ROS, там множество готовых гайдов для ros на руссоком. Может вам стоило лучше перевести их? (http://wiki.ros.org/ru/ROS/Installation)
      0

      Я же в начале написал, что вы можете посмотреть оригинальную инструкцию на сайте. Зачем так придираться?

        0
        «Придирки» это если бы я вам говорил про ошибки форматирования в статье (они кстати тоже есть). А я говорю о фактических ошибках, которые могут запутать неопытных пользователей ROS. Написав этот «гайд» вы исказили его оригинальный смысл, у людей которым он может потребоваться возникнут противоречия с другими материалами, а это безусловно плохо. Проще говоря, вместо того чтобы помочь, вы потенциально навредили.
        Если оригинальный гайд вам кажется непонятным — дополните его. Разберитесь с непонятными кусками и расширьте их в своем гайде. Вместо этого вы просто пропустили оригинальный гайд через какой-то гугл транслейт (шаг 6, «sudo apt установить python3-rosdep» тому пример) и убрали то, что показалось вам лишним, хотя лишним оно не являлось. Вы же хотите чтоб ваш материал принес пользу, ведь так?
        Это конечно мое личное мнение, но мне кажется было бы намного лучше, если бы вы привнесли на хабру какой-то новый полезный опыт. То, чем является ваша статья в данный момент — скорее вредно, чем полезно. Хабр это не личный блог, качество материалов важнее факта их наличия.

        Есть много путей какими вы могли бы улучшить оригинальный гайд, сделав его более понятным для начинающих, например убрав из него избыточность, или объяснив зачем эта избыточность нужна. rosinstall, например, для многих пользователей на начальном этапе просто не нужен, хотя бы потому что он больше интересен при чистой установке окружения на новых роботов, а при разработке люди либо используются бинарными пакетами, устанавливая их ручками через apt. Другой пример — при обычном пользовании совершенно не важно знать разницу между инсталяциями ros-noetic-desktop и ros-noetic-desktop-full, хотя бы потому что для компьютера разработчика чаще всего просто ставится full (благо машины разработчиков обычно почти бездонные), а вот на роботах лучше ставить base, а доустановку зависимостей производить тем же rosinstal (и в этот момент он начинает быть нужен на компе разработчика, ведь файлы описаний нужно еще написать и проверить).
        Если не хотите добавлять новое, напишите хотя бы дословно все то, что есть в оригинале.

        Главное, на что я хочу обратить ваше внимание, так это на то, что статью можно, и нужно улучшить, тогда она может стать полезной и важной. Сейчас ваша статья таковой не является.
      +2
      Напишите лучше статью (это ко всем относится, а не только к данному автору) — по работе с ROS. О том как подключать руки робота по EtherCat или вообще взять набор моторов и настроить работу с ними. А то по установке я не раз видел статьи, а что с этим ROS потом делать — история умалчивает
        0

        Я примерно год проработал с ROS2, делал мелкие пулл-реквесты и запилил расширение для VS Code для удобной работы с тулзой сборки colcon. Я порывался написать статью, но предпочитаю не писать о том, чего не понимаю, а ROS я не понимаю, и опыт работы с ним совершенно не помог.


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

          0

          Спасибо за отзыв. Я обязательно постараюсь сделать больше гайдов по ROS.

          0

          Спасибо за совет. Обязательно займусь этим

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое