Assignment:
Individual
- Design and produce something with a digital fabrication process (incorporating computer-aided design and manufacturing) not covered in another assignment, documenting the requirements that your assignment meets, and including everything necessary to reproduce it.
Software :
-Arduino IDE
-Processing
Materials :
-Arduino Braccio robot arm
-Arduino USO
-Stepper shield
-HC-05 Bluetooth module
Accomplised
-Understood the working of stepper motors
-Understood the working of a 6 Axis robot arm
-Learned how to calibrate and control the arm
-Controlled the working of the arm with different methods
-Programmed the arm to respond to wireless and wired commands
Group Work
Objective:
My aim for this week is to explore a little into the world of robotics as I am completely new to it. I have taken up robotic arm as my subject and this is what I intend to do:
-Study the working of the arm
-Control the arm by different methods.
Robot Arm:
A robotic arm is a type of mechanical arm, usually programmable, with similar functions to a human arm; the arm may be the sum total of the mechanism or may be part of a more complex robot. The links of such a manipulator are connected by joints allowing either rotational motion (such as in an articulated robot) or translational (linear) displacement. The links of the manipulator can be considered to form a kinematic chain. The terminus of the kinematic chain of the manipulator is called the end effector and it is analogous to the human hand.
The robot arm can be classified into how many directions it can move. That called Degrees of freedom
Degrees of Freedom (DOF)
The degrees of freedom, or DOF, is a very important term to understand. Each degree of freedom is a joint on the arm, a place where it can bend or rotate or translate. You can typically identify the number of degrees of freedom by the number of actuators on the robot arm.
Servo Motor
The servo motor is usually a simple DC motor controlled for specific angular rotation with the help of additional servomechanism (a typical closed-loop feedback control system). Now day’s servo system has large industrial applications.
The main reason behind using a servo is that it provides angular precision, i.e. it will only rotate as much we want and then stop and wait for next signal to take further action. The servo motor is unlike a standard electric motor which starts turning as when we apply power to it, and the rotation continues until we switch off the power.
What's inside the servo?
To fully understand how the servo works, you need to take a look under the hood. Inside there is a pretty simple set-up: a small DC motor, potentiometer, and a control circuit. The motor is attached by gears to the control wheel. As the motor rotates, the potentiometer's resistance changes, so the control circuit can precisely regulate how much movement there is and in which direction.
When the shaft of the motor is at the desired position, the power supplied to the motor is stopped. If not, the motor is turned in the appropriate direction. The desired position is sent via electrical pulses through the signal wire. The motor's speed is proportional to the difference between its actual position and desired position. So if the motor is near the desired position, it will turn slowly, otherwise, it will turn fast. This is called proportional control. This means the motor will only run as hard as necessary to accomplish the task at hand, a very efficient little guy.
Arduino Braccio
Braccio is 6 axes robotic arm from Arduino itself. The package comes with all the plastic parts, motors, screws, and shield for Arduino UNO which has to be assembled. It also comes with a quick startup guide, and the following link is the pdf of the same.
Calibrating the machine
When the arm is being assembled the servo motors are being placed in random positions. Its hard to know what the normal (i.e 0* position )of the motor. Hence once the arm with all its components is assembled calibrating it, should be the first task. There are several softwares to do so, but since I am using Arduino Braccio the start up guide comes with instructions and a code to calibrate it.
The main objective of this week is to control the arm in multiple ways. I chose to control with MPU6050 which has an accelerometer and Gyroscope
Accelerometer and Gyroscope
MPU 6050 is an IMU sensor. Inertial Measurement Units (IMUs) is a self-contained system that measures linear and angular motion usually with a triad of gyroscopes and triad of accelerometers. An IMU can either be gimballed or strapdown, outputting the integrating quantities of angular velocity and acceleration in the sensor/body frame. They are commonly referred to in the literature as the rate-integrating gyroscopes and accelerometers.
IMU sensors usually consist of two or more parts. Listing them by priority, they are the accelerometer, gyroscope, magnetometer, and altimeter. The MPU 6050 is a 6 DOF (degrees of freedom) or a six-axis IMU sensor, which means that it gives six values as output: three values from the accelerometer and three from the gyroscope. The MPU 6050 is a sensor based on MEMS (micro electro mechanical systems) technology. Both the accelerometer and the gyroscope are embedded inside a single chip. This chip uses I2C (inter-integrated circuit) protocol for communication.
How Does an Accelerometer Work?
An accelerometer works on the principle of the piezoelectric effect. Imagine a cuboidal box with a small ball inside it, like in the picture above. The walls of this box are made with piezoelectric crystals. Whenever you tilt the box, the ball is forced to move in the direction of the inclination due to gravity. The wall that the ball collides with creates tiny piezoelectric currents. There are three pairs of opposite walls in a cuboid. Each pair corresponds to an axis in 3D space: X, Y, and Z axes. Depending on the current produced from the piezoelectric walls, we can determine the direction of inclination and its magnitude.
How Does a Gyroscope Work?
Testing the MPU6050 with Processing
This test is to check the movement of the sensor in MPU6050. To watch the graphical interface of the movement we have to use Processing. Processing can be downloaded from here.
There certain libraries for Arduino and Processing that needs to be downloaded before we begin.
For Arduino:
Programming
First, we have to use Arduino to program the MPU6050 and then processing to look at the GUI. Once the MPU6050 libraries are loaded there will be an example program called MPU6050_DMP6. It can be found in:
--> Examples. Next, open the example program from File --> Examples --> MPU6050 --> Examples --> MPU6050_DMP6.
Programming the Braccio
Now as I said earlier Braccio comes with certain libraries and coding for the same is very different.
The code was not easy to frame. Had several trial and error methods to do it, but finally was able to do it. It wouldn't have been possible without the help of a friend in the lab Kishan Chavda.
The video of testing can be found below at the end of page.
Using Mobile Application
The next method I wanted to try was to use a mobile application to control the servo motors.
Flex Sensor
I was able to control the arm using the gyro sensor but was not able to control the gripper. So as suggested by my regional instructor Ohad, I decided to make a flex sensor to control the gripper.
I searched online on how to make a flex sensor and there are numerous references on youtube and Instructables, to begin with.
Conclusion
Robotics is something that completely new to me. Since my instructor, Rudrapal was kind enough to lend me his robot arm I was able to experiment with it. There are so many factors that affect the arm and the primary element that needs to be masters of the arm is the stepper motor. So, in fact, to learn to control the arm one needs to understand the entire working of the arm. Learning about the arm was quite nice but programming it to do task wasn't very easy as I am new to programming. On the whole, the week filled with the learning process.