Robot Arm Part 1: Arm Build
The best way to reinforce new concepts is to use them in a project. Thus, to solidify my knowledge of working with robotic arms, I decided to get a DIY robot arm kit, and program it's movements using the skills I've learned from my last kinematics project.
I will break this into multiple parts, allowing me time to build and program the different components of the system. This first part will follow the process of building the arm. Subsequent sections will cover integrating in the rotatable platform, connecting the electronics, building the remote controller, developing simple code for the arm, and finally developing an advanced program for wirelessly controlling the arm with the controller.
Mar 4, 2018: If you are considering the SainSmart robot arm, I would highly suggest you look at the RobotGeek Snapper Arduino Robotic Arm, which is also a 5 DoF arm controlled by an Arduino for only $230. What makes this arm unique is the support Trossen Robotics provides, including high quality assembly instructions, videos, and multiple programming guides. If I were to do this again, I would choose the RoboGeek arm!
SainSmart provides multiple robot arm kits with differing levels of complexity. They have a 3, 4, 5, and 6 axis robot arm kits, however, most of those only include the arm hardware and servos, not any electronics.
It is important to know that SainSmart misstates the actual number of axis many of the arms have. For example, the am style I purchased claims to be a 6-axis arm, however, it is actually a 5-axis arm since it doesn't have a spherical wrist. SainSmart does offer this true 6 DoF robot arm that has three servos for position control and three servos for the spherical wrist. Do note that the arm does not include a gripper nor any electronics, so you'd have to source a gripper, a servo to power it, and the electronics to control everything. This arm is also more than twice the price of the arm style I bought, so you are paying a premium for a true 6 DoF robot arm.
I ordered this 6 servo robotic arm kit, which is the only kit that includes the arm and electronics. The box contains the basic 6 servo robot arm (including gripper), an Arduino Mega 2560, and a Arduino Uno based remote controller. I wanted a complete package for my first arm, thus I choose this kit over buying individual parts.
I also ordered this rotatable platform, so that the arm and electronics could be based on a stable platform. I found this highly beneficial because the default metal base is tiny, often not providing enough stability for the arm when it is moving around.
The Arduino servo shield must be supplied with 12 volt DC power, which powers the servos. To handle this, I purchased this 12V at 0-2A AC to DC power plug. I had to cut off the end connector and strip the wires in order to secure them to the power connector on the shield. Alternatively, a variable DC power supply like this Tekpower 0-30V at 0-5A power supply would handle the job easily. I have not tested the exact power draw of the servos, but I think they use around 200mA in operation, thus a 2A power supply should be sufficient for the 6 servos and electronics.
These servo extension cables also came in handy, since the gripper servo cables don't reach the Arduino at the arm base.
Based on the Amazon reviews of this kit, I knew that the manufacturer did not provide much guidance on how to assemble or program the system. Many people are surprised by this lack of support, but I welcomed the uphill struggle. Instead of viewing the kit as a ready to run system, I considered it a rudimentary kit of pieces that should work together to eventually build a robotic arm.
SainSmart does provide a brief YouTube video (with no audio...) of how the arm should be assembled, but it leaves a lot to be desired. I'd say it gets you 90% there, but it omits certain key aspects that make the process smoother. Some experimentation is still required when assembling the pieces.
Robot Arm Pieces
Here are all of the pieces that came with the robot arm:
I liked this arm kit because it contained decently strong meta gear servos, including four MG 996R servos (11 kg-cm at 6v) and two DS3218 servos (~15 kg-cm at 6v).
Surprisingly, the kit contains exactly all of the parts required. Well done SainSmart!
Before starting the build process, I think it is critical to test the servos and notate their neutral locations.
I used a cheap servo tester to easily test each servo. To power the tester, I plugged in the positive and negative connectors into the Arduino's 5 volt and ground sockets. To power the Arduino, I plugged it into my computer via USB.
I'd recommend using jumper wires to connect the servo tester to the Arduino. At the time I didn't have any, thus I had to cannibalize one of the servo extension cables I bought.
Robot Arm Build
The following pictures follows the build process for the robot arm.
First the robot base needs to be assembled.
This will allow the arm to rotate, acting as the arm's waist.
With the base complete, the arm can be started.
For these bearings, I placed the large flange between the static and rotatable brackets. This will allow for some space between the two moving pieces of frame.
The two lower arm servos use the stronger DS3218 servos. These servos have the extra torque required to handle the weight of the gripper mechanism.
Now to build the wrist mechanism. As I noted above, this arm does not have a full spherical wrist since it omits the third elevation joint. The wrist joints use the weaker MG 996R servos. For the wrist rotation joint this is fine, however, I've noticed that the wrist elevation servo strains to maintain some angles when it's outstretched.
Installing the bracket where the wrist rotation servo goes is tricky because you cannot access the screw heads. Thus you will only be able to secure the bracket by hand tightening the nuts. Time will tell if this is enough to hold the nuts in place. The servo will prevent the nuts from completely backing off, but that would create wobble in the bracket.
The majority of the arm is built. Now the focus is on building the gripper mechanism. Nearly all of the gripper's screws are loose, but since they use locking nuts, this shouldn't be a problem. They do this so that the gripper pieces can move freely around. Otherwise, each joint would require a bearing which would be expensive. This causes some wobble in the gripper fingers, but nothing too severe.
Slide in the servo horn between the gripper's base and left finger.
The finished standard arm looks like this:
The metal base is sufficient for basic arm movements, but it is not completely stable without some type of clamping mechanism. This is why the optional SainSmart rotatable platform is a good addition!
Check out part 2 where I integrate this arm with the rotatable base, making a truly show worthy piece.