# Nav2 regulated pure pursuit path-following controller

Official C++ Nav2 controller implementation for lookahead curvature, velocity regulation, heading rotation and configurable collision checking. It returns velocity commands inside a configured Nav2 stack; this single source is not a standalone or runtime-verified robot task.

ID: `nav2-regulated-pure-pursuit-controller`

Record version: `source-9f5f23dc174e2bfae10c502fdebecc37b65d5397039d0c2c4504404557101d85`

Hub commit: `dd6ab5cb07becf8a7c963b83202266977265cee8`

## Access

Inspect the pinned source, plugin registration, package declarations and CMake configuration. Obtain and review the complete upstream package before configuring a host. This reference only retrieves inert source; it supplies no build, install or execution adapter.

Optional inert file retrieval: `python /PATH_TO_SKILL/scripts/rsh.py fetch-source nav2-regulated-pure-pursuit-controller --expected-source-revision 58e4019eb149ed4387938d9cd13f38659b86f754 --expected-source-sha256 9f5f23dc174e2bfae10c502fdebecc37b65d5397039d0c2c4504404557101d85 --project ./experiment --json`. This verifies one file, preserves provenance and never installs or runs it. See [source-file retrieval](https://hub.superfastrobotics.com/source-files.md).

Hub preparation adapter: **false**. Runtime verification: **not_run**.

Upstream setup: https://github.com/ros-navigation/navigation2/blob/58e4019eb149ed4387938d9cd13f38659b86f754/nav2_regulated_pure_pursuit_controller/CMakeLists.txt

## Source and license

- Repository: https://github.com/ros-navigation/navigation2
- Pinned source: https://github.com/ros-navigation/navigation2/blob/58e4019eb149ed4387938d9cd13f38659b86f754/nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp
- Revision: `58e4019eb149ed4387938d9cd13f38659b86f754`
- Path: `nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp`
- Source SHA256: `9f5f23dc174e2bfae10c502fdebecc37b65d5397039d0c2c4504404557101d85`
- Source bytes: 21663
- Original authors: Shrijit Singh, Samsung Research America
- License: [Apache-2.0](https://github.com/ros-navigation/navigation2/blob/58e4019eb149ed4387938d9cd13f38659b86f754/nav2_regulated_pure_pursuit_controller/src/regulated_pure_pursuit_controller.cpp)
- License scope: Selected C++ source explicitly declares Apache-2.0, copyright 2020 Shrijit Singh and Samsung Research America; the package.xml agrees. Preserve attribution, license and applicable notices. The root repository is multi-license. This review covers only the selected source and does not clear other package files, helper implementations, dependencies, binaries or physical-robot deployment.

## Artifact

```json
{
  "kind": "code",
  "format": "cpp"
}
```

## Requirements

```json
{
  "python": null,
  "packages": [
    "Complete pinned nav2_regulated_pure_pursuit_controller ROS 2 package and ament_cmake build environment",
    "angles",
    "nav2_common",
    "nav2_core",
    "nav2_util",
    "nav2_costmap_2d",
    "rclcpp",
    "geometry_msgs",
    "nav2_msgs",
    "nav_msgs",
    "std_msgs",
    "pluginlib",
    "tf2",
    "tf2_geometry_msgs",
    "C++17-capable toolchain and complete package helper sources/headers"
  ],
  "hardware": [],
  "system": [
    "Configured Nav2 controller server and lifecycle node loading this plugin",
    "Valid plan, robot pose/speed, goal checker, tf2 transforms, footprint and costmap"
  ],
  "notes": "computeVelocityCommands locks parameter/costmap state, transforms the plan, selects and publishes lookahead points, calculates curvature, handles heading rotation/reversing and applies curvature, cost and goal-approach velocity constraints. Configured collision detection can throw NoValidControl through a separate collision checker; its presence is not a measured safety guarantee. The source returns TwistStamped to its host rather than publishing cmd_vel itself. It creates lifecycle publishers for received_global_plan, lookahead_point, curvature_lookahead_point and is_rotating_to_heading. Cancellation can use configured deceleration; plan/reset/speed-limit methods change internal state. CMake explicitly requests C++17. Package version 1.3.14 and cached jazzy ref are declarations, not tested compatibility. Headers, path/parameter/collision helpers, ROS graph, transforms, footprint and host server must be supplied and reviewed."
}
```

## Invocation

```json
{
  "entrypoint": "pluginlib nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController (nav2_core::Controller)",
  "notes": "Registered C++ shared-library plugin, not a ros2 run executable, standalone file or Hub recipe. Pinned nav2_regulated_pure_pursuit_controller/nav2_regulated_pure_pursuit_controller.xml names the class/base/library; CMake builds and exports it. A configured lifecycle host must load it through the intended Nav2 server. Read the full package, parameters and dependencies before any build or activation. The Hub only indexes one inert source file and did not compile, load or execute a plugin, ROS node, simulator or robot."
}
```

## Compatibility

```json
[]
```

Missing environment fields remain unknown. Source discovery labels do not establish robot compatibility.

## Evidence

Level: **source_reviewed**. Runtime verification: **not_run**.

Complete selected C++ source and package/plugin/CMake texts read as inert data. Twelve bounded anonymous immutable-file GETs matched complete cached-tree Git blob identities and sizes. Source headers, root multi-license index, package declarations, plugin exports and side effects inspected; no compile, import, load, simulation, hardware, performance or compatibility test.

Source review and contributor reports do not establish task completion. Preserve upstream attribution and licenses.
