Robotic arms are a critical piece of today’s robotic system development efforts. In this article, Alexandru explains the physics of robot arms and then shares the details of his project building a robotic arm based on linear actuators.
In a rapidly evolving world of technology, robotic arms represent the “stepping stone” to industrial robotics and automation. Usually programmable, they are machines with similar functions to a human arm. They consist of a sum of mechanical components, connected by joints allowing either rotational motion or linear displacement. All these parts make up a complex robot, able to operate in several directions and axes—with special flexibility and mobility. Quickness, efficiency and extreme accuracy are the essential keys in such a robot. In this article, I share the details of my project to build a robotic arm model. The final system is shown Figure 1.
Because of their similarities to human arms, these robotic systems can also be used for actual arm replacement in the form of bionic arms. A bionic arm works by picking up signals from a user’s muscles. Special sensors detect tiny, naturally generated electric signals, and convert these into intuitive and proportional bionic hand movements. These are life-changing in the medical field, as well as for all the people who need a replacement for various reasons. And this field has only just begun to develop and is evolving continuously and rapidly.
In general, robotic arms facilitate the physical work of people, able to work more efficiently and at higher degrees of precision. They can differ in form depending on the types and applications for which they are used. They can be found in the automotive, chemical, nuclear power plants, medicine—any field where precision and brute force are required. Perhaps the most common areas where robotic arms are used are in the packaging industries and food industries. A large number of foods are produced every minute making use of the automation brought by these robots. Robotic arms are even used in space, doing tasks that otherwise could not be done in the fields of astronomy and planetary exploration. Wikipedia describes this example:
The Curiosity rover on the planet Mars uses a robotic arm. TAGSAM is a robotic arm for collecting a sample from a small asteroid in space on the spacecraft OSIRIS-REx. The Canadarm and its successor Canadarm2 are examples of multi-degree of freedom robotic arms. These robotic arms have been used to perform a variety of tasks such as inspection of the Space Shuttle. The 2018 Mars lander InSight has a robotic arm called the IDA, it has a camera, grappler, which is used to move special instruments—Wikipedia.
Robotic arms are a type of machinery designed to grab, hold, move or place objects in a radius of action with different degrees of liberty. The physics behind them can be broken down into a set of levers, as shown in Figure 2. All robotic arms are in essence comprised of three classes of three levers that involve two forces and one solid bar mounted on a pivoting point. Furthermore, the force will be noted as F (red arrow = effort), as the action of the motor and the resistance FR (green arrow = load), as the dead weight at the top of the arm. In the case of a third-class lever, both forces are on the same side from the pivot, being oriented opposite from each other. The force F has a shorter arm than the force FR because its point of application is closer to the fulcrum. Based on the formula of effort, we have these two relations:
This generates three possible cases:
1. Equilibrium (the system is not moving):
2. Downward (the load drags the system down):
3. Upward (the force is strong enough to lift the load):
Having the inequality xF < xR, the result of the ratio between the arms is over the unit:
This is why F must be greater than FR in order to raise the boom.
Getting back to the engineering of robotic arms, most of them have stepper motors implemented directly in the joint—or, for simplified models, in the fulcrum. Those stepper-motor models have an extremely short arm, only the radius of the axle. This causes a considerable disadvantage because the loading force will always have the point of application at the top of the boom and the only solution is to equip it with powerful motors. In this project, our model is inspired by heavy-duty machineries, such as excavators. Such equipment is capable of digging out 1.5 tons on average, being powered by high-pressure hydraulics.
In Figure 3, it can be seen that the mass of the claw has the point of appliance at the end of the boom. The fulcrum is in Joint E while effort is applied in Joint F. Next the boom-claw subassembly represents the load force applied in Joint E at the end of the arm. This second third-class lever has the fulcrum in joint B and the force applied in Joint C. The whole point of using levers is to take advantage of the arms’ rapport. The distance B-E is twice that of B-C, which means effort is halved. In the case of the boom, distance E-F represents nearly three fifths of E-G. Doing so we are able to fit smaller motors with less electricity consumption and still get the same output of force.
Because we are not using stepper motors, we had to create our own linear actuators in order to mimic the cylinders used in excavators. An actuator turns circular motion into linear one, with no reversibility. The motor turns a threaded rod through a nut. These must be fixed on two hinged parts to allow the variation of length by adjusting the angles of the formed triangle. This is why all joints must be flexible, to avoid mechanical stress, which leads to structure failure and cracked components.
Having two levers on top of each other increases the complexity of the build. With changing angles on the points where effort and load are applied, these forces generate two components. As an axis system, we chose Ox along each section of the robot and Oy perpendicular to the surface. Decomposing the forces on the axes always results in one force orientated along the lever, the other perpendicular, reducing the performance. The second one shows how much force is actually used in raising the boom/arm.
The same happens to the loading force FR, which has the greatest value with the boom fully extended and the arm lowered at minimum. To be able to lift, the motor controlling this motion is placed in such a way that from this position of extreme, it hits perpendicular on the arm, converting all the output force directly into lift. Note that once the motor stops, the system locks because it is impossible for the load force to turn the threaded rod through the nut. This saves energy and avoids overheating.
The last component is the claw (Figure 4). Similar to the other two actuators, the difference is that the motor is fixed and the nut can move only along the thread. Nut support, arms and forearms are connected with articulated joints too, resulting in a parallel movement that widens the gap between the arms’ tips if the nut unscrews and vice versa. It is designed to hold anything from 1mm to 60m. It can easily grab a tennis ball, a bottle of water or a pen.
MODEL AND DESIGN
The main idea from which this whole design was inspired is represented by rectilinear movement of robot arms using threaded rods. With that in mind, any part that has a screw and that is inserted on the thread of this metal rod will be able to move linearly along it if it is rotated. An example where you can see this type of mechanism implemented is the Z-axis of a 3D printer.
The advantage of threaded rods is that they offer better efficiency than stepper motors. Although both form a third-class lever, in the case of rods, the force’s arm is longer. It means that the motor attached to the rod is smaller, with lower energy consumption. When power is turned off, the entire assembly locks in position. While the nut is fixed in the mobile bracket on the arm and can’t turn, the arm can’t move in rapport with the forearm.
Meanwhile, on the disadvantage side, threaded rods require a complex mechanism. During the execution of commands, all angles formed by motor, forearm, arm and rod are slightly modified. To avoid stress in the components, all of them must be fixed in pivoting joints. It requires fine measurements for alignment, not to mention enough space for the rod to extend. They also lack the speed of mobility and only offer linear movement.
The model in this project is based on two moving parts that are operated linearly with the help of the rods mentioned earlier. At the end of these components, a claw gripper is attached, which is also operated in the same way. Robotic arms are simple models that are composed of several axes, where there is only one form of movement: rectilinear. Therefore, these rods are efficient and a possible alternative for these types of designs.
ARM IN MOTION
In Figure 5 you can see the configuration of the CAD model I made and how the arm works. It can move on two axes—front and rear as well as up and down (X- and Z-axis). The two threaded rods are rotated by a motor attached to a bracket on the base on which is the model’s first arm connector is located. The threaded rod is connected by the two nuts, the first being attached to the component that connects the motor to the rod, the second fixed by a piece fixed in the robotic arm. The rod has the ability to rotate around its axis, resulting in a linear motion.
As for the robotic claw, it is connected by the second arm with a LEGO piece shown in Figure 6 so that this whole assembly can move around the arm. For the component itself, it has a motor with a threaded rod on which is fastened an element implemented with a nut. It has a rectilinear movement and opens and closes the arms of the mechanism.
This design has progressed gradually from a single-arm model to the current model, focusing on finding the perfect location of the threaded rod for maximum efficiency. Once the right positions were found and all the physical calculations were done, the design of the model itself was not complicated. The most important thing was the functionality and mobility between all the components that make up this robot.
During the design of the 3D model, a rotary potentiometer was added to each joint between the components (between the base and the first arm, the first arm and the second arm, and the second arm and the claw). Their role is to render the value of the angle formed by the components, to be able to implement a program that makes the claw gripper parallel to the ground. In addition to this, a type of stopper was implemented, to limit the angle where the robot acts. Therefore, the potentiometers have an extra role: When the motor runs and the arm does not move—being blocked by the stopper—the potentiometer will detect it and stop it. A button was also added when opening the claw gripper so that the engine does not rotate when the device arms reach the maximum angle.
After the robot design was completed, each component of the robot was saved in an STL file and exported in 3D printing software (in this case Ultimaker Cura). After they were loaded into the software, they were analyzed to discover possible errors that could lead to incorrect printing of the parts—filled holes, poorly generated structures and so on. They were printed with different fillings with a triangle shape, depending on their size (if the piece was small, then 100% infill was used), with a layer height of 0.2mm and with PLA (polylactic acid) plastic as the material.
Using a 3D printer would be recommended because of the number of elements—otherwise construction might be really expensive. In total, there are 27 elements and it required 43 hours to print them, with the cost of around €6 ($7 US)—where 1kg of filament roll costs €30 ($35 US).
After all the components were printed, they were polished, especially in the spots where pieces connect and flexibility and easy mobility must be ensured. There were holes where the 4mm diameter screws did not fit easily, so those were checked and widened. Figure 5 shows how the robot should be assembled. There may be difficulties with the joints between the arms and the insertion of threaded rods into the nuts of the components of the two arms and the motor. Otherwise, the robot model is quite rigid, yet easy to assemble and use.
HARDWARE AND SOFTWARE
As for the hardware components, I used an Arduino microcontroller (MCU) board—the Arduino Nano to be specific. But any MCU will do if 3 analog pins, 4 PWM pins, 6 I/O pins and 2 serial communication pins can be connected to it. To the Arduino Nano, I connected two motor drivers (these allow the control of 4 motors), 3 analog linear potentiometers (discussed earlier) and a Bluetooth module. Optionally, a button can be added to have more control over the opening of the robotic claw gripper, but that isn’t included in the schematic. For motors, I used four GA12-N20 100RPM Micro Metal Gear Motor brand motors. They are powered by an 11.1V Li-Po battery. A design of the circuit schematic is shown in Figure 7, which corresponds with the code for this article available on Circuit Cellar’s article code and files webpage. Table 1 lists all the electronic components used in this project.
To make the connection between all electronic components, they are wired together on a breadboard, situated behind the robotic arm. It’s more complicated to connect the motor’s wires to the breadboard because they have to cross all the moving parts of the robot. It’s important for the mobility to be ensured and for the arm to be able to operate at all angles. In other words, the arm must rotate at the maximum angle without being bothered by the wires.
As for the control of the robot, it can be connected to any device that supports Bluetooth. The connection is a serial communication between the device and the Arduino. An Android app (Figure 8) is available and can be downloaded from Circuit Cellar’s article code and files webpage. The app provides a user interface to control the movement of the robot. It consists of two virtual joysticks with an X-Y axis, where each axis is dedicated to one motor that controls the direction and the speed. The app also provides the option to make the claw gripper parallel with the base (ground). When the user moves the joysticks, the app sends the instructions to the Arduino, which interprets them and sends the corresponding signal to the motor drivers.
TESTS AND OTHER OBSERVATIONS
Before implementing the robotic arm in its final form, a concept model (Figure 9) was created to ensure the calculations were correct. It consisted of only the lower motor, the support and the forearm. Based on the total length of a fully extended mechanism, this model should lift 1kg at the top, to reproduce the same load on the motor. It proved that even a small motor can succeed when it is used to form a linear actuator. At this point, we also found out that a current of 6V was not enough. The rod-nut assembly acted as a reduction, making it slower and impracticable. This forced us to equip the unit with 12V batteries for a decent speed in maneuvers.
Another testing session was done for the claw (Figure 10). Starting with the modelling, it was quite hard and complex, with nine pieces. During the first try, it suffered a complete failure, the claw’s body ruptured where the lid was bolted. After analyzing it, I concluded that the flaw was from printing. The 3D printer creates a piece by layers, one on top of each other. In my case, the layers for the body were perpendicular to the force generated, tearing the layers apart. A new piece with layers orientated along the force’s direction was capable of resisting the stress. Other struggles involved the arms and forearms for the claw, which went through five different models before the final one.
After all the adjusting was complete, I could determine the robotic arm’s limitations on movement and load. With a fully extended arm, it lifts about 500g from the ground. Retracted to the maximum, nearly 1kg. The time of execution for lifting the forearm is 7 seconds, extending the arm took 10 seconds and closing the claw took 4 seconds. The claw can grab anything from a piece of cupboard or marker up to a table tennis ball. For the claw’s inclination motor to work properly, the total mass of the claw and load shouldn’t exceed 600g.
Because of the use of the threaded rods, the design of this robotic arm features many advantages over other models that can be found on the market for amateurs. It is far from perfect and can be improved upon—both from the point of view of the algorithm and from the point of view of the construction itself. Using threaded rods as a way to move the robot’s arms is an interesting idea that can be greatly developed in various fields and projects. Although they lack speed, the fact that the entire weight of the robot is blocked by them so that the robotic arm does not fall is an advantage that can be exploited.
This model was originally intended to be implemented with object detection, but that idea was scrapped due to the long time it was going to take to be implemented. As a result, the support for the linear potentiometers has remained in the CAD file designs. These potentiometers have the role of rendering the value of the angle formed by the components, to be able to implement a program that makes the claw gripper parallel to the ground. In addition to this, they also have the role of stopping the engines if the moving parts do not move.
Arduino | www.arduino.cc
PUBLISHED IN CIRCUIT CELLAR MAGAZINE • DECEMBER 2021 #377 – Get a PDF of the issueSponsor this Article
Alexandru Dumitrache is a student at the Tudor Vianu National College of Computer Science in Bucharest, Romania. His passions are technology robotics, electronics and he is keen on developing projects (with Arduino and Raspberry Pi) that can change people’s lives for the better. His focus is on changing society by reducing pollution, new ideas for utility robots and the implementation of eco energy and intelligent systems. In the future, using his PCB and CAD design skills, as well as my programming knowledge in C/C++ and Python, he wants to add AI into projects that develop beneficial devices. Contact him at firstname.lastname@example.org