Vikas Shetty
FSM based Impedance Controller for Powered Knee - Ankle Prosthesis
Video showing the initial walking test with the prosthetic leg
The development and clinical application of robotic (powered) prostheses is arguably one of the most important advances in the history of lower-limb prosthetics. With the capability of actively powering the joint movements, a robotic prosthesis has the potential to provide a significantly improved performance and user experience in comparison with traditional passive prostheses.
I'm currently working on this project as a Research Assistant under the mentorship of Research Engineer Mr. Albert Dodson and the guidance of Dr. Helen Huang. The prosthetic leg (hardware) was designed and developed by the team at the University of Alabama.​
Physical Design and Components
The Prosthetic Leg has below components and sensors
-
Knee Motor - 70 W permanent-magnet brushless motor (EC 45 flat, Maxon Motor, Sachseln, Switzerland)
-
Ankle Motor - 100 W permanent-magnet brushless motor (EC 60 flat, Maxon Motor, Sachseln, Switzerland)
-
Two-Stage Transmission ​
First Stage - Timing belt drive transmission
Second Stage - Harmonic drive gear set (CSD-20-50-2A-GR, Harmonic Drive, Peabody, MA)
-
Loadcell
-
Encoders for Knee and Ankle joints
The researchers at UA specifically targeted the robotic knee/ankle joint design unification as a major goal, while fulfilling their biomechanical requirements, especially the torque, speed, and range of motion, and form factor requirements associated with the knee/ankle joints.
The Design is aimed at unifying the approach taken for the actuation of the knee and ankle joints by introducing an identical two-stage transmission mechanism.
​
The rationale for the design choice, along with the bio-mechanical calculations has been published by the team in the paper linked below
​

Controller Hardware
An embedded PC by Beckhoff, The CX5130 which has a Intel Atom® multi-core processor with a clock rate of 1.75 GHz was used as the Run Machine. The inputs from the sensors were connected to the I/O block (a total of 4 channels).
The programming framework is TwinCAT 3 (which integrates with Visual Studio 2019) and the programming is done in C++.
The output torque calculated by the algorithm is converted in to the corresponding bit value and is fed to the motor driver (Escon Servo Controller 70/10) which sends equivalent analog voltage command to the Motor to generate the required torque

Finite State Machine and Controller Design

The Finite State Machine (FSM) Architecture used for the controller is shown in the above figure. The Gait is divided into 4 subphases. Late Stance is taken as state 1, as soon as the ankle is lifted the state switches to state 2 which is Swing Flexion, and so on. Within each state of the FSM the parameters of the Impedance Control are changed namely 'Stiffness', 'Damping', and 'Equilibrium Angle', and accordingly the required torque input is calculated.
​
The control law along with the parameters used for initial test runs are presented below
​


Initial Testing of Impedance Control


Knee Impedance Testing
Ankle Impedance Testing

Visualizing sensor readings on TwinCAT
Above are some of the snippets from the testing of the control. Currently, I'm working towards parameter tuning by doing trial runs as the one shown in the video at the beginning of the page. As the next stage of research I'm planning to explore using Reinforcement Learning to enable the machine to automatically learn these impedance parameters for a given individual, thus saving manual tuning time which is a major hurdle.