Leonardo - sketching robot

A robotic arm designed to draw/sketch images.

Similar projects worth following
This robotic arm is designed to draw/sketch images. It uses MATLAB to process the image, calculate motor angles using inverse kinematics and communicate to dynamixel servos using serial communication.

Step 1: Image Pre-processing (Image grayscale conversion/scaling down): This step involves a conversion of RGB image to gray image as the sketch doesn’t require colors and color intensities.

Step 2: Edge detection (Canny Filter): This step implements edge detection. It is an image processing technique for finding the boundaries of objects within images. It works by detecting discontinuities in brightness.

Step 3: Morphological Operation on edge image from step 2: Morphological operations is a broad set of image processing operations that process images based on shapes. In this step, this image from step 2 is reduced to a pixel width 1. This creates different 1-pixel width paths in the image.

Step 4: Finding connected components in image: Groups pixels in the image into different objects which are not too far away from each other. This avoids the arm from jumping from one position to another.

Step 5: Finding a path to draw inside an object from step 4: This step is important as it enables the arm to draw. This involves a basic search algorithm. It scans the image until it finds a pixel that contains value 1. It then searches its neighboring pixels which contain value 1, and continues to do so until it scans all pixels with value 1. As it is scanning the image it executes step 6 & 7 and deletes scanned pixels to avoid rescan.

Step 6: Generating motor angles using inverse kinematics: This step involves generating motor angles from scaled pixel positions from step 5 from the image. Each pixel contains its row and column position which is mapped to the robot workspace. Geometric and algebraic equations are used to generate motor angles.

Step 7: Actuating the servos using Serial communication: Motor angles generated from step 6 are packed and sent from the PC to the motors from the USB port. The motors receive the data and reach the specified motor position.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates