dendros init
dendros init scaffolds a config/dendROS.yaml from a package's launch files automatically.
Basic usage
DendROS scans every .py and .xml file in launch/, extracts all Node() / ComposableNode() / <node/> declarations, groups them by source package, and writes config/dendROS.yaml. It also patches CMakeLists.txt / setup.py / setup.cfg to install the config.
Generated config:
groups:
my_bringup:
color: blue
label: "" # ← fill in manually (or use --labels)
nodes:
- my_node
- another_node
- third_node
defaults:
color_mode: tag_only
show_group_tag: true
unmatched_color: null
Recursive mode
Follows IncludeLaunchDescription / <include> references into external packages (BFS, cycle-safe).
Package lookup order:
ros2 pkg prefix <pkg>→ installed packages- Scan
AMENT_PREFIX_PATHentries - Sibling directory in the same
src/folder (packages in source but not yet built)
Auto-generate labels
| Package name | Generated label |
|---|---|
slam_toolbox |
ST |
nav2_bringup |
NB |
robot_state_publisher |
RSP |
Without --labels, every group gets label: "" as a placeholder.
Behavior options
All options are configurable via dendros config → Init settings:
| Setting | Values | Description |
|---|---|---|
init_on_existing |
abort (default) / merge / overwrite |
What to do if the config already exists. merge adds new nodes only. |
init_modify_build |
on (default) / off |
Auto-patch CMakeLists.txt / setup.py / setup.cfg. |
init_color |
palette (default) / null |
Assign cycling colors or leave as color: null. |
init_color_bold |
off (default) / on |
Prefix every palette color with bold. |
init_label |
off (default) / on |
Auto-generate labels (same as --labels). |
Iterative development
Set init_on_existing: merge to safely re-run dendros init as your launch files evolve — new nodes are appended without touching existing groups.