We turned our transmission motor into a series elastic actuator (SEA) by installing a custom torsional spring we waterjetted out of 4140 alloy steel. The geometry of the spring have a spring constant of roughly 348 Nm/rad in simulation, which gives us a reasonably small deflection (~0.03 rad) upon impact. A hall effect sensor along with a small magnet is used as a highly accurate yet low-cost (<$3) method of translating this deflection into a torque reading. The hall sensor is mounted on a 3D-printed slip ring to prevent wires from coiling during operation (see below).
Admittance control maps an input force to a corresponding motion, which allows a robot to follow an external force and improves backdrivability. In our system, we measure the torque exerted on the SEA and combine it with the torque necessary to track the position of the haptic knob in order to compute the desired velocity for our transmission motor. The RoboteQ motor controller we used then performs its own velocity control loop to produce the actual motor speed.
The transmission and haptic motors are mounted on different mounting plates along with their own RoboteQ controller, MCU (Arduino Teensy), and power supply. Because the transmission motor can produce a potentially dangerous amount of force, there is also an emergency stop switch next to it. Both motors have custom mounting brackets machined out of aluminum and steel, which ensure that they are secure even when the motors are operating. The only connection between the two motor plates is a cable for serial communication between the two MCUs.