My first year in the Berkeley Emergent Space Tensegrities (BEST) Lab, I worked on the design of a compact series elastic actuator (SEA) that we could use on our tensegrity robot for both compliance and tension sensing.
A tensegrity robot is made entirely of cables and rods. Our lab’s robot has small DC motors on each rod that are used to spool in the cables. By changing the cable lengths, we deform the robot’s structure, making it move.
If the cables were rigid, the structure would not deform easily. The robot’s current design (pictured below) uses an extension spring in series with each cable so that the robot is compliant.
I wanted to see if we could replace the extension spring with a torsion spring coupled directly to the motor shaft (aka, an SEA). Since a torsion spring has a linear relationship between torque and angular deflection, the torque can be found by measuring the spring’s angular deflection using encoders. Assuming the cable is tangent to the spool, the cable tension can be found from the torque. Thus an SEA enables both compliance and tension sensing.
I started by defining the functional requirements: operate for cable tension of up to 15 N and have a maximum diameter of 5 cm. I sketched design concepts to fix one leg of the torsion spring to the motor shaft and the other to the spool. I developed a design spreadsheet to check critical parameters for the torsion spring, such as expected angular displacement and clearances. Then I created a final design in SolidWorks, as shown below.
Next, I created the prototype pictured below. I selected and ordered a torsion spring, ball bearings, screws, and encoders. I 3D-printed a spool (green component that secures one leg of the torsion spring) and hub (blue component that connects the encoder shaft to the spool). I machined an adapter (cylindrical post connected to the motor shaft), spring guard (cylindrical part connected to the adapter that secures the other leg of the spring, not visible), and support brackets (L-shaped brackets that hold the assembly).
Finally, I conducted a static test of the SEA. I breadboarded a circuit with the motor, encoders, and Arduino microcontroller. I recorded the spool encoder readings (motor encoder remained at zero) as I loaded and unloaded the spool with total mass of 100, 500, 1000, and 1500 g (roughly 1, 5, 10, and 15 N).
The results (shown below) weren’t what I expected. The good news: repeatable behavior, with approximate linearity in the loading case between 1 and 10 N. The bad news: significant hysteresis.
It’s possible the spring isn’t deflecting according to specification. Another possibility is that error stack-up in the parts is resulting in the spring moving out of place. Or there could be some pinching in the bearings. The next step for the project is investigating the cause of the hysteresis.
By designing this SEA, I developed the following skills:
- Developing design concepts
- Modeling parts in SolidWorks
- Designing parts for 3D-printing
- Machining using the lathe and mill
- Assembly with an arbor press
Thanks to Lee-Huang Chen, another graduate student in the BEST Lab, for his feedback as I designed the SEA.