Skip to content

bar2104y/ros2_web_graph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ROS2 Analyzer

Инструмент для анализа ROS2-окружения: сборщик данных + статический веб-интерфейс без бэкенда.

Структура

ros2_analyze/
├── collector/
│   └── collect.py      # Сборщик данных (запускается на ROS2-машине)
├── src/
│   ├── index.html      # SPA-интерфейс
│   ├── app.js          # Вся логика графа (клиентский JS)
│   └── style.css       # Стили + поддержка тёмной/светлой темы
├── requirements.txt   / # Пустой — коллектор не требует зависимостей
└── ros2_env_example.json

Получение коллектора

Скачайте только collector/collect.py — без клонирования всего репозитория:

# GitHub
wget https://raw.githubusercontent.com/bar2104y/ros2_web_graph/main/collector/collect.py

# Gitlab
wget https://gitlab.com/bar2104/ros2_web_graph/-/raw/main/collector/collect.py

# GitFlic (зеркало)
wget https://gitflic.ru/project/ybarichev/ros2_web_graph/blob/raw?file=collector%2Fcollect.py -O collect.py

Или склонируйте репозиторий целиком:

# GitHub
git clone https://github.com/bar2104y/ros2_web_graph.git

# GitFlic (зеркало)
git clone https://gitflic.ru/project/ybarichev/ros2_web_graph.git

Шаг 1: Сбор данных

Запустить на машине с активным ROS2-окружением:

# Убедитесь, что ROS2 sourced:
# source /opt/ros/humble/setup.bash

python collector/collect.py -o ros2_env.json --name "robot-arm v2" --verbose

Опции:

Флаг По умолчанию Описание
-o FILE ros2_env.json Выходной JSON-файл
--name TEXT Кастомное имя сборки (отображается в UI рядом с датой)
--timeout N 10 Таймаут на одну команду (сек)
--verbose Выводить предупреждения о сбоях
--workers N 4 Число параллельных потоков

Коллектор использует только stdlib Python, без внешних зависимостей.


Шаг 2: Перенос файла (если нужно)

scp robot@<ip>:/path/to/ros2_env.json .

Шаг 3: Открыть веб-интерфейс

Никакой установки не нужно — просто откройте src/index.html в браузере:

Откройте src/index.html в любом современном браузере

Затем нажмите кнопку Open в шапке и выберите файл ros2_env.json.
Или перетащите файл прямо на страницу.

Если вам нужно только посомтреть без сборки, страницы опубликованы в интернете:


Возможности веб-интерфейса

  • Список нод, топиков, сервисов и экшенов с поиском
  • Панель деталей: тип, QoS, связи (кликабельные ссылки для навигации)
  • Интерактивный граф (Cytoscape.js + dagre):
    • Клик на сущность в списке → граф её связей
    • Слайдер глубины (1–6): depth=1 — прямые связи, depth=2 — и связи связей и т.д.
    • Клик на узел графа → переход к его деталям
    • ПКМ на узле → скрыть/показать, перейти в сайдбар
    • Кнопки Show all / Hide all по текущей вкладке
  • Цветовой режим: по типу сущности или по namespace-подстроке (настраиваемые правила)
  • Тёмная/светлая тема — переключается кнопкой ☾/☀ в шапке
  • Настройки: экспорт/импорт (скрытые сущности, NS-правила) через JSON-файл

Формат JSON

{
  "collected_at": "2026-06-05T10:00:00Z",
  "build_name": "robot-arm v2",
  "nodes": [
    {
      "name": "/talker",
      "publishers": [{"topic": "/chatter", "type": "std_msgs/msg/String"}],
      "subscribers": [],
      "service_servers": [],
      "service_clients": [],
      "action_servers": [],
      "action_clients": []
    }
  ],
  "topics": [
    {
      "name": "/chatter",
      "types": ["std_msgs/msg/String"],
      "publishers": [{"node": "/talker", "qos": {"reliability": "RELIABLE"}}],
      "subscribers": [{"node": "/listener", "qos": {}}]
    }
  ],
  "services": [{"name": "/srv", "types": [], "servers": [], "clients": []}],
  "actions":  [{"name": "/act", "types": [], "servers": [], "clients": []}]
}

About

Аналог rqt_graph, только более интерактивный

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors