catkin_init_workspace и catkin_make — команды не найдены.

Вопрос или проблема

Я пытался создать рабочую область catkin для ROS2 Humble на Unbuntu 22.04, но не смог разрешить две ошибки “команда не найдена”. Попытка переустановить пакет catkin тоже не принесла много пользы. Я думаю, что catkin и catkin-tools, вероятно, уже установлены. Я подумал, что это может быть проблема с путём поиска, но не уверен. Как показано в коде ниже, setup.bash вызывается .bashrc для подготовки переменных окружения. Я не понимаю ошибки “команда не найдена”, но мне нужно их разрешить. Пожалуйста, помогите мне, если можете.

/home/.bashrc
{этот файл (.bashrc) был отредактирован, чтобы включить строку ниже}

source /opt/ros/humble/setup.bash
{пользователь не вносил правки в файл setup.bash}

$ cd ~/catkin_ws

~/catkin_ws$ catkin_init_workspace

Команда 'catkin_init_workspace' не найдена, но может быть установлена с помощью:
sudo apt install catkin

~/catkin_ws$ sudo apt install catkin

[sudo] пароль для kennr: 

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы
запросили невозможную ситуацию или если вы используете нестабильную
распределённую версию, что некоторые необходимые пакеты ещё не были созданы
или были перемещены из Incoming.

Следующая информация может помочь разрешить ситуацию:
Следующие пакеты имеют неудовлетворённые зависимости:
python3-catkin-pkg : Конфликтует: catkin, но 0.8.10-7 будет установлен
python3-catkin-pkg-modules : Конфликтует: catkin, но 0.8.10-7 будет установлен
E: Не удалось исправить проблемы, у вас имеются заблокированные пакеты.

~/catkin_ws$ catkin_make

Команда 'catkin_make' не найдена, но может быть установлен с помощью:
sudo apt install catkin

~/catkin_ws$ catkin –version

catkin_tools 0.8.5 (C) 2014-2022 Open Source Robotics Foundation
catkin_tools выпущен под лицензией Apache, версия 2.0 
(https://www.apache.org/licenses/LICENSE-2.0)
---
Используя Python 3.10.4 (main, 2 апр  2022, 09:04:19) [GCC 11.2.0]

Я не вижу быстрого решения этой проблемы с пакетом catkin, и мне нужно продолжать работать над другими программными проектами. Я определенно принимаю комментарии и решения по этой проблеме с пакетом catkin, но я обнаружил вероятный обходной путь. Кратко говоря, вместо $ catkin_init_workspace (макроса) и $ catkin_make (макроса), я использовал $ cd ~/catkin_ws, $ catkin init и $ catkin build. Пожалуйста, обратитесь к следующей ссылке на аналогичный пост:

https://robotics.stackexchange.com/questions/16604/ros-catkin-make-vs-catkin-build

Я буду периодически возвращаться, чтобы читать и отвечать на любые комментарии и решения, размещённые здесь. Спасибо всем, кто пытался помочь.

Невероятно, как это ни кажется, установка пакета catkin легко исправляется. CATKIN_INIT_WORKSPACE, CATKIN_CREATE_PACKAGE, CATKIN_MAKE на самом деле являются тремя макросами. В то время как ‘catkin init’, ‘catkin create pkg’, ‘catkin build’ являются тремя скомпилированными командами. Макросы в моей системе были “НЕ НАЙДЕНЫ”, и для переустановки был предложен пакет catkin (и эта переустановка вызвала ошибку сломанного пакета). Хотя ошибки могут быть реальными, их типы ошибок (описания) были неточными. На моем компьютере эти ошибки исчезли полностью, когда директория ~/catkin_ws была полностью удалена (удалена), а затем возвращена в ~/catkin_ws/src в голом виде (пустой, без абсолютно никаких файлов). В этот момент все три макроса стали найдены и использованы. Таким образом, переустановка пакета catkin была ненужной и неуместной. Запуск трех макросов в голой (чистой) директории рабочего пространства не вызвал ошибок. Снова удаление директории рабочего пространства и повторное её создание позволило трём скомпилированным командам catkin работать без ошибок. Так что, на моем компьютере, оба метода работали, но не вместе смешанно. В других форумах и в моем посте здесь упоминается, что использование смеси макросов и скомпилированных команд catkin вызвало теперь известную ошибку “макрос НЕ НАЙДЕН”. И это, вероятно, вызывает другие ошибки файловой системы также. Вот почему. И макросы, и скомпилированные команды создают собственные отдельные (несоответствующие) подкаталоговые структуры и элементы файлов (в и ниже ~/catkin_ws). Эти три макроса и три скомпилированные команды catkin несовместимы друг с другом. Если вы смешиваете их использование, макросы (а вероятно, и скомпилированные команды catkin также) ощущают несовместимую подструктуру директории и файлов и начинают выдавать ошибки. Вот почему новый старт с голого ~/catkin_ws/src исправляет это. Пользователю необходимо выбрать только один метод установки рабочей области catkin, а не оба. На сегодняшний день, насколько я знаю, с моей установкой catkin ничего не так.

После дополнительного исследования я узнал следующее: макросы $ catkin_make (и его партнёры) были из более раннего времени и предназначены для раннего ROS1. В то время как $ catkin build (и его партнёры) ближе к настоящему времени и предназначены для позднего ROS1 и раннего ROS2. Предстоящие ament_make (и его партнёры) не протестированы мной, но, похоже, являются следующим инструментом сборки в миграции сборки, предназначенным для позднего ROS2. Поскольку моя система ROS — это ранний ROS2, мне лучше всего подойдёт $ catkin build. И действительно, это так. Функция $ catkin build отлично работает каждый раз на моем ROS2, но $ catkin_make постоянно вызывает проблемы на моем ROS2. Эти две рабочие области несовместимы для сборки, и, скорее всего, для миграции необходимо вручную переместить исходный код и сделать повторную сборку. Неясно, почему пакет ros-humble-desktop устанавливается по умолчанию (автоматически) с набором утилит $ catkin_make (вместо пакета catkin-tools). Вероятно, этого не должно быть.

После дополнительного исследования, для актуальной системы ROS2, кажется, лучше всего использовать утилиту “$ colcon” для сборки рабочей области. Утилита “$ catkin build” даже слишком устарела.

Ответ или решение

Проблема с командой catkin_init_workspace и catkin_make в ваших попытках создать рабочее пространство ROS2 на Ubuntu 22.04 является распространенной, и её решение требует понимания различий между инструментами сборки ROS и их применением в контексте ROS2. Давайте подробно рассмотрим вашу ситуацию и предложим оптимальные шаги для устранения возникших ошибок.

Введение в проблему

Вы столкнулись с ошибками "команда не найдена" при попытке использования команд catkin_init_workspace и catkin_make. Эти команды относятся к инструменту сборки Catkin, который изначально был разработан для ROS1. В свою очередь, для ROS2 рекомендуется использовать catkin_tools или другие сборочные инструменты, такие как colcon.

Анализ ошибок

  1. Команды не найдены: При вводе catkin_init_workspace и catkin_make, вы получаете ошибки, которые сообщают, что команды не найдены, и даже предлагается установить пакеты, которые могут быть связаны с Catkin. Дело в том, что указанные команды – это макросы, которые могут не быть доступны, если ваши переменные среды неправильно настроены или если вы используете неправильный инструмент сборки (например, ROS2 вместо ROS1).

  2. Проблемы с зависимостями: Установка Catkin через sudo apt install catkin завершается ошибкой о конфликтующих пакетах и зависимостях. Это указывает на то, что у вас, вероятно, уже установлены версии некоторых пакетов, которые несовместимы друг с другом.

Рекомендации по устранению проблем

  1. Пересоздание рабочего пространства: Если вы уже использовали команды Catkin и столкнулись с ошибками, попробуйте удалить текущее рабочее пространство:

    rm -rf ~/catkin_ws

    Затем создайте новое рабочее пространство:

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws
  2. Используйте catkin_tools: Вместо использования catkin_make попробуйте команды catkin init и catkin build, которые более совместимы с ROS2:

    cd ~/catkin_ws
    catkin init
    catkin build
  3. Проверка установленных пакетов: Убедитесь, что у вас установлены все необходимые инструменты для работы с Catkin и ROS2. Для этого выполните:

    sudo apt install python3-catkin-tools
    sudo apt install python3-colcon-common-extensions
  4. Проверка переменных окружения: Убедитесь, что в вашем .bashrc файл корректно прописаны команды для инициализации ROS2:

    source /opt/ros/humble/setup.bash

    После редактирования файла не забудьте обновить переменные среды:

    source ~/.bashrc

Заключение

Вы правильно заметили, что использование макросов и команд с catkin и catkin_tools может приводить к конфликтам. Рекомендуется выбрать один подход и придерживаться его для избегания ошибок. Саказать больше, использование colcon в качестве основного инструмента сборки для ROS2 предоставляет больше функциональности и гибкости.

Если вы продолжаете сталкиваться с ошибками или у вас есть дополнительные вопросы, не стесняйтесь обращаться за поддержкой от сообщества ROS.

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

Капча загружается...