Wednesday, March 22, 2017
Robotic arm v0 1 composed of servos, an Arduino Uno and a Raspberry Pi
Each servo has a mass of 45g. With an arm length of 30cm and considering only the weight of the two servos on the right end of the lever we get a resulting torque of approximately 27Ncm which is equivalent to the maximum torque of the used servos. Thus, the servo at the first pivot point can't lift the robotic arm. When building the machine in such a way that all pivot axes are pointing to the earth's center, there is no gravitational force to overcome for the first three servos.
This construction principle is called "Selective Compliance Assembly Robot Arm". The weak servos can move all three joints with ease. Objects are grabbed with servo number five... ...and lifted with servo number four. The lever is just 5cm, by what the servo can lift objects with a mass of up to 500g - in theory. Because of friction the maximum force is just 3.6N... ...by what up to 250g can be lifted reliably.
The servos are controlled by an Arduino Uno. As demonstrated in my video about servos, those devices are commanded by a pulse-width signal with a base frequency of 50Hz. The pulse width is usually between 1 and 2ms and the software can alter the signal in microsecond steps. The pulse width at the center position is 1.5ms, thus 1500 microseconds. A 30cm aluminum bar is mounted on the servo horn and the center position is marked by the tip at the end of the lever. Now, the pulse width is raised stepwise until a movement of the lever can be detected.
Initially, there is no movement... ...until the servo turns jerky at 1504 microseconds, deflecting the lever for 1mm. When lowering the pulse width, the servo turns clockwise at 1499 microseconds. As you can see, the lever did not return exactly to the initial position. One source of inaccuracy is the rotational sensor of the servo: A single turn potentiometer is used to detect the angle of rotation through the voltage output at the wiper.
There is always some backlash between the pivot axis of the potentiometer and the servo horn. Another thing to be considered is noise at the input DC voltage of the potentiometer. The resolution can't be better than the random variation of the output voltage.
Thus the control loop of the servo can't balance tiny variations between setpoint and actual value. To avoid oscillations around the setpoint, only a fraction of the maximum power is forwarded by pulse width modulation to the motor whenever the error between actual value and setpoint is small.
With increasing error, the servo motor is powered with a higher duty cycle. The motor has to build up a certain torque to overcome friction caused by the gear train in order to turn the servo horn.
That's what also causes a jerky movement and so worsens the accuracy of the servo. With no mechanical load, we get a deflection of approximately 2mm at the end of the 30cm lever which correlates to an angle of almost degrees. There are three joints in the assembled robotic arm, thus the deflection is added up to 15mm.
There is another physical quantity that worsens the accuracy of a robotic arm: Inertia. There are noticeable oscillations, especially when turning the arm around the first pivot point. The slower the movement, the fewer oscillations. Friction absorbs oscillations.
To get more friction, the screws on top of the pivot axes have to be be tightened, but be sure the servos are still able to turn the joints easily. The arm moves smoother with higher friction. Caused by the long lever, even a tiny side load effects a clear deflection from the set point. As mentioned before, the servo motor is not fully powered whenever there is just a small error between set point and actual point. As you can see, the movement isn't very smooth. To compose a high quality robotic arm you need high torque motors, you have to almost eliminate backlash and you must have excellent rotational encoders.
Those three demands are hard to implement which is why quality robotic arms are very expensive tools. Nonetheless it is worth spending some time to build even this cheap robot: Only by knowing the weak points you can start to improve the design of future machines. Furthermore you can study the software used to control this cheap robotic arm. As mentioned before, an Arduino Uno generates the control pulses of the servos. The commands are sent from a Raspberry Pi through the USB interface. The control software is a mix of HTML, Javascript and Perl, which is why the Apache web server runs on the Raspberry Pi.
You can open the page in a browser and control the robotic arm with your mouse or a touchscreen. With the control buttons you can turn the joints of the robot. Each position can be stored if needed. Multiple stored corner points result in a motion sequence. That sequence can be replayed by processing all stored coordinates. With that tiny robotic arm, composed of 4 potentiometers and a switch, you can also control the large arm. With the analog-to-digital converters, the Arduino can read the angles of all potentiometers at the tiny robot.
The recorded values are converted into pulse width signals used to control the servos, by what the large robot follows the movement of the tiny arm. The analog-to-digital converters and the potentiometers are another source of error: Considering the backlash at the joints of the tiny arm and noise at the input voltage of the potentiometers, there is a noticeable discrepancy between set point and reading of the Arduino. Once more there is: Those simple constructions aren't precision tools, but they are useful to understand the working principles.
You don't need a screen on your Raspberry, because you can open the control page in any browser with a network connection to the pi. Thus you can control the robotic arm even through Internet. You can initiate stored motion sequences... ..by what the robotic arm is turned into a teleplotter. With all the weak points of the construction as explained in this video, you don't get straight lines or right angles, but you will notice the intention to draw a square. Don't use too small building bricks if your intention is to arrange objects. The wooden bricks I am using have the dimensions 22 times 8 times 50mm. To prevent oscillations, the robotic arm stops for one second at all stored corner points. Software is an essential part of a precise robotic arm.
Nonetheless it's the hardware that needs improvement, first and foremost. You can see the arm shake from time to time and the speed is anything else but breathtaking. Programming the robotic arm through the browser interface is time consuming. Setting up this motion sequence took a whole morning.
I have marked the initial positions of the wooden blocks with thin pencil lines to be able to arrange them correctly multiple times. Surprisingly the success rate was very high: Only twice in approximately ten runs the robotic arm failed to place a brick upright. Robotic arm version is just the beginning of a series of such machines, trying to improve the precision with each evolution step. I will show what can be achieved with cheap materials and finally illustrate why fast and precise robotic arms are so expensive tools - or vice versa why the cheap ones are very likely no qulity machines.
You can get the build instruction of robotic arm on the project page. The tools needed are just a metal saw and a drill machine. Materials are aluminum angles, a 4 and 10mm threaded bar as well as some 3 and 4mm nuts and bolts. Things you can get in a DIY store. Finding a piece of wood for the base plate should be an easy job. The electronic parts are 5 servos, an Arduino Uno and a Raspberry Pi.
An old computer power supply feeds the arm with electricity. That's all about robotic arms for now. Thanks for watching and: "I'll be back!".
CLICK VIDEO
Subscribe to:
Post Comments (Atom)
President Obama Shakes Revolutionary Robotic Hand Of Paralyzed Man
live from the kdka broadcast center in downtown pittsburgh. this is kdka tv news as 6:00. president obama has now left pittsburgh. air ...
-
Welcome to Top10Archive! While peace is ideal, conflict always seems inevitable. While not at war, most nations will continue their resea...
-
This week on Behind the Business, we’ll be taking a look at one of the most innovative companies to ever emerge from Japan. The inventor ...
-
10. Flamethrowers The flamethrower is thought to have been invented in 1901 by Richard Fielder as a petroleum weapon. It was first used i...
No comments:
Post a Comment