diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..22575e5 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,59 @@ +name: ci + +on: + push: + 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@v5 + with: + persist-credentials: false + - 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@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. + # 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_cpp 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..8c3386a 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 @@ -11,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/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..e92f653 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 @@ -90,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). 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).