ROS2: различия между версиями
Vcong (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Vcong (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''ROS (Robot Operating System)''' — '''Операционная система для роботов''' — это экосистема для программирования роботов, предоставляющая функциональность для распределённой работы. ROS был первоначально разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета. В 2008 году развитие продолжается в Willow Garage, научно-исследовательском институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами. [https://ru.wikipedia.org/wiki/ROS_(операционная_система)] | {{d}}'''ROS (Robot Operating System)''' — '''Операционная система для роботов''' — это экосистема для программирования роботов, предоставляющая функциональность для распределённой работы. ROS был первоначально разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета. В 2008 году развитие продолжается в Willow Garage, научно-исследовательском институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами. [https://ru.wikipedia.org/wiki/ROS_(операционная_система)] | ||
C 2007 года произошло много изменений в робототехнике и сообществе ROS. Цель [https://docs.ros.org/en/humble/index.html проекта] '''ROS 2''' - адаптироваться к этим изменениям, сохранив достоинства '''ROS 1''' и исправив недостатки. | C 2007 года произошло много изменений в робототехнике и сообществе ROS. Цель [https://docs.ros.org/en/humble/index.html проекта] '''ROS 2''' - адаптироваться к этим изменениям, сохранив достоинства '''ROS 1''' и исправив недостатки. |
Текущая версия от 17:20, 3 июня 2024
ROS (Robot Operating System) — Операционная система для роботов — это экосистема для программирования роботов, предоставляющая функциональность для распределённой работы. ROS был первоначально разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета. В 2008 году развитие продолжается в Willow Garage, научно-исследовательском институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами. [1]
C 2007 года произошло много изменений в робототехнике и сообществе ROS. Цель проекта ROS 2 - адаптироваться к этим изменениям, сохранив достоинства ROS 1 и исправив недостатки.
Установка
На момент создания этой страницы необходимые для установки ROS 2 пакеты созданы в процессе вступления в ALT Linux Team и (пока) не допущены в Sisyphus. По рекомендации инструкция по установке ROS 2 на основе этих пакетов публикуется на ALT Linux Wiki. Возможно, это будет полезно кому-либо.
Установка идёт по рецепту "Building from source", когда опакечен только инструментарий ROS, а сами пакеты ROS загружаются и автоматически собираются этим инструментарием (Для других официально поддерживаемых ROS дистрибутивов: рецепт для Ubuntu, рецепт для RHEL).
Добавление репозиториев задач с пакетами
# apt-repo add task 317325 # apt-repo add task 317354 # apt-get update
Установка средств разработки и ROS инструментария
# apt-get install \ cmake \ patch \ gcc-c++ \ git \ libstdc++-devel-static \ pip \ python3-module-pytest \ python3-module-flake8 \ python3-module-flake8-docstrings \ python3-module-flake8-import-order \ python3-module-mypy \ python3-module-notify2 \ python3-module-pytest \ python3-module-pytest-repeat \ python3-module-pytest-rerunfailures \ python3-module-setuptools # apt-get install \ python3-module-colcon-common-extensions \ python3-module-rospkg \ python3-module-vcstool \ rosdep
Загрузка исходного кода пакетов ROS 2
Создание workspace и клонирование репозиториев пакетов ROS 2.
$ mkdir -p ~/ros2_humble/src
$ cd ~/ros2_humble
$ vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src
Установка пакетов-зависимостей с помощью rosdep
При настроенном sudo:
$ rosdep update $ rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers ignition-math6 ignition-cmake2"
В отстуствие sudo:
# rosdep update # rosdep install --from-paths /home/<имя_пользователя>/ros2_humble/src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers ignition-math6 ignition-cmake2" # rm -rf ~/.ros
Сборка кода ROS в workspace
$ cd ~/ros2_humble/ $ colcon build --symlink-install
Если ресурсы системы не велики (виртуальная машина или одноплатный компьютер), для ограничения количества одновременно собираемых пакетов для colcon build можно добавить опцию --parallel-workers <количество пакетов>, и следить за наличем в системе достаточной свободной памяти, при необходимости добавить swap. Сборку можно прервать (Ctrl+C) и перезапустить с новыми опциями. Для вывода в терминал лога компиллятора colcon build нужно добавить опцию --event-handlers console_direct+. Например:
$ colcon build --symlink-install --parallel-workers 1 --event-handlers console_direct+
Для сборки определённого ROS пакета добавьте опцию --packages-select <название пакета ROS>.
Настройка среды окружения
Для работы с пакетами, содержащимися в полученном workspace, выполните source следующего файла:
$ . ~/ros2_humble/install/local_setup.sh
При частой работе с ROS эту команду можно разместить в ~/.bashrc, создать alias в ~/.bashrc или настроить специальный вызов терминала с выполнением этой команды вначале.
Запуск простейшего примера
В одном окне терминала запустите С++ talker:
$ . ~/ros2_humble/install/local_setup.bash $ ros2 run demo_nodes_cpp talker
В другом окне терминала запустите Python Listener
$ . ~/ros2_humble/install/local_setup.bash $ ros2 run demo_nodes_py listener
Вы должны увидеть, что talker сообщает, что публикует сообщения, а listener говорит, что их получает.
$ ros2 run demo_nodes_cpp talker [INFO] [1684548966.316005384] [talker]: Publishing: 'Hello World: 1' [INFO] [1684548967.405009930] [talker]: Publishing: 'Hello World: 2' [INFO] [1684548968.484030516] [talker]: Publishing: 'Hello World: 3' [INFO] [1684548969.567005999] [talker]: Publishing: 'Hello World: 4' [INFO] [1684548970.659537722] [talker]: Publishing: 'Hello World: 5' [INFO] [1684548971.751981133] [talker]: Publishing: 'Hello World: 6' [INFO] [1684548972.819593271] [talker]: Publishing: 'Hello World: 7'
$ ros2 run demo_nodes_py listener [INFO] [1684548966.356507779] [listener]: I heard: [Hello World: 1] [INFO] [1684548967.407002517] [listener]: I heard: [Hello World: 2] [INFO] [1684548968.486265827] [listener]: I heard: [Hello World: 3] [INFO] [1684548969.569117162] [listener]: I heard: [Hello World: 4] [INFO] [1684548970.661470457] [listener]: I heard: [Hello World: 5] [INFO] [1684548971.753917595] [listener]: I heard: [Hello World: 6] [INFO] [1684548972.821490540] [listener]: I heard: [Hello World: 7]