How gmoustri/dwal_planner works
DWAL Planner is a ROS 2 motion-cluster generator. Odometry and an occupancy grid feed trajectory sampling: admissible curved paths are simulated against the costmap, then published as sampled paths and markers. A clustering node groups free paths by configured level and publishes cluster groups and visualizations; it also supports level toggles and directional slicing. The graph distinguishes the trajectory-generation library from its ROS orchestration. Generator-to-clustering transport is documented in the README; source excerpts show costmap conversion, sampling, and clustering behavior. Service wiring is documented but not visible in the excerpts.
Main entry points: trajectory_generator.cpp Generator Node · clustering.cpp Level Clustering · libdwal_cluster.h Costmap Adapter · libdwal_cluster.cpp Trajectory Sampler
Components 15
Trajectory Generation
- Generator Node
src/trajectory_generator.cpp - Costmap Adapter
include/dwal_planner/libdwal_cluster.h - Trajectory Sampler
src/libdwal_cluster.cpp
Path Clustering
- Clustering Node
src/clustering.cpp - Level Clustering
src/clustering.cpp - Directional Slicing
src/clustering.cpp
ROS Interfaces
- Sampled Paths
msg/SampledCluster.msg - Path Markers
src/trajectory_generator.cpp - Motion Clusters
msg/ClusterGroup.msg - Cluster Markers
src/clustering.cpp - Level Toggle
srv/ToggleClusters.srv - Slice Toggle
srv/ToggleSlice.srv
Other components
- Robot Odometry
- Occupancy Grid
- Service Caller
Connections 16
- Robot Odometry → Generator Node: supplies odometry
src/trajectory_generator.cpp - Occupancy Grid → Costmap Adapter: updates grid
include/dwal_planner/libdwal_cluster.h - Generator Node → Costmap Adapter: subscribes via
src/trajectory_generator.cpp - Generator Node → Trajectory Sampler: initializes and samples
src/trajectory_generator.cpp - Trajectory Sampler → Costmap Adapter: checks collisions
src/libdwal_cluster.cpp - Generator Node → Sampled Paths: publishes paths
src/trajectory_generator.cpp - Generator Node → Path Markers: publishes markers
src/trajectory_generator.cpp - Sampled Paths → Clustering Node: delivers path bundle
README.md - Clustering Node → Level Clustering: runs per level
src/clustering.cpp - Level Clustering → Motion Clusters: publishes groups
src/clustering.cpp - Level Clustering → Cluster Markers: publishes visualization
src/clustering.cpp - Level Clustering → Directional Slicing: applies slicing
src/clustering.cpp - Service Caller → Level Toggle: requests toggle
README.md - Service Caller → Slice Toggle: requests toggle
README.md - Level Toggle → Clustering Node: controls levels
README.md - Slice Toggle → Directional Slicing: controls slicing
README.md