В настоящее время запуск 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 может понадобиться сборка дополнительных пакетов.
Комментариев нет:
Отправить комментарий