четверг, 2 февраля 2023 г.

Сборка ROS2 Foxy на Astra Linux

В настоящее время запуск ROS2 в Astra Linux является скорее пожеланием, чем насущной необходимостью. Поэтому моей целью в данной статье является не создание полноценного окружения, а минимальная рабочая сборка, позволяющая запустить код, созданный в Ubuntu или других "родных" для ROS2 ОС. 

В качестве экспериментальной площадки будем использовать дистрибутив общего назначения Astra Linux Orel версии 2.12.45 c ядром 5.15.0-33-generic. По характеристикам данная версия близка к Ubuntu 20.04, поэтому попытаемся установить ROS2 Foxy. В моих экспериментах следование официальной инструкции закончилось неудачей, поэтому дальше будет описан альтернативный подход, также основанный на сборке программы из исходного кода.

Прежде всего, обновим Python. По умолчанию, дистрибутив идёт с версией 3.5. Для сборки потребуется версия 3.6, но её нет в официальном репозитории, зато есть 3.7, её и ставим.

sudo apt install python3.7 python3.7-dev python3-pip

После этого нужно настроить систему для использования данной Python3.7 в качестве основного интерпретатора. Сделаем это с помощью update-alternatives:

sudo update-alternatives --install /usr/bin/python3 python3 \
  /usr/bin/python3.7 7
python3 --version

Установим необходимые программы и зависимости.

sudo apt install  build-essential  cmake  git
sudo apt install  libasio-dev  libtinyxml2-dev  liblog4cxx10-dev

sudo pip3 install -U colcon-common-extensions
sudo pip3 install lark  numpy  netifaces

Теперь можно переходить к сборке, которую выполним, традиционно, в /opt/ros. 

sudo mkdir -p /opt/ros/foxy/src
cd /opt/ros/foxy

Загрузку файлов можно осуществить с помощью команды из инструкции

vcs import --input \
  https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos src

Однако, я использовал сокращённый набор пакетов, который определил методом проб и ошибок. Bash-скрипт для установки приведён в файле get_repos.sh. Файл также скачивает исходный код для DDS системы, при загрузке через vcs нужно будет поставить его отдельно, согласно инструкции.

Для упрощения сборки и уменьшения зависимостей опустим тестирование, тогда команда примет вид 

sudo colcon build --symlink-install --cmake-args -DBUILD_TESTING=OFF

После того, как система собралась, можно протестировать её работу. Для проверки я завёл новый workspace, настроил source на путь к install/local_setup.bash в папке ROS, после чего собрал и запустил стандартные примеры по публикации и приёму сообщений. Заработало! 

P.S. Файл get_repos.sh содержит пакеты, необходимые для обмена сообщениями в режиме "издатель-подписчик", с реализацией на C++ и Python3, а также для запуска консольных команд ROS2. Для других режимов работы (сервисы, action-сервисы) и инструментов ROS может понадобиться сборка дополнительных пакетов.

 

 

Комментариев нет:

Отправить комментарий