From 05475215b701cd2a794032ce1f424e27de0a35ea Mon Sep 17 00:00:00 2001 From: justagist Date: Thu, 15 Oct 2026 08:42:38 +0000 Subject: [PATCH 1/4] add github actions ci and readme badges --- .github/workflows/ci.yml | 52 ++++++++++++++++++++++++++++++++++++++ README.md | 5 ++++ piper_cpp/README.md | 4 +++ piper_cpp_moveit/README.md | 4 +++ piper_cpp_ros/README.md | 5 ++++ 5 files changed, 70 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..de1316d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,52 @@ +name: ci + +on: + push: + branches: [main] + pull_request: + +jobs: + # piper_cpp is a plain CMake library with no ROS dependency; build it the way the + # README documents for non-ROS users. + standalone: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential cmake pkg-config libsocketcan-dev libgtest-dev + - name: Configure + run: cmake -S piper_cpp -B build -DCMAKE_BUILD_TYPE=Release + - name: Build + run: cmake --build build -j + - name: Test + run: ctest --test-dir build --output-on-failure + + ros: + runs-on: ubuntu-24.04 + container: ros:jazzy + steps: + - uses: actions/checkout@v4 + with: + path: src/piper_cpp + - name: Install dependencies + # piper_cpp has no package.xml, so rosdep cannot see its libsocketcan dependency. + # piper_description is an external runtime dependency not needed to build. + run: | + apt-get update + apt-get install -y --no-install-recommends libsocketcan-dev libgtest-dev + rosdep update + rosdep install --from-paths src --ignore-src -y --skip-keys piper_description + - name: Build + shell: bash + run: | + source /opt/ros/jazzy/setup.bash + colcon build --packages-up-to piper_cpp_ros piper_cpp_moveit --event-handlers console_cohesion+ + - name: Test + shell: bash + run: | + source /opt/ros/jazzy/setup.bash + colcon test --packages-select piper_cpp piper_cpp_ros piper_cpp_moveit --event-handlers console_cohesion+ + colcon test-result --verbose diff --git a/README.md b/README.md index 53a6229..465c347 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Piper CPP +[![ci](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml/badge.svg)](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) +[![ROS 2 Jazzy](https://img.shields.io/badge/ROS_2-Jazzy-blue)](https://docs.ros.org/en/jazzy/) +[![C++17](https://img.shields.io/badge/C%2B%2B-17-blue)](piper_cpp/CMakeLists.txt) + - [piper_cpp](piper_cpp) -- C++ SDK for the AgileX Piper 6-DOF arm with gripper. This is a standalone pure C++ library. - [piper_cpp_ros](piper_cpp_ros) -- A ros2_control hardware interface for the AgileX Piper 6-DOF arm and its optional parallel-jaw gripper, built on top of `piper_cpp`. Exposes position / velocity / effort state and position commands per diff --git a/piper_cpp/README.md b/piper_cpp/README.md index 8509599..5748b86 100644 --- a/piper_cpp/README.md +++ b/piper_cpp/README.md @@ -1,5 +1,9 @@ # piper_cpp +[![ci](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml/badge.svg)](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE) +[![C++17](https://img.shields.io/badge/C%2B%2B-17-blue)](CMakeLists.txt) + C++ SDK for the AgileX Piper 6-DOF arm with gripper, communicating over SocketCAN. A close port of the official [`piper_sdk`](https://github.com/agilexrobotics/piper_sdk) Python package with the same control surface and message coverage, but with several improvements such as diff --git a/piper_cpp_moveit/README.md b/piper_cpp_moveit/README.md index e257ecd..895c0fc 100644 --- a/piper_cpp_moveit/README.md +++ b/piper_cpp_moveit/README.md @@ -1,5 +1,9 @@ # piper_cpp_moveit +[![ci](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml/badge.svg)](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE) +[![ROS 2 Jazzy](https://img.shields.io/badge/ROS_2-Jazzy-blue)](https://docs.ros.org/en/jazzy/) + MoveIt 2 configuration for the AgileX Piper 6-DOF arm and its optional parallel-jaw gripper. Plans against the URDF from `piper_description` and dispatches the resulting trajectories through the `joint_trajectory_controller` (and `gripper_controller`, when diff --git a/piper_cpp_ros/README.md b/piper_cpp_ros/README.md index 492de44..31c7005 100644 --- a/piper_cpp_ros/README.md +++ b/piper_cpp_ros/README.md @@ -1,5 +1,10 @@ # piper_cpp_ros +[![ci](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml/badge.svg)](https://github.com/justagist/piper_cpp/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../LICENSE) +[![ROS 2 Jazzy](https://img.shields.io/badge/ROS_2-Jazzy-blue)](https://docs.ros.org/en/jazzy/) +[![C++17](https://img.shields.io/badge/C%2B%2B-17-blue)](CMakeLists.txt) + ros2_control hardware interface for the AgileX Piper 6-DOF arm and its optional parallel-jaw gripper, built on top of [`piper_cpp`](../piper_cpp). From f8a56c1bf9abdefe93bc12ca7b0ef434b2da45d3 Mon Sep 17 00:00:00 2001 From: justagist Date: Thu, 15 Oct 2026 08:43:42 +0000 Subject: [PATCH 2/4] fix licence links in readmes --- README.md | 2 +- piper_cpp_moveit/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 465c347..8c3386a 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,4 @@ alone or, with `with_gripper:=true`, on the arm + gripper together. ## License -MIT — see [LICENSE](../LICENSE). \ No newline at end of file +MIT -- see [LICENSE](LICENSE). \ No newline at end of file diff --git a/piper_cpp_moveit/README.md b/piper_cpp_moveit/README.md index 895c0fc..e92f653 100644 --- a/piper_cpp_moveit/README.md +++ b/piper_cpp_moveit/README.md @@ -94,4 +94,4 @@ they're what selects the URDF, SRDF, and controllers config. ## License -MIT -- see [../piper_cpp/LICENSE](../piper_cpp/LICENSE). +MIT -- see [../LICENSE](../LICENSE). From 96dbdbf99c7840bfdcf1be18f9ed36a53ea19adf Mon Sep 17 00:00:00 2001 From: justagist Date: Thu, 15 Oct 2026 08:44:40 +0000 Subject: [PATCH 3/4] skip piper_cpp rosdep key in ci --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de1316d..e1855bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,13 +32,14 @@ jobs: with: path: src/piper_cpp - name: Install dependencies - # piper_cpp has no package.xml, so rosdep cannot see its libsocketcan dependency. + # piper_cpp has no package.xml, so rosdep neither sees its libsocketcan dependency nor + # recognises it as a source package when piper_cpp_ros depends on it. # piper_description is an external runtime dependency not needed to build. run: | apt-get update apt-get install -y --no-install-recommends libsocketcan-dev libgtest-dev rosdep update - rosdep install --from-paths src --ignore-src -y --skip-keys piper_description + rosdep install --from-paths src --ignore-src -y --skip-keys "piper_cpp piper_description" - name: Build shell: bash run: | From e18e9ae3721426738ddb278b81fa37879f30eaf9 Mon Sep 17 00:00:00 2001 From: justagist Date: Thu, 15 Oct 2026 08:48:33 +0000 Subject: [PATCH 4/4] restrict ci token permissions and bump checkout action --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e1855bb..22575e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,13 +5,18 @@ on: branches: [main] pull_request: +permissions: + contents: read + jobs: # piper_cpp is a plain CMake library with no ROS dependency; build it the way the # README documents for non-ROS users. standalone: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 + with: + persist-credentials: false - name: Install dependencies run: | sudo apt-get update @@ -28,9 +33,10 @@ jobs: runs-on: ubuntu-24.04 container: ros:jazzy steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: path: src/piper_cpp + persist-credentials: false - name: Install dependencies # piper_cpp has no package.xml, so rosdep neither sees its libsocketcan dependency nor # recognises it as a source package when piper_cpp_ros depends on it.