RM1 - An Affordable Industrial Robotic Arm

A serious 6-axis robotic arm that performs on-par with commercial robotic arms, but costs less than $1000 to build.

Public Chat
Similar projects worth following
With the increased affordability of many mechatronics components in recent years, a new hope emerges for robotics enthusiasts: the possibility of an affordable 6-axis robotic arm that performs on-par with commercial arms. The RM1 aims to realize this possibility - a high performance robotic arm made from widely available components, that costs less than $1000 to build.

Although it might seem challenging, with some research and creativity, we can find affordable ways to reproduce the key design features of commercial robotic arms:
• Low backlash gearboxes
• High rigidity frame
• Brushless servo motors
• Closed-loop control
• Sound mechanical design

The mechanical design is open source, and authored in Autodesk Fusion 360. Fusion 360 is 100% free and unrestricted for hobbyists.

The electrical design is also open source, and authored in Autodesk Eagle, which is also free for hobbyists.

As mentioned above, the RM1 takes design features from commercial robotic arms, and realizes them in a more affordable way. Here's a quick rundown on how these features are addressed:

  • Low backlash gearboxes: If you know about robotic arms, you know that backlash is the precision killer. Commercial robot arms use (expensive) zero backlash harmonic gearboxes. Although there is no direct low cost replacement for these gearboxes, we can use a series of belts and pulleys as a gearbox to achieve relatively low backlash at very low cost.
  • High frame rigidity: Rigidity is not only important for the arm's positional accuracy, it also prevents the arm from flexing under high acceleration and load. Almost all commercial robot arms use cast steel or alloy frames, providing very high rigidity. We can achieve high rigidity affordably by using a design made from interlocking carbon fiber sheets.
  • Brushless servo motors: Commercial robot arms use expensive brushless AC servo motors, with optical encoders or resolvers for position feedback. We can achieve similar results with an affordable brushless DC hobby motor, a low-cost capacitive encoder, and the open source ODrive driver board (by ODrive Robotics), which makes our cheap hobby motor perform almost like an expensive industrial servo motor. Unlike stepper motors, brushless servo motors are capable of high torque and positional accuracy, quiet operation, and have a lesser tendency to overheat under high load.
  • Closed-loop control: Since industrial robot arms move at high speed and with high torque, positional feedback is important to prevent the arm from crashing. Instead of using stepper motors with no position feedback, which are prone to skipping steps and losing track of their position, we use encoders to "close the loop", so the arm can move accurately and repeatably.
  • Sound mechanical design: The final piece of the puzzle is a good mechanical design, which is strong and light, but still easy to assemble and service. Luckily, the broad strokes design is already complete, so now it's only a matter of filling in the details in CAD.

  • 4 × Turnigy Aerodrive SK3 - 4250-350kv Brushless DC hobby motor
  • 2 × PROPDRIVE v2 5060 270KV Brushless DC hobby motor
  • 2 × CUI AMT102 Capacitive incremental encoder (2048 PPR)
  • 4 × CUI AMT-112 Capacitive incremental encoder (4096 PPR)
  • 3 × ODrive open source servo driver board

  • J3/J4 Differential Mechanism Design

    David Shelenev05/20/2018 at 11:56 1 comment

    Hi guys,

    As shown in the project images - sorry they haven't been updated for a while - motion for joint 4 (J4) is transmitted through joint 3 (J3) in a differential pulley/belt mechanism.

    This mechanism is part of the secret sauce of the robotic arm's design; without it, there is no elegant way of driving J4 without having a whopping great set of pulleys hanging out the side of the link.

    Here is a diagram of the mechanism. I've omitted the structure and bearings for simplicity:

    The mechanism works as follows:

    1. Two motors (input 1 and input 2) each drive one of the two J3 outer pulleys, which are on separate collinear shafts.
    2. The J3 outer pulleys transmit the power to their corresponding J3 inner pulley
    3. The J3 inner pulleys are coupled to the J4 pulleys with a single belt. (the belt has four quarter twists to change direction between the J3 and J4 pulleys)
    4. The J4 pulleys share the same shaft, but only one of the pulleys is coupled to the shaft. The other pulley is an idler.
    5. When the two motors are running at equal speed in the same direction, the J4 pulleys cannot turn, and so force J3 to turn
    6. When the two motors are running at equal speed in opposite directions, the J4 pulleys turn (in opposite directions), driving J4. J3 remains stationary.
    7. If we add some proportion of opposing and similar input motions, we can achieve any desired simultaneous motion on J3 and J4

    While the idea behind the mechanism may seem relatively simple, the design is not.

    The original design used two collinear shafts end-to-end, but since these shafts cannot resist a bending moment, the whole mechanism would have the tendency to flex, which is a major issue. Considering the construction of the arm, which should be quite rigid, it may not be a huge problem, but it would certainly reduce the rigidity and repeatability of the arm's motion.

    In summary, the main difficulties are:

    • Effectively constraining the J3 shafts to ensure rigidity - if the two shafts are allowed to flex even a little, the design will not work
    • Designing links (out of 3mm CF sheet) that are adequately rigid and lightweight
    • Having space to put encoders (CUI AMT102 or similar)
    • Coming up with a design that is able to be assembled without magical tools

    I have spent the past three weeks thinking almost exclusively about this complication.

    The conclusion that I've come to is that we need to use "shaft-inside-a-shaft" (aka nested shaft) construction, as below: (apologies for the bad drawing)

    (All interfaces between pulleys, shafts and bearing races are bonded with Loctite 638)

    This solution will definitely do the job, but it require four additional bearings, as well as the two hollow shafts for either side of J3. Also, it requires a lot more assembly effort.

    As I mentioned, I've been working on this complication for 3 weeks now, and I'm all out of ideas.

    If anyone can think of a simpler solution to this problem, please post and let me know.

  • Design refinements - shaft hardware

    David Shelenev04/29/2018 at 06:32 0 comments

    Over the past few days I've been mulling over ways to reduce the cost, complexity and width of the joints. Pictures of my current design show joint 3 - you can see in the pictures that the joint is quite wide due to the kind of hardware I'm using for holding bearings in place (clamping hubs):

    The clamping hubs are tightened around the OD of the 608ZZ bearings, which are bonded to the shaft. This is not the intended usage for these hubs (they are designed for clamping onto a length of tube). Additionally, they are overpriced and not widely stocked.

    I have decided to replace these clamping hubs with low-cost F688ZZ flanged bearings that will be bonded to the shaft, and press-fit into the CF frame:

    These bearings are somewhat narrower than the 608ZZ bearings, and will sit within the walls of the frame. For walls with a 4mm thickness, these bearings will only add 1.1mm width once fitted (compared to the additional ∼10mm width of the clamping hubs).

    The top and bottom plates of the frame will constrain the collars/bearings laterally so that there is no side-to-side slipping on the shaft.

    This design will make belt replacement a little bit more involved (i.e. the user would need to partially disassemble the frame to be able to replace a belt), but I think the benefits vastly outweigh this minor inconvenience.

    I will also be modifying the design so that the arrangement of each joint is a lot neater, and more similar to the design of commercial robotic arms.

    I will publish a new design reflecting these changes soon.

    Please feel free to comment about any design ideas you have... you might spot something I've missed, or have an idea that greatly improves the performance of the design.

View all 2 project logs

Enjoy this project?



Bianco wrote 05/23/2018 at 01:29 point

Is it possible to collaborate on the 3D CAD assembly by branching the project or are you (the creator) the only person that can make any changes? I see the GIThub link, but not one for CAD.

  Are you sure? yes | no

Florian Festi wrote 04/23/2018 at 15:22 point

The design shown in your pictures is not very stiff - even when using carbon fiber. Try to enclose the volume of the limbs as much as possible. Even using a rectangular tube would increase the torsional stiffness by one or two orders of magnitude. Consider laser cutting several (may be scaled down) models from thin plywood to be able to compare their stiffness.

  Are you sure? yes | no

David Shelenev wrote 04/23/2018 at 23:23 point

Hi Florian, thanks for your feedback! The plywood prototyping idea is one I will definitely use.

The design shown in the photos is my partially complete CAD (only a couple days progress). So far, I've only drawn in the sideplates. There will also be internal lateral plates, and top and bottom plates that form the structure of all links (i.e. fully enclosed). The plates are secured from slipping against each other using a tongue-and-groove system running the length of all mating edges. So long as the tongue-and-grooves are tight, I think the frame should be rigid.

Thanks again.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates