Robotics

Launch-plus: Bazel-like selective builds for ROS 2 that works with your existing project, today

Cuts build times from 1 hour to minutes by analyzing launch files first, fetching only needed packages.

Deep Dive

Developer Paulsohn has released launch-plus, a new tool that fundamentally changes the ROS 2 build workflow by introducing selective, Bazel-inspired builds. Instead of the standard, inefficient cycle of cloning all repositories and building all packages in a workspace—which can take over an hour for large projects like Autoware—launch-plus starts by analyzing the user's launch file. It traces the dependency graph, evaluating conditionals and following includes, to determine exactly which packages are needed. It then fetches only those specific packages using sparse git checkouts and builds the minimal transitive dependency set. This approach is particularly powerful for Python launch files, as it can execute `generate_launch_description()` with mocked imports to analyze dependencies without requiring the full ROS 2 stack to be installed.

Beyond speeding up builds, launch-plus restores and extends launch introspection capabilities lost in the transition from ROS 1 to ROS 2. It can resolve complex Python launch files with `OpaqueFunction` callbacks into a single, flattened XML representation. This provides a complete, auditable view of a launch configuration—every node, parameter, and remap—which is invaluable for debugging, safety reviews, and multi-team integration in complex systems like autonomous vehicles. The tool effectively acts as a `bazel query` and `bazel build` for ROS 2, bringing deterministic, graph-based build logic to a domain previously dominated by monolithic operations.

Key Points
  • Analyzes ROS 2 launch files first to build a minimal dependency graph, avoiding the standard 'build everything' approach.
  • Uses sparse git checkouts to fetch only required packages, cutting clone/build times from ~1 hour to minutes for large workspaces.
  • Restores launch introspection for Python files and outputs a flattened, resolved XML for debugging and safety auditing.

Why It Matters

Drastically accelerates ROS 2 development cycles for autonomous systems and robotics, enabling faster iteration and safer deployment.