Инструмент для анализа 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Запустить на машине с активным 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, без внешних зависимостей.
scp robot@<ip>:/path/to/ros2_env.json .Никакой установки не нужно — просто откройте 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-файл
{
"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": []}]
}