Arm Geometry

I am trying to teach my students about the geometry in basic arms and I was wondering if anyone has any specific points or important geometry concepts I should cover for arms such as a pivoting single or multijointed arm. Any help would be greatly appreciated! Thanks!


Consider referencing @ThaddeusMaximus’s mechatronics guide for some common (and not so common) arm form factors. It’s probably not as in depth as you need, but it should be a decent start.

Some Googling also brought me to this PPT from Lucien from 118:


IMO the most important concepts to hammer home (based on my experience of teaching even college grads linkage design) are:

  • The definition of torque as “force multiplied by the PERPENDICULAR distance between point of application and the point of interest (e.g. the pivot point)”.
  • Everything has six degrees of freedom until you eliminate them, and if you try to eliminate too many, you’ll get binding.
  • Virtual work; if your linkage amplifies position, it decreases force.
  • Loads don’t evaporate; Netwon’s laws of motion.
  • Distance = Angle times radius.

Spend significant time talking about physics and forces (more than my text does, haha). If you can understand the fundamentals, you can eventually understand any arm you come across.

Do you have access to CAD? You can easily design linkages in CAD sketches and see how they work :wink:


@troy_dietz got any tips from 330’s single-joint arms to share? It’s been a while since I worked with them.

Something something the Beach Bot Binder eventually?

The “classic” 330 style arm, like all things in FRC, is a series of compromises between ease of manufacturing and programming, mechanical complexity, and ability to complete game challenges.

A single jointed arm is a massive lever- everything stems from this. The 8" diameter sprocket is bolted directly to the arm member as far from the axis of rotation as possible; using a hex shaft to transfer rotation at the requisite torque will fail. This all rides on bushings and usually 1/2" round shaft.
The massive torque (for FRC) was usually supplied by a single 775 series motor or two BAGs, running through a double chain reduction when possible. The first chain being #25 for weight and CoM reduction (long runs let you put a heavy motor & GB lower on the robot) followed a #35 run as short as possible b/c #25 will snap (you can see this wasn’t quite optimized at first, and you can totally do a ton of math to perfectly optimize all these relationships). The double chain is also a sort of shock absorber, preventing the versaplanetary or plastic FP gearbox from shredding itself and doing other nasty things you don’t want to experience. If it comes to it, a snapped chain is always easier to fix than a borked gearbox.
You can totally kill an air cooled motor doing this, and we have, but the optimization trick is usually in ensuring the arm rarely sits pointed straight out, where the maximum torque is experienced. 2018’s arm was a single 775pro and rather quick, but it was rarely below a 45* angle with the horizontal. 2015 and 2016 would often be a very bad angles for extended periods, and were consequentially running BAGs.

Most importantly to a team looking at the KISS solution: a single jointed arm can very rarely do everything. The GDC knows this. 5818 knows this particularly well. The above robot could not place tetras as high up as many others, but it could do it quickly and rarely failed.
The code is dead simple. You could write the robot-specific bits of teleop code in under 10 lines, and that’s including the folding wings on the sides.
Machining tolerances? Cordless drill, hacksaw, and a ruler. tbh probably don’t even need the ruler if you’re a lil crafty.

The bar for winning a championship can often be met with a single jointed arm, and if an arm if the best you can do there’s no reason not to.

Really, if you can do better than an arm but get a week more driver practice with a simpler robot that’s often the better choice, but no bag changes that dynamic a bit.

I think I can argue 330 eventually outgrew the arm, to an extent. 2019 was originally a pretty classic single jointed arm until we realized a glaring strategic flaw that could kill a season if anybody noticed. We had the mechanical ability to run a solid elevator after 2018’s growing pains (and over a decade gap since our pervious elevator), and 2018 only had an arm for specific strategic advantage, so we ran with the elevator design.

The arm started as a bit of an OP crutch, became a powerful tool (see: 2012, 2016), and eventually a back pocket trick. This is also influenced a bit by modern game design, which doesn’t favor arms quite as much as it used to on the more open fields.


Pulls out the 2000, 2001, and 2004 BeachBots… We got away from elevator to arm, and went back again… (Actually, the joke I make about 2004 is that it was the most BeachBot of them all, one blue elevator topped by one yellow arm. Gotta see what I can do with getting it operational once we can get back into the shop.)

The part I always found funny was that our 2005 L.A. Regional winning alliance had three robots that were of the same type: single-joint arm, passive gripper, skid steer–all different robots, though.

@Californiacoach I suggest at least touching on the various controls issues inherent with a multi-joint arm. The most fundamental is this: Every new joint is a minimum of 1 new degree of freedom, which you will have to control in some way to get the most benefit from that extra flexibility. You may be able to link Joint 2 mechanically to Joint 1 (examples from the mechatronics guide include the Double Reverse 4-bar and the Virtual 4-bar), or you may need to use independent actuators to make it work (the most notorious example possibly being the Wildstang Arm from 2007). Independent actuators mean more interesting control systems.

Incidentally… whereabouts in CA are you, if you don’t mind my asking?

I like to use JVN Calculator for calculating arm gear ratios. I like to use 2 motors and keep the arm working current to 5-10% of the motor stall current. This makes controlling the arm with PID extremely forgiving.

Be sure to mention proper methods of chain tensioning (i.e. inline tensioners). Also, make sure to mention using large bolts near the edge of the sprocket to absorb load and prevent shearing of the #8 or #10 screws that attach your sprocket to the arm. Also, you can use dual chain runs on your final stage to mitigate backlash since while plate sprockets all have the alignment holes in the same spot relative to the teeth, hub sprockets are all aligned differently (as the broaching is a separate option from milling the teeth) and so by having two differently aligned hub sprockets you ensure that one’s teeth are always pressing right up against the face of the pins in the chain.