No version for distro humble showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro jazzy showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro kilted showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro lyrical showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro rolling showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro galactic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro iron showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro melodic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)
No version for distro noetic showing github. Known supported distros are highlighted in the buttons above.

Repository Summary

Description
Checkout URI https://github.com/clearpathrobotics/clearpath_robot.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

clearpath_robot

ROS 2 packages for interfacing with Clearpath Platforms (real hardware).

For supported platforms, sensors and manipulators plus additional details, please see: https://docs.clearpathrobotics.com/docs/ros/

Where this fits in the Clearpath ROS 2 stack

clearpath_robot is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. It consumes the description/control assets from clearpath_common and the files generated from robot.yaml.

flowchart LR
    yaml["robot.yaml"] --> config["clearpath_config"]
    config --> genr["clearpath_generator_robot<br/>(this repo)"]
    genr --> out["/etc/clearpath<br/>generated launch / params"]
    common["clearpath_common<br/>description + control"] --> bringup
    out --> bringup["systemd services<br/>(clearpath_robot)"]
    bringup --> hw["motor drivers + sensors<br/>(real hardware)"]

Packages

Package Description Key files
clearpath_robot Metapackage. Bringup scripts and the systemd services that start the robot on boot. scripts/ (generate, install, check, grab-diagnostics, shutdown.py, vcan), services/ (clearpath-robot.service, clearpath-platform.service, clearpath-sensors.service, clearpath-discovery.service, …)
clearpath_generator_robot Generates the robot-side launch and parameter files from the parsed config. Builds on clearpath_generator_common. clearpath_generator_robot/
clearpath_hardware_interfaces Platform hardware drivers / ros2_control hardware interfaces for the base. clearpath_hardware_interfaces/
clearpath_motor_drivers Low-level motor controller drivers. Contains lynx_motor_driver (current platforms) and puma_motor_driver (legacy). lynx_motor_driver/, puma_motor_driver/
clearpath_sensors Default launch files and parameter configurations for supported sensors. clearpath_sensors/
clearpath_tests On-robot hardware/functional test suite (see its README). clearpath_tests/

Runtime model

The robot boots via systemd. clearpath-robot.service is the top-level unit that generates the launch files (via clearpath_generator_robot) and starts the child services (platform, sensors, manipulators, discovery, …). The generated output and the source robot.yaml live in /etc/clearpath (the setup path). Useful commands on a robot:

sudo systemctl status clearpath-robot     # overall bringup status
sudo systemctl restart clearpath-robot    # regenerate + restart everything
journalctl -u clearpath-platform -f       # follow a single service's logs
ros2 run clearpath_robot generate         # regenerate launch/params from robot.yaml

Build

From your ROS 2 workspace root:

rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Notes

  • This package assumes it is running on the robot’s onboard computer with /etc/clearpath populated. For a desktop/offboard workflow use clearpath_desktop, and for Gazebo use clearpath_simulator.
  • After editing robot.yaml, the generated files are stale until you regenerate (restarting clearpath-robot.service does this for you).

Documentation

Generator Tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch files and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of clearpath_generator_tests for the full process.

CONTRIBUTING

Contributing to clearpath_robot

Thanks for your interest in improving clearpath_robot! This is the on-robot half of the stack: it runs on the physical platform’s onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of systemd services. Because it drives real hardware, please read the notes below before opening a pull request.

Getting started

  1. Fork the repository and clone your fork.
  2. Create a feature branch off jazzy:
   git checkout -b my-feature jazzy
   
  1. Build the workspace and source it:
   rosdep install --from-paths src --ignore-src -r -y
   colcon build --symlink-install
   source install/setup.bash
   
  1. Install the pre-commit hooks (one-time setup):
   pip install pre-commit
   pre-commit install
   

Linting

This repository uses pre-commit to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, markdownlint, flake8, and cspell spell-checking) before each commit. Run them against the whole tree before pushing:

pre-commit run --all-files

Where things live

See the Packages section of the README for the full map:

Testing your changes

Most of this repository interacts with real hardware and the systemd bringup, so validate changes on a robot where possible:

sudo systemctl restart clearpath-robot     # regenerate + restart everything
sudo systemctl status clearpath-robot      # overall bringup status
journalctl -u clearpath-platform -f        # follow a single service's logs
ros2 run clearpath_robot generate          # regenerate launch/params from robot.yaml

The clearpath_tests package provides an on-robot functional test suite — see its README. Build and run any package unit tests through colcon:

colcon test --packages-select <package_name>
colcon test-result --verbose

Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach.

Generator tests

Changes to the generators in this repository (clearpath_generator_robot) may affect the generated output for launch and parameter files. The clearpath_generator_tests repository versions the expected output and validates it through CI.

Before merging, ensure a corresponding branch with the same name exists in clearpath_generator_tests with regenerated samples. See the Development Workflow section of that repository for the full process.

Continuous integration

Every pull request runs clearpath_robot_ci. The jobs differ in whether they pick up upstream changes — commits on a branch with the same name as your branch in one of the repositories listed in dependencies.repos (for example clearpath_common or clearpath_config). The repos-dep-update-action swaps those matching branches in for the “Head Branch” jobs, so those are the jobs that reflect your upstream work.

Job Sees your upstream branches? Expected result

File truncated at 100 lines see the full file

# Contributing to clearpath_robot Thanks for your interest in improving `clearpath_robot`! This is the **on-robot** half of the stack: it runs on the physical platform's onboard computer, talks to the motor controllers and sensors, and brings the robot up as a set of `systemd` services. Because it drives real hardware, please read the notes below before opening a pull request. ## Getting started 1. Fork the repository and clone your fork. 2. Create a feature branch off `jazzy`: ```bash git checkout -b my-feature jazzy ``` 3. Build the workspace and source it: ```bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash ``` 4. Install the pre-commit hooks (one-time setup): ```bash pip install pre-commit pre-commit install ``` ## Linting This repository uses [pre-commit](https://pre-commit.com/) to run linting and formatting checks (trailing whitespace, end-of-file, YAML/JSON checks, `markdownlint`, `flake8`, and `cspell` spell-checking) before each commit. Run them against the whole tree before pushing: ```bash pre-commit run --all-files ``` ## Where things live See the [Packages section of the README](README.md#packages) for the full map: - [`clearpath_robot`](clearpath_robot) — bringup scripts and the `systemd` services that start the robot on boot. - [`clearpath_generator_robot`](clearpath_generator_robot) — generates the robot-side launch and parameter files (builds on `clearpath_generator_common`). - [`clearpath_hardware_interfaces`](clearpath_hardware_interfaces) and [`clearpath_motor_drivers`](clearpath_motor_drivers) — hardware and motor controller drivers. - [`clearpath_sensors`](clearpath_sensors) — default sensor launch/param files. - [`clearpath_tests`](clearpath_tests) — on-robot hardware/functional test suite. ## Testing your changes Most of this repository interacts with real hardware and the `systemd` bringup, so validate changes on a robot where possible: ```bash sudo systemctl restart clearpath-robot # regenerate + restart everything sudo systemctl status clearpath-robot # overall bringup status journalctl -u clearpath-platform -f # follow a single service's logs ros2 run clearpath_robot generate # regenerate launch/params from robot.yaml ``` The [`clearpath_tests`](clearpath_tests) package provides an on-robot functional test suite — see its [README](clearpath_tests/README.md). Build and run any package unit tests through `colcon`: ```bash colcon test --packages-select colcon test-result --verbose ``` Be careful with changes that move the platform — ensure the area is clear and an e-stop is within reach. ## Generator tests Changes to the generators in this repository (`clearpath_generator_robot`) may affect the generated output for launch and parameter files. The [clearpath_generator_tests](https://github.com/clearpathrobotics/clearpath_generator_tests) repository versions the expected output and validates it through CI. Before merging, ensure a corresponding branch with the **same name** exists in `clearpath_generator_tests` with regenerated samples. See the [Development Workflow](https://github.com/clearpathrobotics/clearpath_generator_tests#development-workflow) section of that repository for the full process. ## Continuous integration Every pull request runs [`clearpath_robot_ci`](.github/workflows/ci.yml). The jobs differ in whether they pick up **upstream changes** — commits on a branch with the **same name** as your branch in one of the repositories listed in [`dependencies.repos`](dependencies.repos) (for example `clearpath_common` or `clearpath_config`). The [repos-dep-update-action](https://github.com/clearpathrobotics/repos-dep-update-action) swaps those matching branches in for the "Head Branch" jobs, so those are the jobs that reflect your upstream work. | Job | Sees your upstream branches? | Expected result | File truncated at 100 lines [see the full file](https://github.com/clearpathrobotics/clearpath_robot/tree/jazzy/CONTRIBUTING.md)