Better Living Through Differentials: Arbitrary Gear Reductions Made Easy

#1
In the real world, when trying to easily synchronize gears of many different speeds, many different sizes and types of gears are used. However, in Besiege this would largely be impractical to implement. Fortunately, Besiege also has one advantage the real world does not: intangible braces. This allows us to use easily differentials to do gear reductions.





This is a differential. When it comes to gearing, it is your very best friend. It has the unique property that the middle block (which I shall call C) spins at the average velocity of the top and bottom gears (which I shall call B and A). That is, vC = (vA + vB)/2

Now, the introduction of 16-tooth gears has made gear ratios to powers of 2 very easy. But that's generally not enough; reductions by 3 or 5 are also often necessary. One might think that you could simply use gear-stacking, but unfortunately the force from the top gears will push back on the force from the bottom gears. Even if it did not, because of the way Unity's physics engine and the gears' programming works, gears that are not connected to each other do not QUITE synchronize. This is where vC = (vA + vB)/2 comes in.

Suppose I want to construct a clock. This requires gear ratios of 60, not a power of 2. 64, however, is, and it is relatively close to 60. If take our equation and set vB to 60 and vA to 64, then...we get 62, which is not at all useful. But, here's the trick: If we set vB to negative 60 (meaning A and B spin in opposite directions) then the equation comes out to vC = 2, a conveniently small number that is also a power of 2! Then, we can link up the gearing like this





Gear O is connected to gear A' with chains of large gears and small gears so that it's speed is multiplied by 64, and then A' is connected directly to A with a brace. Similarly, O is connected to B' with one large gear/small gear chain so that it's speed is multiplied by 2, and then B' is connected directly to B with a brace. In this case, since the equation return 2 and not -2, we want to make sure that A' and C' spin in the same direction. Then B will spin at 60 times the speed of O! Of course, this is a diagram geared (heheheh) toward clarity, and if you actually build the thing it ends up looking something like this





and that's with some of the support struts removed. You'll notice that the gearing of C' looks weird; I had to do some dumb acrobatics to get it to line up with the differential.

Now, not all such reductions are this simple; x45 speed, for example, cannot be achieved with a single differential. The beauty of gear reductions, however, is that they can be iterated; for example, we can can easily get vB0 = -15 from vA0 = 16 and vC0 = -1/2 and we can get vB1 = -3 from vA1 = 2 and vC1 = -1/2, and if we link B0 to O1 so that vB0 = vO1, then vB1 = 45*vO0. There are other ways to combine them that involve vO0 = vO1 and vB0 = vA1 or vB0 = vC1, but that's just algebra at this point.

I attached files for the gear reduction by sixty as well as a gear reduction by 5 (vA = 4, vC = -1/2), if you want to take a look at them.

Attached Files
GR60.bsg
GR5.bsg
 
#8
Wow, nice timing dude. As you posted this, I was literally finishing up the mechanism itself, and I just right now posted it to the forums.
 
#14
Biggest problem with gears is that they don't really like sharp, hard impacts or even just a lot of torque, I have yet to see/hear of a way of fixing the tooth skipping that happens under large amounts of torque in game. In fact it is the one thing stopping me from making a full drive train, clutch, gear box, dif and all. Any way, thanks for the tutorial, never though of using a differential to get it to the gear ratio needed.
 
Top