Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CI pipelines for maintained ROS2 releases #1

Merged
merged 3 commits into from
Apr 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/script/install_dependencies.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#/usr/bin/bash
cd $HOME
apt-get install curl libcurl4-openssl-dev
24 changes: 24 additions & 0 deletions .github/workflows/industrial_ci_humble_action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Humble

on:
push:
pull_request:
schedule:
# Run every Friday at 6:30 am to detect breaking APIs
- cron: '30 6 * * 5'


jobs:
industrial_ci:
env:
BEFORE_BUILD_TARGET_WORKSPACE: '.github/script/install_dependencies.sh'
strategy:
fail-fast: false
matrix:
env:
- {ROS_DISTRO: humble, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: 'ros-industrial/industrial_ci@master'
env: ${{matrix.env}}
24 changes: 24 additions & 0 deletions .github/workflows/industrial_ci_iron_action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Iron

on:
push:
pull_request:
schedule:
# Run every Friday at 6:30 am to detect breaking APIs
- cron: '30 6 * * 5'


jobs:
industrial_ci:
env:
BEFORE_BUILD_TARGET_WORKSPACE: '.github/script/install_dependencies.sh'
strategy:
fail-fast: false
matrix:
env:
- {ROS_DISTRO: iron, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: 'ros-industrial/industrial_ci@master'
env: ${{matrix.env}}
25 changes: 25 additions & 0 deletions .github/workflows/industrial_ci_rolling_action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Rolling

on:
push:
pull_request:
schedule:
# Run every Friday at 6:30 am to detect breaking APIs
- cron: '30 6 * * 5'


jobs:
industrial_ci:
env:
BEFORE_BUILD_TARGET_WORKSPACE: '.github/script/install_dependencies.sh'
strategy:
fail-fast: false
matrix:
env:
- {ROS_DISTRO: rolling, ROS_REPO: testing}
- {ROS_DISTRO: rolling, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: 'ros-industrial/industrial_ci@master'
env: ${{matrix.env}}
34 changes: 14 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,21 @@
# schunk_gripper_driver
![build badge](https://github.com/SCHUNK-SE-Co-KG/schunk_egu_egk_gripper/actions/workflows/industrial_ci_humble_action.yml/badge.svg)
![build badge](https://github.com/SCHUNK-SE-Co-KG/schunk_egu_egk_gripper/actions/workflows/industrial_ci_iron_action.yml/badge.svg)
![build badge](https://github.com/SCHUNK-SE-Co-KG/schunk_egu_egk_gripper/actions/workflows/industrial_ci_rolling_action.yml/badge.svg)

# Schunk EGU/EGK Gripper

## Description
This is the ROS2 driver for controlling the SCHUNK EGU/EGK grippers. It is compatible with
grippers featuring PROFINET, Ethernet/IP, or EtherCAT and communicates with the AnybusCom 40 interface.
The driver supports most gripper functionalities, except for the jog mode.

ROS2 driver for controlling Schunk EGU/EGK grippers. It is compatible with grippers featuring PROFINET, Ethernet/IP, or EtherCAT communication interfaces. The ROS driver encapsulates all gripper functionalities, excluding the jog mode.
## System dependencies

We use the _curl_ library for the _HTTP_-based communication to the devices. Install that system-wide with
```bash
sudo apt install curl libcurl4-openssl-dev
```

### Background

The driver communicates with the AnybusCom 40 interface, enabling its use with PROFINET, Ethernet/IP, and EtherCAT grippers over HTTP. The ROS wrapper exposes the gripper's functionalities through ROS.

## Requirements

The provided distribution is "humble." To install ROS2 and verify compatibility with your operating system, please refer to the following link:
[ROS2 Installation Guide](https://docs.ros.org/en/humble/Installation.html)

Following C++ libraries are required:
- [libcurl](https://curl.se/libcurl/)
- [nlohmann/json](https://github.com/nlohmann/json)

'nlohmann/json' is included in the project. You don't need to download it separately.

## Build
## Build and install
Clone the GitLab repository into your workspace:
```
git clone https://gitlab-test.cloud.schunk.com/technology-factory/students/ros-gripper/ros2_schunk_driver.git
Expand Down Expand Up @@ -162,4 +156,4 @@ Additionally, you can refer to 'gripper_example.cpp' for guidance on using this
**!!!WARNING!!! This will move the gripper jaws**
```
ros2 run schunk_gripper schunk_example
```
```
20 changes: 5 additions & 15 deletions src/schunk_gripper/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ target_compile_definitions(schunk_gripper_driver
# Link libraries to schunk_gripper_driver
target_link_libraries(schunk_gripper_driver
${CURL_LIBRARIES}
-lcurl
)

# Add dependencies for schunk_gripper_driver
Expand All @@ -104,7 +103,6 @@ rclcpp_components_register_nodes(schunk_gripper_driver "SchunkGripperNode")
# Link libraries to schunk_gripper_driver
target_link_libraries(schunk_gripper_driver
${CURL_LIBRARIES}
-lcurl
)

# Install schunk_gripper_example executable
Expand Down Expand Up @@ -132,24 +130,16 @@ install(DIRECTORY
include/
DESTINATION include
)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# comment the line when a copyright and license is added to all source files
set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# comment the line when this package is in a git repo and when
# a copyright and license is added to all source files
set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()

# Install launch files
install(DIRECTORY
launch
DESTINATION share/${PROJECT_NAME}/
)

#--------------------------------------------------------------------------------
# Test
#--------------------------------------------------------------------------------
if(BUILD_TESTING)
endif()

# Ament package configuration
ament_package()
Expand Down