The ultimate goal is to make a robotic arm which can pick up a 3D printed object from the 3D printer print bed and place it in the assembly area.
To continuously 3D print multiple objects sequentially there was a need of an automated system which can clear the 3D printer print bed after each successful print and allow the next object in queue to be printed without any human assistance.
This will ensure that by the time I get back home from the office I will have multiple 3D printed objects ready for further assembly. However, taking in account the multiple challenges of this project I decide to move one step at a time. So, I decided to first make the robotic arm and do a precision and repeatability test only.
For removing the 3D printed object from the print bed it is important that the robotic arm not just hold and pick up the object in one direction but also rotate it a bit so that it can come off the heated bed without getting stuck. So, I designed a 6 degree of freedom (DOF) robotic arm with stepper motors and 3D printed actuators having timing belt gear box enclosed in an ergonomic package.
I started with researching multiple types of actuators such as Harmonic drive actuator, planetary gearbox actuator, timing belt gear box actuators, etc. I choose timing belt gearbox actuator firstly because it was prone to lesser wear and tear as compared to planetary gear box with plastic gears and secondly because it was easy to manipulate the timing belt gearbox actuator with hand so that I can teach the robotic arm by hand holding it to move to the desired point while it records the movements of each of the 6 actuators for repeating the same movement once the learning is completed. Since the harmonic drive was having zero backlash and it cannot be manipulated by external force so it was also ruled out.
Then I made all the 3D designs for each actuator using Autodesk Fusion 360 and 3D printed the designs using Anet ET4P Pro 3D printer. Moving on I assembled all the steppers and connected them to an Arduino Mega 2560 based stepper control board. Once I programmed the microcontroller I ran a few test scripts to observe the movement of the arm.
I gradually included variable acceleration and deceleration modules in the code for getting a smoother movement of the stepper motors. At last I ran a simple code which moves each DOF separately one by one such that the pickup tool of the arm crosses by a test object closely. On running the code in loop I can verify its repeatability and precision by observing if the test object collides with the pickup tool or not.
In the process of designing and developing the robotic arm I learned professional designing using Autodesk Fusion 360 which included making high precision gears and pulleys, ergonomic enclosures with appropriate mechanical strength, designing inbuilt features to keep the timing belt tightened, incorporating 3D printing tolerances in the design, etc.
From an electronics point of view I gained a lot of knowledge about stepper motor drivers including DRV8825, TB6600, etc. Also, it gave me immense experience to understand board design and made me capable of deriving efficient system designs for any future projects with such complexities.
While I was programming, I wanted to make the interface compatible with Industrial standards so ultimately I understood inverse kinematics and learned complex matrix calculations to integrate it in my code.
As a conclusion I was successful in carrying out the precision and repeatability test and hence completed the first step towards my ultimate goal of using the robotic arm to make an automated sequential 3D printing and assembly assistance system.