Поддержка Gazebo нового поколения #2

Closed
opened 2021-10-26 20:50:35 +03:00 by solid-sinusoid · 32 comments
solid-sinusoid commented 2021-10-26 20:50:35 +03:00 (Migrated from gitlab.com)

Промониторив многие туториалы, гайды и сравнения пришёл к выводу, что некоторые функции Ignition остаются недоработанными на данный момент и не имеют реализации в сравнении с классической Gazebo, но в тоже время Ignition Gazebo имеет ряд преимуществ.

  • На данный момент функция отключения гравитации <gravity>0</gravity> в SDF применимом в Ignition Gazebo не работает, вот ссылка, это существенная проблема, иначе придётся рассчитывать коэффициенты PID регулирования к каждому звену манипулятора, также при различных инструментах;
  • Интеграция ROS2 и Ignition Gazebo реализуется за счёт инструмента ros_ign_bridge, что вполне реализуемо и в принципе инструмент вполне задокументирован и не является чёрным ящиком. Если сравнивать с классической Gazebo, то там интеграция она бесшовная и запустив ROS2 можно запросто загрузить робота в сцену из обычного топика robot_description

@movefasta

Промониторив многие туториалы, гайды и сравнения пришёл к выводу, что некоторые функции Ignition остаются недоработанными на данный момент и не имеют реализации в сравнении с классической Gazebo, но в тоже время Ignition Gazebo имеет ряд преимуществ. - На данный момент функция отключения гравитации `<gravity>0</gravity>` в SDF применимом в Ignition Gazebo не работает, вот [ссылка](https://answers.gazebosim.org//question/25617/ignition-disabling-link-gravity/), это существенная проблема, иначе придётся рассчитывать коэффициенты PID регулирования к каждому звену манипулятора, также при различных инструментах; - Интеграция ROS2 и Ignition Gazebo реализуется за счёт инструмента `ros_ign_bridge`, что вполне реализуемо и в принципе инструмент вполне задокументирован и не является чёрным ящиком. Если сравнивать с классической Gazebo, то там интеграция она бесшовная и запустив ROS2 можно запросто загрузить робота в сцену из обычного топика `robot_description` @movefasta
solid-sinusoid commented 2021-10-26 21:59:30 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2021-10-26 23:33:11 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
movefasta commented 2021-10-28 16:46:15 +03:00 (Migrated from gitlab.com)

Предлагаю попробовать рассмотреть в качестве временной альтернативы Unity3D.

В данный момент Unity позволяет:

  • работать с URDF, SDF моделями
  • взаимодействовать с ROS2 через TCP посредством официально поддерживаемого плагина
  • симулировать мульти-агентные системы с приемлемой производительностью - https://github.com/lge-ros2/cloisim

Недостатками являются:

  • лицензия - бесплатно, если доход от игры (симулятора) не превышает $100K в год
  • закрытость исходного кода
Предлагаю попробовать рассмотреть в качестве временной альтернативы Unity3D. В данный момент Unity позволяет: - работать с URDF, SDF моделями - взаимодействовать с ROS2 через TCP посредством официально поддерживаемого плагина - симулировать мульти-агентные системы с приемлемой производительностью - https://github.com/lge-ros2/cloisim Недостатками являются: - лицензия - бесплатно, если доход от игры (симулятора) не превышает $100K в год - закрытость исходного кода
movefasta commented 2021-10-29 13:17:49 +03:00 (Migrated from gitlab.com)

Вот ещё проект, соединяющий напрямую ROS2 и Unity без веб-бриджа
https://github.com/RobotecAI/ros2-for-unity

solution to connect Unity3D and ROS2 ecosystem in a ROS2 "native" way. Communication is not bridged as in several other solutions, but instead it uses ROS2 middleware stack (rcl layer and below), which means you can have ROS2 nodes in your simulation

Your simulation entities are real ROS2 nodes / publishers / subscribers. They will behave correctly with e.g. command line tools such as ros2 topic. They will respect QoS settings and can use ROS2 native time.

На данный момент ros2-for-unity поддерживает только node publisher/subscriber и не поддерживает service, actions. См. https://github.com/RobotecAI/ros2cs/issues/1

@iakzhivov

Вот ещё проект, соединяющий напрямую ROS2 и Unity без веб-бриджа https://github.com/RobotecAI/ros2-for-unity > solution to connect Unity3D and ROS2 ecosystem in a ROS2 "native" way. Communication is not bridged as in several other solutions, but instead it uses ROS2 middleware stack (rcl layer and below), which means you can have ROS2 nodes in your simulation > > Your simulation entities are real ROS2 nodes / publishers / subscribers. They will behave correctly with e.g. command line tools such as ros2 topic. They will respect QoS settings and can use ROS2 native time. На данный момент ros2-for-unity поддерживает только node publisher/subscriber и не поддерживает service, actions. См. https://github.com/RobotecAI/ros2cs/issues/1 @iakzhivov
movefasta commented 2021-11-10 19:39:08 +03:00 (Migrated from gitlab.com)

changed title from {-Текущие проблемы реализации-} Ignition Gazebo для симуляции to {+Переход на+} Ignition Gazebo для симуляции

changed title from **{-Текущие проблемы реализации-} Ignition Gazebo для симуляции** to **{+Переход на+} Ignition Gazebo для симуляции**
movefasta commented 2021-11-10 19:39:24 +03:00 (Migrated from gitlab.com)

marked this issue as related to roboarm#5

marked this issue as related to roboarm#5
movefasta commented 2022-01-14 23:16:20 +03:00 (Migrated from gitlab.com)

mentioned in issue #17

mentioned in issue #17
movefasta commented 2022-03-21 11:10:12 +03:00 (Migrated from gitlab.com)

assigned to @solid-sinusoid

assigned to @solid-sinusoid
movefasta commented 2022-03-21 11:10:44 +03:00 (Migrated from gitlab.com)

changed title from Переход на Ignition Gazebo{- для симуляции-} to Переход на Ignition Gazebo

changed title from **Переход на Ignition Gazebo{- для симуляции-}** to **Переход на Ignition Gazebo**
movefasta commented 2022-03-24 18:59:19 +03:00 (Migrated from gitlab.com)

В ходе запуска и отладки обнаружилась ошибка в пакете ign_ros2_control

Создали issue, ждём обратной связи

В ходе запуска и отладки обнаружилась ошибка в пакете `ign_ros2_control` Создали issue, ждём обратной связи - https://github.com/ignitionrobotics/ign_ros2_control/issues/46
solid-sinusoid commented 2022-06-05 13:00:23 +03:00 (Migrated from gitlab.com)

Ну проблема решена практически в поной мере, в данном ответе пишется особенность текущей реализации контроллеров, которые нужны для хорошей интеграцией с Ignition Gazebo.

Ну проблема решена практически в поной мере, в данном [ответе](https://answers.gazebosim.org/question/27656/ignition-gazebo-gripper-ignores-cube-collision/) пишется особенность текущей реализации контроллеров, которые нужны для хорошей интеграцией с Ignition Gazebo.
movefasta commented 2022-06-05 16:50:04 +03:00 (Migrated from gitlab.com)

То есть на данный момент препятствий переходу к Ignition Gazebo нет?

То есть на данный момент препятствий переходу к Ignition Gazebo нет?
solid-sinusoid commented 2022-06-06 07:40:03 +03:00 (Migrated from gitlab.com)

Препятствия остаются лишь в том, что не получается отправить команды контроллеру и робот в симуляции падает, всё никак не пойму в чём проблема. Вообще смотрю возможные аналоги, возможно нам придётся немного поменять точку зрения на Ignition. Основываясь на том, что нам придётся в той или иной мере интегирировать gym или universe для обучения с подкреплением, можно сделать вывод о том, что лучшим наверное будет рассмотреть mujoco, но его интеграция с ROS2 пока оставляет желать лучшего. В целом ROS2 нам нужен для более простой интеграции с железом. gym-ignition уже как 7 месяцев не обновлялся и кажется что не такой актуальный, если конечно он не является универсальным и подходить на все последние версии ignition. gym в mujoco в данный момент активно развиваются и я вижу больше перспектив в этом подходе.

Препятствия остаются лишь в том, что не получается отправить команды контроллеру и робот в симуляции падает, всё никак не пойму в чём проблема. Вообще смотрю возможные аналоги, возможно нам придётся немного поменять точку зрения на Ignition. Основываясь на том, что нам придётся в той или иной мере интегирировать gym или universe для обучения с подкреплением, можно сделать вывод о том, что лучшим наверное будет рассмотреть mujoco, но его интеграция с ROS2 пока оставляет желать лучшего. В целом ROS2 нам нужен для более простой интеграции с железом. gym-ignition уже как 7 месяцев не обновлялся и кажется что не такой актуальный, если конечно он не является универсальным и подходить на все последние версии ignition. gym в mujoco в данный момент активно развиваются и я вижу больше перспектив в этом подходе.
movefasta commented 2022-10-18 19:40:04 +03:00 (Migrated from gitlab.com)

changed title from П{-ереход на Ignition Gazebo-} to П{+оддержка Gazebo нового поколения+}

changed title from **П{-ереход на Ignition Gazebo-}** to **П{+оддержка Gazebo нового поколения+}**
movefasta commented 2022-10-18 19:40:10 +03:00 (Migrated from gitlab.com)

unassigned @solid-sinusoid

unassigned @solid-sinusoid
movefasta commented 2023-01-14 17:50:38 +03:00 (Migrated from gitlab.com)

assigned to @solid-sinusoid

assigned to @solid-sinusoid
movefasta commented 2023-01-14 17:55:03 +03:00 (Migrated from gitlab.com)

changed due date to January 23, 2023

changed due date to January 23, 2023
movefasta commented 2023-01-14 17:56:24 +03:00 (Migrated from gitlab.com)

changed time estimate to 40h

changed time estimate to 40h
solid-sinusoid commented 2023-01-14 18:37:44 +03:00 (Migrated from gitlab.com)

added 1m of time spent

added 1m of time spent
solid-sinusoid commented 2023-01-14 18:40:46 +03:00 (Migrated from gitlab.com)

removed the relation with roboarm#5

removed the relation with roboarm#5
solid-sinusoid commented 2023-01-22 23:55:41 +03:00 (Migrated from gitlab.com)

added 26h of time spent

added 26h of time spent
solid-sinusoid commented 2023-01-23 00:07:14 +03:00 (Migrated from gitlab.com)

Задача реализована в качестве докер контейнера со всем нашим функционалом. Необходимо открыть MR с нашим роботом и дополнительным функционалов в качестве #57 и минимальным набором для функционала для Gazebo Fortress симулятора.

Ссылка на докер для предварительного тестирования

Краткая инструкция. Взять файл по ссылкe

Необходима видеокарта и драйвера nvidia, а также nvidia-docker

# Заменить текущее значение TAG на следующий billf1nger/ur_skill_ws_ros2_gz
# Запустить скрипт
$ ./run.bash
# Запустить сцену в докере командой
$ ros2 launch ur_simulation ur_simulation.launch.py
# В новой баш сессии запустить след. команду
$ docker exec -it [CONTAINER_NAME/ID] bin/bash
# Запустить след.
$ ros2 launch ur_bt_queue ur_bt_queue.launch.py
# Робот должен двигаться по трём точкам

@Splinter1984, я открою MR который будет содержать пример с нашим роботом, туда нужно будет добавить результаты #57

Задача реализована в качестве докер контейнера со всем нашим функционалом. Необходимо открыть MR с нашим роботом и дополнительным функционалов в качестве #57 и минимальным набором для функционала для Gazebo Fortress симулятора. [Ссылка](https://hub.docker.com/repository/docker/billf1nger/ur_skill_ws_ros2_gz/general) на докер для предварительного тестирования Краткая инструкция. Взять файл по [ссылкe](https://gitlab.com/robossembler/robossembler-ros2/-/blob/no-gui/Docker/run.bash) Необходима видеокарта и драйвера nvidia, а также nvidia-docker ```bash # Заменить текущее значение TAG на следующий billf1nger/ur_skill_ws_ros2_gz # Запустить скрипт $ ./run.bash # Запустить сцену в докере командой $ ros2 launch ur_simulation ur_simulation.launch.py # В новой баш сессии запустить след. команду $ docker exec -it [CONTAINER_NAME/ID] bin/bash # Запустить след. $ ros2 launch ur_bt_queue ur_bt_queue.launch.py # Робот должен двигаться по трём точкам ``` @Splinter1984, я открою MR который будет содержать пример с нашим роботом, туда нужно будет добавить результаты #57
solid-sinusoid commented 2023-01-23 00:07:40 +03:00 (Migrated from gitlab.com)

marked this issue as blocked by #57

marked this issue as blocked by #57
solid-sinusoid commented 2023-01-23 02:20:11 +03:00 (Migrated from gitlab.com)

Стоит учесть, что сборка работает на rolling. По хорошему бы использовать humble т.к. расширяясь, остальные пакеты могут быть нестабильны

Вот ишью по проблемы существования бинарников для gz_ros2_control для humble

https://github.com/ros-controls/gz_ros2_control/issues/82

Стоит учесть, что сборка работает на rolling. По хорошему бы использовать humble т.к. расширяясь, остальные пакеты могут быть нестабильны Вот ишью по проблемы существования бинарников для gz_ros2_control для humble https://github.com/ros-controls/gz_ros2_control/issues/82
movefasta commented 2023-01-23 08:23:03 +03:00 (Migrated from gitlab.com)

Всем, кроме plansys?

Всем, кроме plansys?
movefasta commented 2023-01-23 08:23:44 +03:00 (Migrated from gitlab.com)

Зачем там nvidia?

Зачем там nvidia?
solid-sinusoid commented 2023-01-23 18:03:40 +03:00 (Migrated from gitlab.com)

Plansys нет так как он нам и не нужен для этого. Кажется твоя цитата @movefasta была

Nvidia чтобы GUI в контейнере вывести, без этого графического интерфейса не будет. Пока что он нам нужен, убрать GUI уже рассматриваю не как мою задачу, а как задачу связанную с укомплектовкой в nix для автоматизированного рантайма

Plansys нет так как он нам и не нужен для этого. Кажется твоя цитата @movefasta была Nvidia чтобы GUI в контейнере вывести, без этого графического интерфейса не будет. Пока что он нам нужен, убрать GUI уже рассматриваю не как мою задачу, а как задачу связанную с укомплектовкой в nix для автоматизированного рантайма
movefasta commented 2023-01-31 16:32:34 +03:00 (Migrated from gitlab.com)

changed due date to January 31, 2023

changed due date to January 31, 2023
solid-sinusoid commented 2023-01-31 23:13:31 +03:00 (Migrated from gitlab.com)

added 3h of time spent

added 3h of time spent
solid-sinusoid commented 2023-01-31 23:14:44 +03:00 (Migrated from gitlab.com)

Проект запущен на humble полностью с небольшим изменением исходного кода gz_ros2_control

Следующий шаг: Исправляю нейминг всех папок и неймспейсов в репозитории, убираю лишнее, заливаю форк к себе исправленного gz_ros2_control и открываю MR

Проект запущен на humble полностью с небольшим изменением исходного кода gz_ros2_control Следующий шаг: Исправляю нейминг всех папок и неймспейсов в репозитории, убираю лишнее, заливаю форк к себе исправленного gz_ros2_control и открываю MR
solid-sinusoid commented 2023-02-01 16:47:05 +03:00 (Migrated from gitlab.com)

mentioned in merge request !27

mentioned in merge request !27
movefasta commented 2023-02-06 12:15:12 +03:00 (Migrated from gitlab.com)

Сборка нового Gazebo (gardens) в nix будет выполняться в рамках задачи https://gitlab.com/robossembler/nix-robossembler-overlay/-/issues/1

Сборка нового Gazebo (gardens) в nix будет выполняться в рамках задачи https://gitlab.com/robossembler/nix-robossembler-overlay/-/issues/1
movefasta (Migrated from gitlab.com) closed this issue 2023-02-06 12:15:15 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: robossembler/runtime#2
No description provided.