You are on page 1of 9

INTRODUCTION

Autonomous systems and robots play a crucial role in various functional operations
worldwide. Particularly in industrial settings, robotic arms address many limitations faced by
humans, especially with the assistance of distance control features. The extensive utilization
of robotic arms in research laboratories and industries automates processes and reduces
human errors. These arms excel in tasks such as assembly lines and force-controlled motions
with feedback to the controller. The widespread growth of robotic systems across industries is
attributed to their applications and their capability to minimize errors and material wastage.
A 6-Degree-of-Freedom (6-DOF) robotic arm refers to a robotic manipulator that can move
in six different directions, providing a high level of flexibility and adaptability.
In the context of a robotic arm, the six degrees of freedom typically include:
I. Base Rotation (Yaw): The ability of the arm to rotate horizontally at its base.
II. Shoulder Elevation (Pitch): The movement of the arm up and down at the shoulder.
III. Elbow Rotation (Roll): Rotation of the forearm around its axis.
IV. Wrist Pitch: The tilting motion of the wrist up and down.
V. Wrist Yaw: The side-to-side rotation of the wrist.
VI. Wrist Roll: The rotation of the wrist around its axis.

OBJECTIVES
The primary objectives of this project are outlined to address the design, development, and
implementation of a 6-Degree-of-Freedom (6-DOF) robotic arm using 3D printing
technology. Theseobjectives are strategically crafted to encapsulate various aspects of the
project, ranging from mechanical design to practical applications.
 To develop a comprehensive mechanical design for the robotic arm, considering
factors such as size, weight, and structural integrity.
 Utilize Computer-Aided Design (CAD) tools to create detailed models of each
component, ensuring precision and accuracy in the assembly.
 Select appropriate actuators, motors, and sensors for achieving precise control over
the robotic arm's movements.
 Implement a robust control system to regulate and coordinate the motion of each joint,
ensuring accuracy in both positioning and orientation.
 Demonstrate the versatility of the robotic arm by developing applications for pick-
and-place tasks, assembly processes, and manipulation of objects.
 Employ 3D printing technology for manufacturing various components of the robotic
arm, including the structural elements, joints, and end-effectors.
 Choose suitable 3D printing materials to ensure the strength, durability, and flexibility
required for the intended applications.
By addressing these objectives, the project aims to contribute to the advancement of robotic
technology, particularly in the context of 6-DOF robotic arms and showcase the potential of
3D printing in creating sophisticated, cost-effective robotic systems for various applications.

DESIGN METHODOLOGY
CAD MODEL:
Computer-Aided Design (CAD) plays a pivotal role in the mechanical design of the 6-
Degree-of- Freedom (6-DOF) robotic arm. The CAD modeling phase involves creating
detailed 3D representations of each component, providing a virtual environment for
visualization, analysis, and refinement. The design of the different components for the frame
are as shown below:

Fig 1: Assembly View of End Effector Fig 2: Exploded View Of End Effector

Fig 3: Assembly View Of Main Arm Body Fig 4: Exploded View Of Main Arm Body
Fig 5: Assembly View of Arm Turn Table Fig 6: Exploded View Of Arm Main Body

FABRICATION:
The following parts of the gripper assembly along with Servo Mounts for the base turn table
have been manufactured using Creality CR-30 3D Printer and PLA material.

Fig 7: Gripper Claw With 77 Teeths

Fig 8: Base Servo Mount And Gripper Mounting Accessories


TORQUE CALCULATION:
Let consider a weight 5KG that a servo motor wants to pick up.
Then, Force F = 5kg *9.80m/s2
 F= 49 N
Now,
 Torque τ = r x F, Where r = length from base
 τ = (1.0cm*cos (450)) *(49N)
 τ = (0.00708m) *(49N)
 τ = 0.3469 Nm
 τ =3.53 Kg-cm

ROBOTIC ARM CODE:


NUMBERS SERVO NAME ROBOTIC ARM ACTION
1 Base Joint Rotate Base Left or Right
2 Shoulder Joint Move Shoulder Joint Closer
or Further
3 Shoulder Joint Move Shoulder Joint Closer
or Further
4 Elbow Joint Rotate Elbow Joint Closer or
Further
5 Wrist Joint Rotate Robotic Arm Joint
Up or Down
6 Wrist Joint 2 (Rotate) Rotate Robotic Arm (CW or
CCW)
7 Gripper Joint Close Claw Grip Or Open
Claw Grip

CODE:
#include "HCPCA9685.h" /* Include the HCPCA9685 library */
#define I2CAdd 0x40 /* I2C slave address for the device/module. For the
HCMODU0097 the default I2C address is 0x40 */
HCPCA9685 HCPCA9685(I2CAdd); /* Create an instance of the library */
const int servo_joint_L_parking_pos = 60; //initial parking position of the motor
const int servo_joint_R_parking_pos = 60;
const int servo_joint_1_parking_pos = 70;
const int servo_joint_2_parking_pos = 47;
const int servo_joint_3_parking_pos = 63;
const int servo_joint_4_parking_pos = 63;

int servo_joint_L_pos_increment = 20; //Degree of robot servo sensitivity - Intervals


int servo_joint_R_pos_increment = 20;
int servo_joint_1_pos_increment = 20;
int servo_joint_2_pos_increment = 50;
int servo_joint_3_pos_increment = 60;
int servo_joint_4_pos_increment = 40;

//Keep track of the current value of the motor positions


int servo_joint_L_parking_pos_i = servo_joint_L_parking_pos;
int servo_joint_R_parking_pos_i = servo_joint_R_parking_pos;
int servo_joint_1_parking_pos_i = servo_joint_1_parking_pos;
int servo_joint_2_parking_pos_i = servo_joint_2_parking_pos;
int servo_joint_3_parking_pos_i = servo_joint_3_parking_pos;
int servo_joint_4_parking_pos_i = servo_joint_4_parking_pos;
//Minimum and maximum angle of servo motor
int servo_joint_L_min_pos = 10;
int servo_joint_L_max_pos = 180;
int servo_joint_R_min_pos = 10;
int servo_joint_R_max_pos = 180;
int servo_joint_1_min_pos = 10;
int servo_joint_1_max_pos = 400;
int servo_joint_2_min_pos = 10;
int servo_joint_2_max_pos = 380;
int servo_joint_3_min_pos = 10;
int servo_joint_3_max_pos = 380;
int servo_joint_4_min_pos = 10;
int servo_joint_4_max_pos = 120;

int servo_L_pos = 0;
int servo_R_pos = 0;
int servo_joint_1_pos = 0;
int servo_joint_2_pos = 0;
int servo_joint_3_pos = 0;
int servo_joint_4_pos = 0;

char state = 0; // Changes value from ASCII to char


int response_time = 5;
int response_time_4 = 2;
int loop_check = 0;
int response_time_fast = 20;
int action_delay = 600;

unsigned int Pos; //Posiion of motor


const int dirPin = 4; // Define pin connections & motor's steps per revolution
const int stepPin = 5;
const int stepsPerRevolution = 120;
int stepDelay = 4500;
const int stepsPerRevolutionSmall = 60;
int stepDelaySmall = 9500;

void setup()
{
// Declare pins as Outputs
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
HCPCA9685.Init(SERVO_MODE); /* Initialise the library and set it to 'servo mode' */
HCPCA9685.Sleep(false); /* Wake the device up */
Serial.begin(4800); // Initialise default communication rate of the Bluetooth module
delay(3000);
//wakeUp(); -- Uncomment for Example Demo 1
//flexMotors(); -- Uncomment for Example Demo 1
}

void loop()
{
if (Serial.available() > 0) { // Checks whether data is coming from the serial port
state = Serial.read(); // Reads the data from the serial port
Serial.print(state); // Prints out the value sent
//For the naming of the motors, refer to the article / tutorial
//Move (Base Rotation) Stepper Motor Left
if (state == 'S') {
baseRotateLeft();
delay(response_time);
}

//Move (Base Rotation) Stepper Motor Right


if (state == 'O') {
baseRotateRight();
delay(response_time);
}
//Move Shoulder Down
if (state == 'c')
{
shoulderServoForward();
delay(response_time);
}

//Move Shoulder Up
if (state == 'C')
{
shoulderServoBackward();
delay(response_time);
}

//Move Elbow Down


if (state == 'p')
{
elbowServoForward();
delay(response_time);
}

//Move Elbow Up
if (state == 'P')
{
elbowServoBackward();
delay(response_time);
}
//Move Wrist 1 UP
if (state == 'U')
{
wristServo1Backward();
delay(response_time);
}
//Move Move Wrist 1 Down
if (state == 'G')
{
wristServo1Forward();
delay(response_time);
}

CONCLUSION:
 The mechanical design successfully translated conceptual requirements into a
functional and robust structure. Through the integration of Computer-Aided Design
(CAD) tools, a detailed digital representation of the robotic arm was created,
encompassing joints, links, and the end-effector interface.
 The utilization of 3D printing technology was implemented using the Creality CR-30
Machine available in Department of Mechanical Engineering, IGIT SARANG. Major
components of the Gripper Assembly along with mounts for mounting the base joint
servo motors were also fabricated.

FUTURE SCOPE OF WORK:


The future scope of work includes the following:
 To complete the fabrication of remaining arm components.
 To assemble the components into a working robotic arm model using Arduino.
 To fabricate a Bluetooth hand-controlled gesture glove that could control the arm
without the need of a computer.

You might also like