Team 846 Gravity Arm Counterbalancing Video

Hello everyone,

Team 846 is proud to present our new “Monkey Box” video on Counterbalancing!

Additional documentation is linked in the description of the video.

Anna on behalf of Joseph, Sam, and Joonha


Thanks for posting, this is a great video.


Thank you for producing this, I can imagine how much work it was to do this, this well. Awesome job


So this particular setup reduced down to
RcgW = RH*k

Rcg = radius to the center of gravity
W = total arm weight

R = radius from the arm to the pulley
H = ??? Can someone enlighten me to this variable? I’m guessing spring stretch
k = surgical tubing spring factor (force/stretch)

1 Like

This video is fantastic, I will definitely be sharing it with future students to explain a neutral/counterbalanced arm.

Reminds me of how this guy explains mechanical concepts -


Thanks for posting!

I went to 846’s talk at WRRF about this and all I can say is that I’m excited to get more math into our robots!

1 Like

H is the height from the pivot point to the pulley.
Or in other words h is the vertical distance to the spring attachment point.
(A equals Hy and B equals Rr at 4:37)

1 Like

Either i havent seen it, dont recognize it, never heard of it.

By the explanation, the more pulley-rope linkages, the less torque needed to power. Eventually, an intake motor can power an elevator correct?
On this, are there any teams that used more than 1 pulley so a lower torque motor can be used to drive an elevator?

I didn’t watch the entire pulley vid, but remember that nothing is free. Note that he had 9 lengths of rope being redirected through 8 pulleys and the force being exerted (2 lbs) translated into something greater (~16lbs). What you give up (what is not free) is rope length. Instead of moving the rope 1 distance and seeing the weight move 1 distance (1:1 ratio), you now have to move the rope 8 distances to see the weight move 1 distance.

So, yes, you could drive the elevator on your bot with many pulleys and a small motor, but you’d need a significantly longer rope. And, a bigger spool to hold all the rope and more time to wind it up. …with every up/down actuation.

1 Like

The relevant portion of this video is a bit shorter and will illustrate why teams don’t utilize block and tackles or snatch blocks to increase their force in FRC elevators.

Bill Nye shows that it requires reeling up 3 times as much rope to gain 3 times the force. Consider what reeling up more rope means for an elevator in FRC. If your motor is turning the same speed*, reeling up 3 times more rope means it takes 3 times longer to accomplish the same task.

That doesn’t mean teams don’t utilize these principles. Think about how a cascade elevator works, and where the different cords apply tension. In that case, teams are actually reversing these principles to get more motion at the cost of more force.

*Note that proper system design and use of mechanical advantage can help you keep your motors operating in the ideal portions of their motor curves, which may result in improved performance from the motor

1 Like

This is incredibly well produced, thanks for making this! I might be wrong, but are you using the 3B1B engine to make math animations in the latter segment? All in all, fantastic resource though :slight_smile:

1 Like

Thanks, yup that’s exactly what we used! :slight_smile:


I loved the video!

Did anyone else notice the beautiful geometry/trigonometry they rushed through?

At 4:32, Sam says:

So, if you take that force of the spring and do the cross prouct of the radius to the attachment of the spring on the arm with the force of the spring, then you’ll get the torque of the spring on the arm. Now you’ll notice both of these equations both follow a sine curve, with sine of the angle between these two arms here.

In order to get this result, you need the formula for the sine of twice an angle, or something that could be turned into a beautiful proof of the double angle formula.

Let ℓ be the distance from the pivot to both the lower edge of the [assumed small] pulley and the attachment point [the two lengths I assume are equal]. Let θ be the angle between the two arms, and let k be the spring constant. As the triangle between attachment, pulley, and pivot is an isosceles triangle, the amount of extension of the spring is 2ℓsin(θ/2), and the spring’s force is 2kℓsin(θ/2). The angle the spring extension makes with moving arm is equal to (π-θ)/2, so torque = 2kℓ²sin(θ/2)sin((π-θ)/2). As (π-θ)/2 is the complement of θ/2, sin((π-θ)/2)=cos(θ/2), making the torque equal 2kℓ²sin(θ/2)cos(θ/2), not too pretty on the face of it!

But, the sin of twice an angle φ is given by: sin(2φ) = 2 sinφ cosφ. Letting φ = θ/2, the torque equation at the end of the last paragraph becomes (after just a bit of regrouping) kℓ²(2 sinφ cosφ) = kℓ²(sin 2φ) = kℓ²sinθ!


I was not previously familiar with this particular method, so I decided to try to apply it to an arm 3946 did a couple of years ago and didn’t do so well with. Here’s an early concept PAD (Powerpoint Assisted Drawing):
This shows the robot with a cube-carrying arm with a simple pneumatic gripper, and only a floor-level intake which was retractable around a vertical pivot near the back end of the black arm. Separating the two made it much easier to stay within 16" of the FRAME PERIMETER using an arm that could reach above the highest SCALE PLATE level.

Strategy and Rules not really germane to this topic in case you're interested

After seeing how the G25 (PLATES are moved by POWER CUBES, not ROBOTS) was refereed, this didn’t make any sense, but this was designed based on the rule, which actually said:

Incidental contact that does not result in PLATES changing scoring state is not a violation of this rule.

The idea was to drop cubes onto the scale and switch plates, making G09 moot. High scores on the switch would be with the arm high overhead, and the cube falling behind the robot. This would actually have made harvesting the cubes on the back side of the switch fence into the scale easier.

At first blush, this arm doesn’t look like the one 846 had in the video - how can it be counterbalanced? Looking back at my analysis of the beautiful geometry above, here are the three four key points:

  • The pulley departure point must be directly above (or below) the pivot axis.
  • The arm anchor point must be on the plane connecting the pivot axis and the center of gravity (CoG) of the arm. [Deciding what fraction of the game piece to include in the CoG calculation is a strategic decision.]
  • The pulley departure point and arm anchor points must be the same distance from the pivot axis and in the same plane perpendicular to that axis; these two points must be at essentially the same location both above or both below the axle when the arm’s CoG is directly above the pivot.
  • The spring should be under zero tension if the pivot point on the wire/string is at the pulley.

Here, I’ve added a few more points and lines to illustrate:
The new white circle is at the [estimated*] CoG. One dashed line connects the CoG and the pivot; the other shows a vertical line through the pivot. The notional pulley points are depicted with circles and anchor points with squares, connected by a solid line. Using the ganged springs 3946 had in 2018, we could have easily managed this and stayed within the height limits by adding a short stub to the arm a few inches below the pivot point, perhaps one or two inches long.

* In season, we would have hung the as-built arm on a loose axis to determine the line to the CoG, which is all you really need here. The arms were made of Versaframe; we likely would have taken a gusset and slid it down a plumb line to find a hole that was a good fit and stiffened it up a bit.

1 Like

You (GeeTwo) brought up a very interesting topic that we didn’t cover in the video, counterbalancing over more than 90 degrees of rotation.

We can prove that counterbalancing is possible over a full circle of rotation by showing that the potential energy stored in the spring is equal to the energy required to lift the arm.

The energy required to lift the arm from all the way down is mgh, which in this case is 2wl.
The potential energy of a linear spring is 1/2kx^2, so when the arm is all the way down, the stored energy is 2kr^2.
This is significant because the equations simplify down to wl = kr^2, the same as with 90 degrees of rotation. This means that if an arm is counterbalanced over 90 degrees, it is also counterbalanced over more than 90 degrees.

The main difference when counterbalancing over more than 90 degrees of rotation is the pulley setup. When the cg of the arm is directly over the pivot, the spring should not be providing any torque on the arm, but as the arm goes down on either side of the pivot, the spring needs to stretch. Using this method GeeTwo showed you could loop the rope around the pulley once, achieving something close to perfect counterbalancing over a full circle of rotation.

If you only need 180 degrees of motion (arm is down to arm is up), it can be done without that loop, but the way we did it in 2018 might be easier in some situations so I thought I should mention it.

The method would be to use a dual pulley setup like this (what we used in 2018):
(blue is string, red is the spring, black x is approximately where the string was attached on another assembly, the black bar on the right is the arm that is being lifted)

The idea behind this setup is as the arm goes down, the top pulley is pushed out further, stretching the spring more, and as the arm goes up the opposite happens. The final attachment of the string is set up so that when the cg of the arm is directly above the pivot, the string is no longer on the top pulley. Because of this, the design won’t work too well if you want a full 360 degrees of counterbalancing, as when the arm goes all the way over you no longer have that second pulley that the spring can “pull” on.

While this design is smaller than other solutions, it does require knowledge of where the cg of an assembly is before it is built. One other thing this design does is it puts the spring on the arm, which in some cases is more space efficient than putting the spring elsewhere.

A quick side note:

is not necessarily true, you can have the two points be different distances away from the pivot and still achieve perfect counterbalancing. If the pulley distance is different from the arm anchor distance, the spring will be stretched when the arm is vertical, but will provide no torque.


Please do!

Did I? I missed that. A half circle of rotation I totally get. I don’t see how this method provides the required “negative support” for the other half of rotation, unless you’re into pushing ropes. [Please let me know if my vision is to narrow!] [Added:] Or did you just mean a half circle each way from top dead center, which I consider a half circle?

Huh. As I looked at it, a single pulley would be enough for 180 degrees of travel.

I’m not convinced of this yet, but will look into it. My point was that if you follow the three rules I described and you had the right spring constant, your system should balance your arm, not that it was the ONLY way to achieve balance. If true, that would be some even more awesome geometry you bypassed!

OK, on the 360 stuff I’m on board provided that the “pulley” doesn’t look like your demo, but is more like a frictionless hole/bushing bored through a surface normal to the arm’s axis. In this case, the counterbalance is good for a full circle centered on the CoG being above the pivot, whether the pivot is above or below the circle, and the anchor point is as I described.

That is exactly what I meant by full circle, two half circles from bottom to top.

No need to push ropes if you have a loop of some sort. Without a loop, as the red arm moves over the vertical the purple spring would no longer be on the pulley. A loop in the purple string would make it so that as the arm goes over to the other side the string is still on the pulley.
In application you can design it so that the loop is added as the arm goes over the pulley, but that adds its own complexity. If you start with a loop it would most likely be easier.

As I mentioned, half a circle of rotation (and a full circle) can be done with one pulley, the method we used with two pulleys is just an alternative way of counterbalancing that reduces the overall size of the design. If we were to use one pulley we would need to either have the arm extend past the pivot, or have room above the arm to put a pulley, both of which we could not do in this specific case.
The main benefit with this design is not the smaller size though, it is that if the cg of your arm is far away from any existing frame members, you don’t have to add parts to have a place to attach a rope. With this design you just have to design the pulley locations to make the rope detach from one of the pulleys at the right point.

You can double check this by redoing the math. If we change the pulley-pivot distance from R to H then the math works out like this:

I think that this statement is untrue. Even when the two distances are different, the spring will just barely be at rest when the arm is vertical, just like it is when the distances are the same.

Given that, skip the “push a rope” stuff, though the pulley needs to be better defined.



Where do I buy a pulley like that?

I have no idea what you mean by this. In particular, why would you want the rope to detach?