Установка ROS2 на Armbian

Раз уж читатель наткнулся на эту статью, рассказывать что такое Armbian и ROS не буду. Сразу к делу. Будем ставить ROS2 на одноплатный компьютер BananaPi M5 под управлением этого самого Armbian.

BananaPi разных версий можно купить у нас в RobotClass:

В корзину
В корзину

Итак, начальные условия такие:

  • Banana Pi M5;
  • SD-карта размером 16 Гб;
  • Armbian Jammy.

К моменту публикации этой статьи уже был Armbian Bullseye, но собрать на нём ROS2 не вышло — colcon просто ничего не делал и ошибок в лог не кидал.

Подготовка и сборка ROS2

Устанавливаем набор пакетов с помощью apm. Работаем под учётной записью обычного пользователя:

sudo apt update && sudo apt install -y \
build-essential wget git cmake \
python3-pip python3-rosinstall-generator \
python3-colcon-common-extensions \
python3-flake8*
python3-pytest python3-pytest-cov python3-pytest-repeat python3-pytest-rerunfailures \
python3-setuptools libcunit1-dev

Затем с помощью pip ставим ещё несколько пакетов:

sudo pip3 install -U rosdep
sudo pip3 install -U vcstool
sudo pip3 install -U catkin_pkg
sudo pip3 install -U rosdistro
sudo pip3 install -U colcon-common-extensions

Далее создаём папку ros2 вместе с подпапкой src в домашней папке пользователя. И переходим в ros2:

mkdir -p ~/ros2/src
cd ~/ros2

Загружаем список репозиториев, из которых будет собираться ROS:

rosinstall_generator ros_base --deps --rosdistro humble > ros2.repos

Теперь клонируем эти репозитории в папку src. Процесс будет длиться минут пять, а в это время в консоли будут рисоваться точки — индикатор прогресса.

vcs import src < ros2.repos

Инициализируем и обновляем утилиту rosdep:

sudo rosdep init
rosdep update

Теперь сборка зависимостей.

rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-catkin-pkg-modules python3-rosdistro-modules" --rosdistro humble

Особое внимание на директиву skip-keys. Суть в том, что некоторые пакеты, хоть убей, не хотят собираться в команде. Если так происходит, и в ходе сборки вываливается ошибка вида:

ament_pep8: No definition of [python3-pep8] for OS version []

то следует этот пакет указать в skip-keys, а затем установить его вручную. При написании данной статьи мне пришлось так поступить с: python3-catkin-pkg-modules и python3-rosdistro-modules. Как видите, я их рекомендовал установить с помощью PIP в самом начале нашего путешествия.

Теперь самое долгое — сборка. Займёт около часа.

colcon build --symlink-install

Готово! ROS2 собран. Теперь мы проверим его работоспособность с помощью двух базовых узлов: talker и listener. Но для начала, их тоже нужно будет собрать.

Сборка примеров

Создаём папку для примеров, с подпапкой src. И переходим в src:

mdkir -p ~/ros2_ex/src
cd ~/ ros2_ex/src

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

git clone -b humble https://github.com/ros2/demos

Параметр -b humble указывает на то, что нужно скачать примеры именно из ветки humble. Если этого не сделать (как в официальной инструкции), то код примеров может и не собраться.

Возвращаемся в папку ros2_ex и собираем код пакета demo_nodes_cpp:

cd ~/ros2_ex
colcon build --packages-up-to demo_nodes_cpp

Готово. Теперь запустим два узла: talker и listener — это Hello World в мире ROS.

Запуск talker и listener

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

source ~/ros2_ex/install/local_setup.bash

Далее, запустим два узла в разных терминалах. Открываем первый терминал и запускаем talker. Этот узел отправляет в шину ROS текстовые сообщения формата: Hello World: индекс_счетчика.

source ~/ros2_ex/install/local_setup.bash
ros2 run demo_nodes_cpp talker
ROS2 узел talker

Затем открываем второй терминал, в котором также подгружаем окружение. Запускаем узел listener. Этот узел подписан на сообщения, которые отправляет его друг talker. Узел транслирует получаемые сообщения в консоль.

source ~/ros2_ex/install/local_setup.bash
ros2 run demo_nodes_cpp listener

Получим такой вывод:

ROS2 узел listener

Вот и всё. ROS2 установлен и теперь одноплатный компьютер может стать сердцем очередного робота!

Полезные ссылки

Официальная инструкция по установке ROS2 Humble на Ubuntu:

https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

Armbian для BananaPi M5:

https://www.armbian.com/bananapi-m5/


Изменено:

Установка ROS2 на Armbian: 2 комментария

  1. Спасибо за статью. Собрал ROS2 Humble на Orange Pi Lite 1Gb по этому гайду. Из проблем основными были две:
    1) Как выяснилось при сборке 1 Гб оперативной памяти и 512 Мб swap недостаточно, colcon встает при попытке собрать rclcpp ( и на сборку демо, кстати, тоже не хватает памяти). Решилось расширением swap, действовал по этой статье https://diytimes.ru/post/147 .
    2) Для сборки демо не хватало пакета «example_interfaces». Скачал и собрал его с githab`а в соответствии с https://answers.ros.org/question/331633/ros2-colcon-build-fails-on-demo-pkg-docker/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.