(Skip the first 3 paragraphs of preamble if you know what Diff swerve is or don’t care for my overthinking)
A farly sensible observation from the 2022 season so far is that coaxial swerve drive has become an effectively surmounted challenge. It is now, for better or worse, very available to a team that desires it whether they want to buy one of many very functional COTS solutions or manufacture their own custom modules. Unlike before 2021, swerve drive is quite common and thus it is more difficult to create a divide in drivetrain performance as coaxial swerve represents a drivetrain technology close to the limits of what is reasonable attainable within the current ruleset and technologies of FRC. In order to outperform an opponent from a robot design standpoint one can either drive faster, have more pushing power, be more agile or have superior control systems. Agility is effectively solved with the true omnidirectional movement of swerve. Fancy control systems is not something our team thinks attainable to the level required to give a good performance divide, so speed and power is our new name of the game.
Utilising more than eight motor slots is not very practical for a competitive robot design. Alongside this limitation, the NEO or Falcon represents the most power output in one slot permissable by the rules (aside from complex pneumatic engines that are heavy and cumbersome). Traditional coaxial swerve uses four slots for drive, four for steering. Thus only half the available power is put to carpet. So, if all eight motor slots could be fully utilised there could be a performance gain to be had that current COTS and custom swerve solutions couldn’t practically meet. Of course, then a solution is needed to regulate when some of this motor power is diverted from wheel turning to module turning. Ideally this would be done with a mechanical solution to remove extra electronic complexity or the need for more than already present actuators. This problem has been solved a few times in the past, and is known as Differential Swerve.
By utilising a differential, the control of the module wheel rotation and module rotation are controlled by relative similar and relative different motor rpms respectively. Rather than controlling the independant speed of two motors, we control the relative speed of two motors. In an example mechanism using arbitrary values, motor A turns at 0.5 speed and motor B turns at -0.5 speed, the wheel recieves 0.5 speed (and power). Here when the speeds are summed there is a zero result, so not module rotation. If motor A turns at 0.5 speed and B turns at -0.4 speed, the wheel recieves 0.4 speed. When these values are summed, a value of 0.1 is present meaning the module will rotate with 0.1 speed. If motor A turns at 0.2 speed and motor B at 0.2 speed, the module will rotate at 0.4 speed. In practice module rotation speed is a different angular velocity to the wheel, these values purely exist to demonstrate a point and are not to be taken with any mathematical precision.
Similar to our other swerve thread, this one aims to document our development of custom differential swerve modules known as SS8.1. This aims to be a documentation process for us, feedback and help to and from the community, and a blueprint for any other teams that aim to persue a similar goal. A thread like this from @nuclearnerd is what got our team started with swerve, so I take it fairly seriously as without these threads we wouldn’t be here.
Primary Objectives:
- Design, construct and implement custom differential swerve modules that are reliable enough to take to support a competative robot
- Compete at an official event with custom differential swerve modules, preferably in 2023
- Directly compare the performance of Coaxial and Differential swerve modules of similar build and technologies in order to gain a comparison of performance difference due to design concept. By designing the modules to fit directly onto our 2022 robot they can be quickly tested in real world loading conditions, as well as against the existing coaxial modules.
Secondary Objectives:
- Utilise as few ‘difficult’ components as possible. This is defined as a part that requires high tolerance CNC manufacturing and not available off the shelf ie. that would be inaccesable to most teams. Differential mechanisms that can survive in FRC conditions almost certaintly require at least one complex metal part, either bevel gears or ring gears. Not defined as a difficult part is one printed with FDM printers out of common filament such as ABS, nor is an aluminium plate machined on a 2.5 axis CNC router as these could be reasonably expected available to a team attemting this type of project.
- Reduce cost wherever possible. This may be achieved by substituting materials, or by abiding by SO1.
- Utilise as many similar design features to our current custom coaxial swerve modules. This reduces the unknowns as features such as a type of printed fork or machined plate that could bring out surprises in manufacturing and implementing.
- Apply generative design where possible. This is permits some weight saving as well as requiring proper engineering analysis of loads to do correctly, encouraging some maths to be performed. Also it looks super cool.
Breaking the formality, we see this as a genuine path to getting an edge on the competition in the age of COTS swerve. Our robot this year was light at 40kg, and was definately one of if not the fastest and most nimble on the field. Where it lacked though was enough power to push out of defense, in part due to low traction wheels but also going up against six-falcon tank drives. Swerve drives are also pretty inefficient, I wouldn’t be surprised if 10% of motor power is lost in the drivetrain particularly one like ours that uses some 3D printed components.
Differential swerve drive is not new, 971 had an early concept in 2017 with the wheel in between the differential gears and i’m guessing that others had done it earlier. A few Diff Swerve concepts exist on CD too, but only two I can see really going beyond the basic prototyping stage. What I have not seen evidence of is one making it to the field, nor a proper comparison to answer whether or not its worthwhile.
Below are some CAD photos of the current running concept. It utilises a pair of NEO motors, one CTRE absolute encoder, some bevel gears and spur gears from WCP (i think?) and some bearings from Thrifty Bot. Wheel is 100mm diameter (4" for those backwards) and designed to fit 25.4mm wide tread (1in).
The module below the plate is very similar to our last swerve (SS7.2). A great decision that could make or break this module is the type of differential to got with. We didn’t want a wheel-in-diff swerve as this can’t practically get over any obsticle (see 971’s variant). We saw two types of diffs as viable; bevel gear or spur gear. Bevel gear diff has the advantage or orienting the output with the wheel, so only a chain/belt/spur gear drive down is required. It is also generally more compact. Spur gear diffs need more space, parts and a later bevel gear stage to drive the wheel but have significant advantage of not needing custom machined bevel gears, a major plus for us. Instead, as modelled, it only requires two spur ring gears with a pulley profile. If machined in two parts, these can be done on a good 2.5 axis router out of aluminium with patience. We will probably get them machined out of steel with a CNC milling machine, but we honestly believe it is a viable route. The cutaway above shows the mechanism, with the four spur gears bridging the height difference of the two ring gears. Initially both rings were coupled by a single long spur gear, but I quickly realised that this wouldn’t work. Only one spur gear transmits power to the wheel, the other one on the axle is to balance the torque applied to the rotating parts of the module.
Another complex part is the two idler spur gears nestled inside the black bracket. These are riding on dead shafts and will be cut from Andymark 20dp spur gear stock as a basic lathe can bore the bearing seats. Much easier than using hex gears, also alot cheaper! The used bevel and hex spur gears are the same as our last swerve, so just building off that.
Known problems to be adressed or tested for:
- Generatively designed parts will be 3D printed and rigorously tested for durability. Encoder mount may need to be beefed up, though the simulation says it can take a load of 300N where the encoder is. Off-axis load is the killer though.
- Printed forks + other complex drivetrain parts worked perfectly in the 2022 season without a single replacement, but with the increase in power they may begin to fail.
- The module rotation is geared very fast, as in for ~1000rpm max speed. With only one motor turning this is lowered to 500rpm though, so remains to be seen how it actually performs. Absolute encoder tracks module angle.
- Drive is geared 5.1:1 (14t → 70T, 70T → 24t, 15t → 45t). This is a bit faster than the 6:1 on SS7.2 as we think we’ve got the power for it and the drive motors will be unlikely to be always running 100% for drive as some power needs to be given to rotation.
- These modules are looking to be quite heavy. 800g is given to the ring gears alone, per module. The top plate will be made of HDPE to help alleviate this, as well as decent pocketing, but we’ll just have to see. I haven’t done a full BOM and weight breakdown yet because i’m kind of scared to find out how much it actually weighs.
- The open top differential will turn fingers into mincemeat. As the rings are toothed, the ring below spins the other way, the differnetial gears are all sticking out, the differential gear stack rotates within the ring gears at up to 1000rpm. Yeah, will need to cover that up.
- Actually getting the rings made will be a huge pain. Here in australia there are zero small CNC manufacturers, and material stock is incredibly difficult or expensive to obtain in anything other than mild steel or hardware store aluminium. If you live in the US you may not quite understand how obscenely hard/expensive it is to get anything robot worthy other than those two basic metals in Aus (plus some plastics).
Questions for general response:
- Any obvious problems? Please let me know
- Could using 6061 aluminium for the ring gears be feasable? The 24t Spur gears running on it are also aluminium, so it shouldn’t wear too much but we can’t anodise them. Load simulation tells me the metal is strong enough, it just depends on wear.
Next on the agenda is a MDF and 3D printed mockup of the module, as with SS7.2. This will allow us to confirm the differential’s functionality. Any questions, feedback, or other comments are very much appreciated!
CAD Link: https://grabcad.com/library/ss8-1-differential-swerve-module-1
I’ll leave on a comparison shot between SS8.1 and SS7.2