AI & Robotics Lab
19 subscribers
71 photos
28 videos
9 files
108 links
Explore AI code generation, robotics, and ROS with original projects and hands-on guides. Follow along as I share my experience, code samples, and tips for building intelligent systems.
Download Telegram
🤖 Gazebo - фреймворк для симуляции роботов

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

Работу с Gazebo условно можно разделить на три больших блока:
Создание описания мира
На этом этапе формируется SDF-файл (Simulation Description Format), который задаёт виртуальную сцену: модели роботов, параметры окружающей среды, сенсоры, источники света, объекты взаимодействия и прочие элементы. По своей сути SDF - это обычный XML-файл с иерархической структурой, что позволяет достаточно легко описать и затем проследить взаимосвязи составных частей сцены и их элементов.

Запуск Gazebo Sim для конфигурации виртуального мира
При запуске приложения Gazebo Sim происходит чтение SDF-файла, на основе которого автоматически выстраивается виртуальная среда. Фреймворк динамически подгружает необходимые серверные и клиентские плагины для физических процессов, визуализации, сенсоров и других функций. Все блоки и функции реализованы в виде модулей, поэтому возможно точечно добавлять или отключать нужные компоненты, не перекомпилируя приложение.

Запуск симуляции и сбор данных
После конфигурации начинается симуляция — виртуальный мир "оживает", роботы получают возможность взаимодействовать с окружением и между собой. При этом доступна богатая система для сбора и анализа данных: состояние объектов, измерения сенсоров, логи, экспорт результатов для последующей обработки. Всё это позволяет анализировать поведение сложных систем в реалистичных сценариях, а также оперативно вносить изменения в параметры эксперимента или конфигурацию среды.

#knowledge #gazebo #Robotics
1
🏗 Архитектура Gazebo Sim

В целом, она описана здесь, но т.к. я сам только разбираюсь во всем этом, то решил сделать небольшое резюме.

#knowledge #gazebo #Robotics
🆒1
1. Общая структура
Gazebo Sim состоит из двух основных процессов: серверного (backend) и клиентского (frontend), которые запускаются при старте симуляции. Сервер отвечает за физику, обработку команд и другие вычисления, а клиент за отображение и взаимодействие с пользователем через GUI.

2. Архитектура на основе плагинов
Вся функциональность симулятора реализована в виде плагинов, которые могут подключаться и отключаться во время выполнения. Есть плагины сервера (например, для физики или сенсоров), а есть плагины GUI (например, для визуализации и управления). Пользователь может добавлять, удалять или разрабатывать свои плагины.

3. Серверный процесс
На сервере используется архитектура entity-component-system (ECS), где entity - это любой объект сцены, а component - его характеристики (позиция, геометрия и т.д.). Серверные плагины взаимодействуют с этими сущностями: например, система физики реагирует на заданные силы. Работа построена вокруг основного симуляционного цикла с последовательными шагами обновления состояния объектов.

4. Клиентский процесс
Клиентская часть (GUI) также состоит из плагинов для отображения 3D-сцены, окон управления и других интерактивных элементов. Эти плагины получают сжатые данные о состоянии сцены от сервера и реагируют на них, не изменяя непосредственно состояние симуляции. Общение между плагинами GUI организовано через события (events).

5. Взаимодействие сервера и клиента
Клиент и сервер обмениваются информацией через систему сообщений Gazebo Transport и Messages. Сервер с помощью специального плагина Scene Broadcaster периодически отправляет клиенту сжатое состояние сцены, которое визуализируется, а клиент может посылать команды (например, на создание или удаление объектов) обратно через свой интерфейс.

6. Модульность
Все компоненты (базовые библиотеки, плагины, GUI) модульны и могут использоваться и обновляться независимо друг от друга. Это упрощает расширение и настройку симулятора под любые задачи — от интеграции новых физических движков до экспериментов с пользовательским интерфейсом.

7. Внешние процессы
Отдельные серверные и клиентские плагины способны взаимодействовать с внешними процессами — например, ROS (Robot Operating System) или другими сторонними сервисами и приложениями. Некоторые плагины (например, для сенсоров или управления движением) отправляют и получают сообщения не только между сервером и клиентом Gazebo, но и напрямую во внешние среды. Благодаря такой возможности, Gazebo интегрируется в распределённые системы управления, поддерживает обмен данными с ROS-узлами, а также расширяет сценарии взаимодействия за пределы собственной симуляционной среды.

В итоге, фреймворк позволяет описать множество сценариев симуляции: от настройки мира с произвольными моделями, сенсорами и физическими условиями до динамического подключения новых физических движков, визуализации, систем сбора данных и обмена сообщениями с внешними процессами, включая ROS. Все компоненты могут настраиваться и расширяться с помощью плагинов. Пользователь не ограничен некоей стандартной функциональностью, а может создавать свои уникальные сценарии, масштабируя и изменяя симуляцию под любые задачи.

#knowledge #gazebo #Robotics
👾1
🧩 Gazebo Tutorial - как использовать несколько файлов SDF для описания мира симуляции

Решил опробовать формат коротких роликов. Разбираюсь с Gazebo и попутно выкладываю полезные советы 😁. Первый пример - оптимизация sdf-файлов в проекте. Надеюсь, в таком режиме получится выпускать ролики чаще 🤞.

#gazebo #simulation #tutorial
1
🧩 Gazebo Tutorial - измерение момента на оси с помощью сенсора

Продолжаем знакомиться с Gazebo Sim - на этот раз для чего-то полезного )) Измеряем статический момент на оси подвижного звена, необходимый для удержания нагрузки.

#gazebo #simulation #tutorial #sensor
🔥1