Transcript for:
Building a Six-Axis Robot Arm

Hey, you’re a robot! You’re on a robot! Nowaday,  you can just build a six-axis robot yourself, for   less than what my first 3D printer cost.  Granted, that was a while ago and parts   were a lot more expensive back then, but still,  for a bit over 2000 bucks and two weekends spent   on assembly and tuning, this could be yours!  This is the AR4-MK3, with about 600mm of reach,   a good two kilograms of payload capacity,  a fully programmable software package and   plenty of interfaces to attach your own tools,  and hook up your own inputs and outputs. This is   meant to be an actually useful arm and the next  step up from the cheap RC servo-driven arms.  To build the AR4, we’re going to need  some 3D printed parts, and for that,   I used today’s sponsor, the Peopoly Magneto  X. Mine now wears the optional full enclosure,   which is fantastic for using the full  400x300x300mm build volume, even with   warp-happy, high-performance materials.  To achieve its crazy printing speeds,   the Magneto X skips belts and stepper motors  and goes right to closed-loop linear brushless   motors for X and Y and comes stock with the  Lancer extruder and a high-flow, wear-resistant   hotend for up to 70mm³ of filament added to your  print every second. The Magneto X runs standard,   customizable Klipper firmware and you can get it  at $400 off all throughout July at the link below. To make life easier for me, I bought the full  robot kit from Chris Annin, which includes the   electronics and the mechanical parts. You get  a Teensy to control it all, an adapter board   and a whole bunch of switches, connectors and  cables. The mechanical parts have the belts,   pulleys, fasteners and some surprisingly beefy  bearings, but I also ordered the aluminum parts   that make up the mechanical structure of the  machine. You can choose to 3D print almost all   of these parts from plastic, and while that will  reduce the overall cost and weight of the robot,   it will also make for a less rigid setup.  These parts are all basically billet machined,   and for that, I think, they are sold at a very  fair price. I mean, nice machined parts like this   are just an absolute joy to look at. You still  need to print some parts yourself, enclosures,   covers, those sort of things where machining them  makes no sense. Many of them are fairly large,   but you can also print these as split variants  if your printer is not quite big enough. Though   none of these are particularly optimized for  3D printing, so supports and at least somewhat   decent print profiles are a must, and then  they are absolutely printable unless your tree   supports all decide to come loose from the bed. I also bought the basic servo gripper kit,   obviously, for most real applications you’re  going to have a custom toolhead on the machine,   but I thought I should just get something  that is a starting point for learning how the   machine and the toolhead system works and that I  can use to demonstrate the machine straight away.  Lastly, and this is a part that you can’t buy  directly from Annin Robotics, the motors and   drivers. The AR4 uses good old stepper motors  instead of servos, which, compared to geared   brushless motors, makes for a simpler setup,  but also for somewhat larger motors to get the   same power and torque. These parts are available  directly as a kit from Stepperonline in China,   and they’re a bit of a specialized variant, as  they use standard planetary gearboxes, but are   supposedly tuned for extra low backlash. Backlash,  obviously, is something that will mess with any   motion system, but especially when you’re trying  to precisely position something, you want to get   it as low as possible. One thing I didn’t expect  was for all these motors to have encoders on them,   which, in this case, allow the electronics to  detect when a motor isn’t moving exactly as it was   instructed. The firmware doesn’t actively correct  for skipping motors, but at least it can catch it.  So that should be all the parts that I need! Let’s  get started with the build. Of course, there is a   build manual, I would be completely lost without  it, it’s 400 pages long though, thankfully,   a lot of that is because it’s super detailed, but  there’s also lots of time spent on explaining the   wiring and making sure you don’t switch anything  around there. The manual does recommend tinning   wires that go into screw terminals, which will  work for a year or two, but I’ve had tinned wires   go completely loose in these terminals, and that’s  obviously not a great thing for reliability. The   terminals on this machine are all ok for bare  stranded wire, so just be careful you don’t splay   them out and you’ll be fine without any tinning. We’re starting the build at the bottom, with the   base. For all the 3D printed parts, the holes  get drilled out to size, some of them get tapped,   because everything in here is functional. There  is zero design or decor on this machine anywhere.   Almost all of the hardware on here is metric,  which is great, the connectors are USB-C, love to   see it, the wiring is still american wire gauge,  but that’s fine. And for the 3D printed parts,   this isn’t a project that is using 3D printing  for 3D printing’s sake, it just happened to be   the right solution for the challenge at  hand, and that’s quite refreshing to see.  Building the AR4 means constantly jumping  between mechanical, electrical and sort of   light organizing work. After getting the drivers  mounted, you immediately get to assemble the main   turret bearings, which are enormous for the size  robot we’re building. These all slip into place a   good bit too easily, and could probably use some  Loctite to keep them from spinning in their seats   and on the shaft. I may need to take it apart  again, so I’m not locking anything in place yet.   Because of that, there is noticeable play in this  assembly, but I’m hoping that tightening up these   roller bearings later will take care of that. The parts that mount to the main spindle are   absolute chonkers, too, it seems like they  somewhat deviate from the manual, but with   these holes not being deep enough, I can just grab  some longer screws and attach them that way. Then,   everything gets attached to everything, there’s  grub screws that preload the bearing assembly, and   with that on, we can grab the first motor, add the  key and pulley, and finally install and tension   the first belt with two more grub screws. [...] [Next up is a bunch of wiring, which is not very   interesting to watch, so with the magic of  editing, I can go like this [snap] and that’s   all done.] That was some tight work, this newest  generation of AR4 packs the electronics straight   onto the robot instead of into a separate box, but  when you have to wire every connection up by hand,   maybe a little more space would be nice. The mechanical assembly certainly makes quite   liberal use of the components, for the joint  2 motor, you actually take the gearbox apart,   slide the mounting hardware onto the opposite side  of the mounting face, and then align everything   back up and reassemble it. Maybe a split clamp  would be nice here? I did manage to mount the   first arm backwards, but that’s an easy fix. With  the motor convinced into place, I did notice that   the gearbox I just reassembled was running  quite unsmooth, almost like it was misaligned,   so I took it all apart again, reseated both  stages of the gearbox, made sure the gears were   installed in the correct orientation, but after  all that, it still ran just as poorly as before,   maybe even a bit worse. But interestingly,  as soon as everything got tightened up,   it started to run smoothly, so that’s good. A lot of the building process is wiring. You   get to solder and extend wires, route and  splice and sleeve cables left and right,   everything is hardwired, which I disagree with,  and since the motors are already custom versions   made specifically for the AR4, it should be  possible to get them made with the correct wire   lengths instead of immediately having to cut off  the factory wiring and soldering on extensions.   I’m sure it’s better than having to solder plugs  and making connecting wires like in the earlier   versions of the AR arm, and maybe in a future  revision, we may start seeing them with longer   wires and maybe even plugs on them. Well, I think  at this point, you’ve seen the basic gist of the   mechanical assembly process, so I’m going to shut  up now, and let you enjoy the rest of the build. And we’re done! At this point, there is a sequence  of tasks that you get to do to get the robot arm   running. You check that the motors work, check  the encoders, make sure the endstops all work… And with that all fixed, you calibrate the endstop  offsets by measuring the actual angles it parks   at, and after that we can start programming  some routines. Now, I’ve only barely scratched   the surface of the software that Chris custom-made  for the AR robots, but it’s actually very capable.   The basic instructions are somewhat similar to  the gcode that you would run on a 3D printer,   but it can actually do a lot more. You can program  loops, incremental offsets if for example you want   to stack things, you can add if-then checks  with signals you attach to the spare inputs   on the Teensy, you can add more servos or  digital outputs, there’s also the option to   read instructions from a serial port, and there’s  even camera-based object recognition built in;   it’s quite impressive and I found it really  easy to learn by just playing around with   its features. I love learning things when  there’s direct visual, haptic feedback. So   with 10 minutes of experimenting, I got  it to pick up some pliers, present them,   and drop them in a different spot. Very nice! You may have noticed that there is a good   amount of wobble going on in the movement.  This arm is neither accurate, nor precise,   rigid or smooth. There is a claim of 0.2mm  repeatability, but considering that the   endstops only get within about a degree or  so every time it calibrates after powering   on, and sometimes miss their target entirely,  that’s a bit of a stretch. Speaking of stretchy,   four of the axes use pretty coarse belts, and  because they have to go around relatively small   pulleys, without being afraid of overloading  the motor’s output shafts, I couldn’t get them   tensioned enough to where they wouldn’t introduce  a significant amount of elasticity. The motors   themselves, and this is 100% on OMC Stepperonline,  also don’t meet the promised “15 arcminutes”, aka   0.25° of backlash, I easily measured 0.5° or more  of backlash on almost every motor. And lastly,   the way that some of the structural and bearing  assemblies are designed, for example with the   combination of a single tapered roller bearing and  a thrust bearing on the other side, that’s just   not a combination that can resist any torque from  the axis twisting, and you can feel that it has a   good amount of elasticity in the bearing assembly  itself. There are also some obvious issues like   needle bearings riding on aluminum shafts, grub  screws clamping down directly on bearing races   or mating parts together with a screw that has  to pass through threaded sections in both parts   that aren’t clocked correctly; so maybe take  the mechanical design of the arm itself with a   grain of salt, it gets the job done creatively,  it’s just not textbook engineering material.  And, you know, this project does deserve a bit  of slack, it’s literally just one guy doing   mechanical, firmware and software who then also  manages to provide kits with the structural and   electrical components, I couldn’t imagine  handling all those tasks at the same time,   so Chris definitely deserves a hefty amount of  praise for managing all those things at once.  So let’s move on and get some more stuff done. One  of the applications I was thinking of was grabbing   printer beds off of the machine and then replacing  them with fresh ones, but that’s right at the edge   of the capabilities of both the arm and myself, so  let’s start a little simpler and get a camera on   here. This is what got me interested in robot arms  in the first place. Specifically, I want to create   smooth orbiting shots around objects, so for that  I can simply tell the robot that the center of   its tool is not just the camera lens itself, but  the center of the actual object I want to film,   so if the object is 300mm away, I set the offset  to 300mm, and now if I just use the tool rotation   commands, it will automatically keep it centered  and at the exact perfect distance. So with that,   we get this: [montage]  There’s also spline moves, which interpolate a  path along multiple points. Remember that NERF   shot I rendered of the tree supports? That was a  spline path. Basically, as long as the camera and   the arm fit, I can recreate that now in real life. But in this footage, you can still see a bit of   wobble going on, and that’s already after  stabilization in Resolve. Straight out of   the camera, which has hardware optical image  stabilization, there is a lot more shaking going   on, and you can visibly see that on the robot as  well. I also need to figure out how to actually   use the arc move and linear move commands, because  when I tried them, the robot would take off in the   exact opposite direction that I told it to and  eventually crash. Though I do blame that on me   not knowing the software well enough. So what do you think? How should I put   this robot arm to best use? You can actually  expand this thing by putting it onto a track,   which makes it easier for it to smoothly move  the tool, because it can avoid those positions   where it has to crank one axis all the way just  to get another one angled the way you want it. I   also now sort of want to build a camera-specific  arm, one that is built to be smooth and large,   but not necessarily fast or strong; there are  a lot of ways that I could take this project,   so let me know in the comments below what  you would like to see. If you’re interested   in getting more details about the AR4 robot  platform, I’ve linked the website and YouTube   channel below where Chris walks you through the  build, the software and logic behind the arm,   it’s a very good watch, so do check that out. Sorry this video took so long to get out, after   Open Sauce, I was down with the Sauce Sickness for  a while, so that delayed everything more than I   would have liked, as always thank you to everyone  who’s supporting the channel, that genuinely means   a lot to me, thank you all for watching, keep  on making, and I’ll see you all in the next one.