Robotic arm
This robotic arm is modelled after the original open source uArm but was adapted to be printed on a 3D printer. The arm uses 28BYJ-48 stepper motors instead of servos, and adds a servo-driven gripper. Stepper motors were modified to run as bipolar motors for extra torque. The controller is an AVR ATmega328p and the motor drivers are L293D.
Other mechanical modifications to the original design include adaptation to using #6 screws instead of metric screws, and hinges made from hardware-store 1/4" nylon spacers of various lengths.
A Pick-n-Stack application
Implemented with a Python OpenCV program that identifies red/blue/green blocks on a white page, determines their orientation angle and x,y position coordinate, and their color. This information is used to move the robotic arm controller to pick the blocks, and stack them in sorted piles. Code can be downloaded from this GitHub location https://github.com/eyalabraham/robotic-arm
Other resources used to create this project include:
- OpenCV Thresholding: https://docs.opencv.org/3.2.0/d7/d4d/tutorial_py_thresholding.html
- OpenCV Contour detection: http://answers.opencv.org/question/179004/how-to-detect-object-and-pattern-and-retrieve-the-angle-of-orientation/
- Erode and Dilate video processing: https://www.learnopencv.com/blob-detection-using-opencv-python-c/
- Object color detection: https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/
This video shows the robotic arm in action, stacking colorful blocks:
Some references
Resources used in the design and build of the arm and the controller code:
- GrabCAD model of parts modified from the classic uArm https://grabcad.com/library/robotic-arm-modelled-after-open-source-uarm-1
- AVR ATmega328P controller code https://github.com/eyalabraham/robotic-arm
- Schematics of AVR and driver board https://github.com/eyalabraham/schematics/tree/master/robot-arm These are also attached here as PDFs.
- Inverse Kinematics for a 2-Joint Robot Arm Using Geometry https://robotacademy.net.au/lesson/inverse-kinematics-for-a-2-joint-robot-arm-using-geometry/. The notepad sketches for the geometry calculations is attached below, and coded as a class module
ormik.py
.
Object Pick-and-Place test
Sample video testing the gripper mechanism
Inverse Kinematics using geometric calculations based on an example video from https://robotacademy.net.au/lesson/inverse-kinematics-for-a-2-joint-robot-arm-using-geometry starting around 4m:23s into the video.
Driver circuit board
Driver circuit is built around an AVR ATmega328P controller with firmware with interactive or remote command modes, which allows control with commands on a serial console or commands sent from a script (Python in my case). The stepper motor drivers are a set of L293D that drive the hacked 28BYJ-48 steppers in a Bipolar mode. Motor spec sheet here, Bipolar hack info here.
Schematics capture files on my GitHub space and attached as PDFs here.