Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
ef6c100
renamed xacro files for better readability
macmacal Jan 17, 2024
71b5520
black formatting
macmacal Jan 18, 2024
94ab2dd
typo for prefix arg
macmacal Jan 18, 2024
18436e5
added note about the end effector's TF frame
macmacal Jan 18, 2024
28fe4be
created gitignore
macmacal Feb 20, 2024
1715c30
black fmt
macmacal Feb 20, 2024
98f4187
renamed .urdf.xacro example file
macmacal Feb 20, 2024
8a47552
changed grip width offset by +25mm
macmacal Feb 20, 2024
0dffeec
updated README
macmacal Feb 20, 2024
27a1132
readme fmt
macmacal Feb 20, 2024
8b42565
unified naming for joints & links
macmacal Jan 27, 2025
b38ae2d
initial ros2_control params
macmacal Jan 27, 2025
4d04a2a
github repo (pre-commit) boilerplate
macmacal Jan 27, 2025
32d789f
pre-commit fmt
macmacal Jan 28, 2025
4d6999f
minor typos
macmacal Jan 29, 2025
b44839b
updated readme
macmacal Jan 30, 2025
39401af
added pre-commit & github templates
macmacal Jan 30, 2025
98d892d
pre-commit fmt
macmacal Jan 30, 2025
5cad9ca
updated readme
macmacal Jan 30, 2025
8f5e6ac
Merge pull request #2 from macmacal/feature/repo_utils
macmacal Jan 30, 2025
6f2741f
Merge branch 'humble-devel' into feature/ros2_control
macmacal Jan 30, 2025
52de37c
Merge pull request #1 from macmacal/feature/ros2_control
macmacal Jan 30, 2025
e6801c2
Configuration params for ModbusRTU serial communication (#1)
slimasziom Feb 25, 2025
eef253d
HOTFIX: remove quotation marks from param values (#2)
slimasziom Feb 26, 2025
47696b8
updated pre-commit hooks
macmacal Mar 10, 2025
1c32bb5
improved urdf readability
macmacal Mar 10, 2025
f7bf78b
removed unused materials colours (for dae files)
macmacal Mar 10, 2025
f55e01c
unified inertial notation
macmacal Mar 10, 2025
32b0fcd
parametrized coupler mass (with bolts)
macmacal Mar 10, 2025
6280005
updated models (new io coupler)
macmacal Mar 12, 2025
65bd05f
update ros2_control args
macmacal Mar 12, 2025
3a3b3bb
updated readme
macmacal Mar 12, 2025
5f20653
Merge branch 'humble-devel' into feature/minor_improvments
macmacal Mar 12, 2025
bb1a0cd
updated rviz gif
macmacal Mar 12, 2025
2599436
updated readme
macmacal Mar 12, 2025
239233a
redefined meshes and updated FCstd files
macmacal Mar 12, 2025
bb4fc91
todo: parametrize intertia
macmacal Mar 12, 2025
f44fe42
Added cylinder inertial
macmacal Mar 12, 2025
59eb733
parametrized collision cylinders with hande_radius
macmacal Mar 12, 2025
9ee7afd
updated gif preview
macmacal Mar 12, 2025
992dff4
CHG: update changelog
slimasziom Mar 13, 2025
af27ba0
Apply suggestions from code review
macmacal Mar 13, 2025
9244740
Update CHANGELOG.md
macmacal Mar 13, 2025
afbfc29
Merge pull request #3 from AGH-CEAI/feature/minor_improvments
macmacal Mar 13, 2025
59ae4db
version bump
macmacal Mar 13, 2025
abf19ae
moved intertia mass centers
macmacal Mar 17, 2025
da85a96
updated changelog
macmacal Mar 17, 2025
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
16 changes: 16 additions & 0 deletions .github/issue_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---

name: "Issue template"
about: "Minimal information about an issue"
title: ""
ref: "devel"

---

## Description


<!--- ## Screenshots (if appropriate): -->

## References
<!--- Create a list of references, (in a bullet style) -->
27 changes: 27 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!--- Provide a general summary of your changes in the Title above -->
## Description


## Motivation and context
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->


<!--- ## Screenshots (if appropriate): -->

## How has this been tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->


## Checklist
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] All TODOs in the code have been resolved or linked to a proper issue.
- [ ] Code has been (auto)formatted.
- [ ] Documentation (e.g., README, CHANGELOG, Wiki) has been updated.
- [ ] All automated checks have passed.

---
Clickup task: [hash](link)
11 changes: 11 additions & 0 deletions .github/workflows/pre-commit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: Pre-Commit

on:
push:

jobs:
pre-commit:
uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master
with:
ros_distro: humble
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/
33 changes: 33 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-toml
- id: check-xml
- id: debug-statements
- id: destroyed-symlinks
- id: detect-private-key
- id: end-of-file-fixer
- id: mixed-line-ending
- id: pretty-format-json
- id: trailing-whitespace
- id: check-yaml

- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
args: [-L, hande, -w]

- repo: https://github.com/tier4/pre-commit-hooks-ros
rev: v0.10.0
hooks:
- id: prettier-xacro
- id: prettier-package-xml
- id: ros-include-guard
- id: sort-package-xml
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Changelog

All notable changes to the `robotiq_hande_driver` package will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2025-03-13

### Added

* [PR-1](https://github.com/AGH-CEAI/robotiq_hande_description/pull/1) - Configuration parameters for ModbusRTU.

### Changed

* [PR-3](https://github.com/AGH-CEAI/robotiq_hande_description/pull/3) & [PR-4](https://github.com/AGH-CEAI/robotiq_hande_description/pull/3) - Changed the coupler model and simplified URDF files by editing the models.

### Deprecated

### Removed

### Fixed
* [PR-2](https://github.com/AGH-CEAI/robotiq_hande_description/pull/2) - Removed unnecessary quotation marks from parameter values.

### Security
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ install(
DESTINATION share/${PROJECT_NAME}
)

ament_package()
ament_package()
49 changes: 42 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,59 @@
# robotiq_hande_description
### For the driver, check the [robotiq_hande_driver](https://github.com/AGH-CEAI/robotiq_hande_driver/) package from AGH UST.
---

[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)

This package contains meshes and URDF description of [Robotiq Hand-E gripper](https://robotiq.com/products/hand-e-adaptive-robot-gripper). It was originally developed for integration with Universal Robots e-series (UR5e), however it is be possible to change the coupler model to fit your needs. **PRs are welcome!**

This package contains meshes and URDF description of [Robotiq Hand-E gripper](https://robotiq.com/products/hand-e-adaptive-robot-gripper) dedicated for Universal Robots e-series.

- The gripper comes with coupler model (but without flange).
- This repository comes with CAD models imported from STEP files to FreeCAD format (FCStd).
- These CAD models are taken from the official [Robotiq Support page](https://robotiq.com/support).
- Package has been developed and tested in ROS 2 Humble.
- The definitions for the `ros2_control` framework are available in the [robotiq_hande_gripper.ros2_control.xacro](./urdf/robotiq_hande_gripper.ros2_control.xacro) file.


> [!IMPORTANT]
> The fingers' joints can be set from **0 to 25 mm** (which corresponds to the maximal grasp with from **0 to 50 mm**).

![hande_model](docs/hande_rviz.gif)


## Usage

In your URDF (Xacro) file include the Hand-E definition. Provide a parent link (for instance `tool0`) as the parameter:
In your URDF (Xacro) file include the Hand-E definition. Provide a unique name and the parent link (for instance `tool0`) as the parameters:

```xml
<xacro:include filename="$(find robotiq_hande_description)/urdf/robotiq_hande_gripper.urdf.xacro" />
<xacro:include filename="$(find robotiq_hande_description)/urdf/robotiq_hande_gripper.xacro" />
<!-- ... -->
<xacro:robotiq_hande_gripper parent="PARENT_LINK" prefix="" />
<xacro:robotiq_hande_gripper name="robotiq_hande_gripper" parent="PARENT_LINK" prefix="" />
```

An example usage can be find in the [urdf/robotiq_hande_gripper.xacro](./urdf/robotiq_hande_gripper.xacro) file.
For estabilishg a connection with [robotiq_hande_driver](https://github.com/AGH-CEAI/robotiq_hande_driver) there is also need to provide more parameters:
```xml
<xacro:robotiq_hande_gripper
name="robotiq_hande_gripper"
prefix=""
parent="tool0"
grip_pos_min="0.0"
grip_pos_max="0.025"
tty="/tmp/ttyUR"
baudrate="115200"
parity="N"
data_bits="8"
stop_bit="1"
slave_id="9"
use_fake_hardware="false"
/>
```

> [!NOTE]
> The TF frame of the end tip of the gripper is called `${prefix}hande_end`, where `${prefix}` evaluates as the `prefix` macro parameter.

### Examples
**An example usage can be find** in the [urdf/hande_preview.urdf.xacro](./urdf/robotiq_hande_gripper.urdf.xacro) file. Furthermore, an integration with whole ROS 2 project example can be find in the [AGH-CEAI/aegis_ros](https://github.com/AGH-CEAI/aegis_ros) repository.


## Preview

Expand All @@ -33,6 +68,6 @@ ros2 launch robotiq_hande_description display.launch.py
```

## Credits
- The orignal files of the gripper model were taken from the [Robotiq website](https://robotiq.com/products/hand-e-adaptive-robot-gripper).
- The original files of the gripper model were taken from the [Robotiq website](https://robotiq.com/products/hand-e-adaptive-robot-gripper).
- The URDF files are based on work of @cambel [repository](https://github.com/cambel/robotiq.git).
- Preview in Rviz is based on [ROS 2 URDF Tutorial](https://github.com/ros/urdf_tutorial/tree/ros2/).
- Preview in Rviz is based on [ROS 2 URDF Tutorial](https://github.com/ros/urdf_tutorial/tree/ros2/).
Binary file removed cad_models/coupler.FCStd
Binary file not shown.
Binary file removed cad_models/coupler.FCStd1
Binary file not shown.
Binary file modified cad_models/finger.FCStd
Binary file not shown.
Binary file modified cad_models/finger_collision.FCStd
Binary file not shown.
Binary file modified cad_models/hande_step.FCStd
Binary file not shown.
Binary file added cad_models/io_coupler.FCStd
Binary file not shown.
Binary file modified docs/hande_rviz.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions launch/display.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def generate_launch_description():
ld = LaunchDescription()

pkg_path = FindPackageShare('robotiq_hande_description')
model_path = PathJoinSubstitution(['urdf', 'robotiq_hande_gripper.xacro'])
model_path = PathJoinSubstitution(['urdf', 'robotiq_hande_gripper.urdf.xacro'])
rviz_config_path = PathJoinSubstitution([pkg_path, 'rviz', 'urdf.rviz'])
run_joint_state_publisher_gui = 'true'

Expand All @@ -21,4 +21,4 @@ def generate_launch_description():
'jsp_gui': run_joint_state_publisher_gui}.items()
))

return ld
return ld
106 changes: 0 additions & 106 deletions meshes/coupler.dae

This file was deleted.

Binary file removed meshes/coupler.stl
Binary file not shown.
94 changes: 47 additions & 47 deletions meshes/finger.dae

Large diffs are not rendered by default.

82 changes: 41 additions & 41 deletions meshes/finger_collision.dae
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor/>
<created>2024-01-17T12:16:39.919868</created>
<modified>2024-01-17T12:16:39.919870</modified>
<unit name="meter" meter="1.0"/>
<contributor />
<created>2025-03-12T18:46:43.198333</created>
<modified>2025-03-12T18:46:43.198337</modified>
<unit name="meter" meter="1.0" />
<up_axis>Z_UP</up_axis>
</asset>
<library_effects>
<effect id="effect_Mesh" name="effect_Mesh">
<effect id="effect_Mesh001" name="effect_Mesh001">
<profile_COMMON>
<technique sid="common">
<phong>
Expand Down Expand Up @@ -47,7 +47,7 @@
</extra>
</profile_COMMON>
</effect>
<effect id="effect_Mesh001" name="effect_Mesh001">
<effect id="effect_Mesh" name="effect_Mesh">
<profile_COMMON>
<technique sid="common">
<phong>
Expand Down Expand Up @@ -89,77 +89,77 @@
</effect>
</library_effects>
<library_geometries>
<geometry id="geometry0" name="Mesh">
<geometry id="geometry0" name="Mesh001">
<mesh>
<source id="cubeverts-array0">
<float_array count="24" id="cubeverts-array0-array">-0.0107 -0.029 0.0185 -0.0107 -0.036 0.0185 -0.0107 -0.029 0.03905 -0.0107 -0.036 0.03905 0.0105 -0.036 0.0185 0.0105 -0.029 0.0185 0.0105 -0.029 0.03905 0.0105 -0.036 0.03905</float_array>
<float_array count="24" id="cubeverts-array0-array">0.0065 0.0105 0.02655 -1.421085e-17 0.0105 0.02655 0.0065 0.0105 0.04755 -1.776357e-17 0.0105 0.04755 -1.776357e-17 -0.0106 0.02655 0.0065 -0.0106 0.02655 0.0065 -0.0106 0.04755 -2.131628e-17 -0.0106 0.04755</float_array>
<technique_common>
<accessor count="8" source="#cubeverts-array0-array" stride="3">
<param type="float" name="X"/>
<param type="float" name="Y"/>
<param type="float" name="Z"/>
<param type="float" name="X" />
<param type="float" name="Y" />
<param type="float" name="Z" />
</accessor>
</technique_common>
</source>
<source id="cubenormals-array0">
<float_array count="36" id="cubenormals-array0-array">-1 0 0 -1 -0 0 1 0 0 1 0 0 -0 -0 -1 0 0 -1 0 -0 1 0 0 1 -0 1 0 0 1 0 -0 -1 0 0 -1 -0</float_array>
<float_array count="36" id="cubenormals-array0-array">0 1 -0 0 1 0 0 -1 0 0 -1 0 -0 -0 -1 0 0 -1 0 -0 1 0 0 1 1 0 0 1 0 0 -1 1.683751e-16 -1.691769e-16 -1 1.683751e-16 -1.691769e-16</float_array>
<technique_common>
<accessor count="12" source="#cubenormals-array0-array" stride="3">
<param type="float" name="X"/>
<param type="float" name="Y"/>
<param type="float" name="Z"/>
<param type="float" name="X" />
<param type="float" name="Y" />
<param type="float" name="Z" />
</accessor>
</technique_common>
</source>
<vertices id="cubeverts-array0-vertices">
<input semantic="POSITION" source="#cubeverts-array0"/>
<input semantic="POSITION" source="#cubeverts-array0" />
</vertices>
<triangles count="12" material="ref_Mesh">
<input offset="0" semantic="VERTEX" source="#cubeverts-array0-vertices"/>
<input offset="1" semantic="NORMAL" source="#cubenormals-array0"/>
<p>0 0 1 0 2 0 2 1 1 1 3 1 4 2 5 2 6 2 4 3 6 3 7 3 5 4 4 4 0 4 0 5 4 5 1 5 7 6 6 6 2 6 7 7 2 7 3 7 2 8 6 8 0 8 0 9 6 9 5 9 7 10 3 10 1 10 7 11 1 11 4 11</p>
<triangles count="12" material="ref_Mesh001">
<input offset="0" semantic="VERTEX" source="#cubeverts-array0-vertices" />
<input offset="1" semantic="NORMAL" source="#cubenormals-array0" />
<p>0 0 1 0 2 0 2 1 1 1 3 1 4 2 5 2 6 2 4 3 6 3 7 3 0 4 5 4 1 4 5 5 4 5 1 5 6 6 2 6 3 6 7 7 6 7 3 7 2 8 6 8 0 8 0 9 6 9 5 9 7 10 3 10 1 10 7 11 1 11 4 11</p>
</triangles>
</mesh>
</geometry>
<geometry id="geometry1" name="Mesh001">
<geometry id="geometry1" name="Mesh">
<mesh>
<source id="cubeverts-array1">
<float_array count="24" id="cubeverts-array1-array">0.0105 -0.0315 0.03905 0.0105 -0.025 0.03905 0.0105 -0.0315 0.06005 0.0105 -0.025 0.06005 -0.0106 -0.025 0.03905 -0.0106 -0.0315 0.03905 -0.0106 -0.0315 0.06005 -0.0106 -0.025 0.06005</float_array>
<float_array count="24" id="cubeverts-array1-array">0.004 -0.0107 0.006 0.011 -0.0107 0.006 0.004 -0.0107 0.02655 0.011 -0.0107 0.02655 0.011 0.0105 0.006 0.004 0.0105 0.006 0.004 0.0105 0.02655 0.011 0.0105 0.02655</float_array>
<technique_common>
<accessor count="8" source="#cubeverts-array1-array" stride="3">
<param type="float" name="X"/>
<param type="float" name="Y"/>
<param type="float" name="Z"/>
<param type="float" name="X" />
<param type="float" name="Y" />
<param type="float" name="Z" />
</accessor>
</technique_common>
</source>
<source id="cubenormals-array1">
<float_array count="36" id="cubenormals-array1-array">1 0 0 1 -0 0 -1 0 0 -1 0 0 0 0 -1 0 0 -1 0 0 1 -0 0 1 -0 -1 -0 0 -1 0 -0 1 0 0 1 0</float_array>
<float_array count="36" id="cubenormals-array1-array">0 -1 0 0 -1 0 0 1 0 0 1 -0 0 0 -1 0 0 -1 0 0 1 0 0 1 -1 0 0 -1 0 0 1 0 0 1 0 0</float_array>
<technique_common>
<accessor count="12" source="#cubenormals-array1-array" stride="3">
<param type="float" name="X"/>
<param type="float" name="Y"/>
<param type="float" name="Z"/>
<param type="float" name="X" />
<param type="float" name="Y" />
<param type="float" name="Z" />
</accessor>
</technique_common>
</source>
<vertices id="cubeverts-array1-vertices">
<input semantic="POSITION" source="#cubeverts-array1"/>
<input semantic="POSITION" source="#cubeverts-array1" />
</vertices>
<triangles count="12" material="ref_Mesh001">
<input offset="0" semantic="VERTEX" source="#cubeverts-array1-vertices"/>
<input offset="1" semantic="NORMAL" source="#cubenormals-array1"/>
<p>0 0 1 0 2 0 2 1 1 1 3 1 4 2 5 2 6 2 4 3 6 3 7 3 0 4 5 4 1 4 5 5 4 5 1 5 6 6 2 6 3 6 7 7 6 7 3 7 2 8 6 8 0 8 0 9 6 9 5 9 7 10 3 10 1 10 7 11 1 11 4 11</p>
<triangles count="12" material="ref_Mesh">
<input offset="0" semantic="VERTEX" source="#cubeverts-array1-vertices" />
<input offset="1" semantic="NORMAL" source="#cubenormals-array1" />
<p>0 0 1 0 2 0 2 1 1 1 3 1 4 2 5 2 6 2 4 3 6 3 7 3 5 4 4 4 0 4 0 5 4 5 1 5 7 6 6 6 2 6 7 7 2 7 3 7 2 8 6 8 0 8 0 9 6 9 5 9 7 10 3 10 1 10 7 11 1 11 4 11</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_materials>
<material id="mat_Mesh" name="Mesh">
<instance_effect url="#effect_Mesh"/>
</material>
<material id="mat_Mesh001" name="Mesh001">
<instance_effect url="#effect_Mesh001"/>
<instance_effect url="#effect_Mesh001" />
</material>
<material id="mat_Mesh" name="Mesh">
<instance_effect url="#effect_Mesh" />
</material>
</library_materials>
<library_visual_scenes>
Expand All @@ -168,7 +168,7 @@
<instance_geometry url="#geometry0">
<bind_material>
<technique_common>
<instance_material symbol="ref_Mesh" target="#mat_Mesh"/>
<instance_material symbol="ref_Mesh001" target="#mat_Mesh001" />
</technique_common>
</bind_material>
</instance_geometry>
Expand All @@ -177,14 +177,14 @@
<instance_geometry url="#geometry1">
<bind_material>
<technique_common>
<instance_material symbol="ref_Mesh001" target="#mat_Mesh001"/>
<instance_material symbol="ref_Mesh" target="#mat_Mesh" />
</technique_common>
</bind_material>
</instance_geometry>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#myscene"/>
<instance_visual_scene url="#myscene" />
</scene>
</COLLADA>
Loading