Object Sorting Using Eye-in-Hand Manipulator

Last updated on April 2022.


Introduction

This project was a course project of ECE4310 Programming for Robotics, Spring 2022, at CUHK-Shenzhen. In this project, I programmed a 6-DoF serial manipulator (Interbotix WidowX 250) with eye-in-hand camera configuration to perform an intelligent sorting task: automatically places the different colored blocks into the corresponding colored buckets.

setup

Method

In this project, I used the ROS MoveIt! toolkit to implement most of the functions, including motion planning and obstacle avoidance. I used the OpenCV library to implement a HSV mask based method to detect and distinguish the differently colored targets.

hsv

I used linear regression for single pose eye-in-hand calibration (the robot is programmed to recognize objects using the camera only in a preset pose. Therefore, only the preset pose need to be calibrated).

\[\begin{bmatrix}x_{w}\\y_{w}\end{bmatrix} = \boldsymbol{k}^{\top} \begin{bmatrix}x_{c}\\y_{c}\end{bmatrix} + \boldsymbol{b}\]

Where $[x_{w}, y_{w}, 0]^{\top}$ is target’s position in world frame, and $[x_{c}, y_{c}]^{\top}$ is target’s position in camera image frame. In this project, coefficients $\boldsymbol{k}$ and $\boldsymbol{b}$ were computed by using least squares on multiple pairs of sampled target positions.

For more info

You may check the project report for more technical details.

Demo

Here is a video demo of this project.