# Piper Hand-Eye Calibration

**URL:** <https://discourse.openrobotics.org/t/piper-hand-eye-calibration/51407>\
**Category:** Gazebo General\
**Created:** [December 15, 2025, 3:24am UTC](https://discourse.openrobotics.org/t/piper-hand-eye-calibration/51407 "2025-12-15T03:24:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Agilex\_Robotics](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/agilex_robotics/32/10554_2.png) [@Agilex\_Robotics](https://discourse.openrobotics.org/u/Agilex_Robotics)\
**Post date:** [December 15, 2025, 3:24am UTC](https://discourse.openrobotics.org/t/piper-hand-eye-calibration/51407/1 "2025-12-15T03:24:35Z")

</div>

# Piper Hand-Eye Calibration

- Eye-in-Hand: The camera is mounted on the end effector of the robotic arm, with the calibration board fixed. The resulting transformation matrix is `T_ee_cam` (end effector to camera). For grasping applications: `T_base_cam = T_base_ee × T_ee_cam`

- Eye-to-Hand: The calibration board is fixed on the end effector of the robotic arm, with the camera stationary. The resulting transformation matrix is `T_base_cam` (base coordinate system to camera). For positioning applications: `T_ee_cam = T_ee_base × T_base_cam`

## Prerequisites

- Ubuntu 22.04
- ROS2 Humble
- [Online Calibration Board Generator](https://chev.me/arucogen/)（recommended:`Original ArUco` dictionary）
- [ArUco Marker Detection Package](https://github.com/pal-robotics/aruco_ros/tree/humble-devel)
- [PiPER Robotic Arm Package](https://github.com/agilexrobotics/piper_ros/tree/humble)
- [Hand-Eye Calibration Package](https://github.com/agilexrobotics/handeye_calibration_ros)
- [USB Camera Instrinsic Calibration](https://github.com/kehuanjack/camera)（Optional）

## Calibration Steps

1. Create a workspace and clone packages

2. Build the workspace

3. Run the ArUco marker detection program

4. Connect the camera, run the camera program, and publish camera image and camera info topics. This example uses an [IntelRealSense](https://github.com/IntelRealSense/realsense-ros) camera.

5. Connect the Piper robotic arm, activate the CAN module, and run the robotic arm program

6. Run the Piper hand-eye calibration program

7. Control the robotic arm and follow the terminal prompts from the calibration program. Two control methods are available:

## Additional Notes

1. View the image

2. View the ArUco marker pose

3. View the robotic arm end effector pose

4. The camera info topic contains intrinsic and distortion parameters, which are required by the ArUco marker detection program.

5. For other cameras (e.g., industrial cameras, regular USB cameras), additional intrinsic and distortion calibration may be required. These parameters need to be encapsulated into the camera info topic.
