- Camille Townshend
Soft exosuit technology has a large potential to grow in various untapped applications. Superflex technology, originally developed for the DARPA-funded ‘Warrior Web’ program, now focuses on creating powered clothing that will help people with general independence, people who are starting to lose confidence in their mobility. Specifically, wearable assistive devices have the potential to improve and extend quality of life for elderly people. My grand goal is to discover how a wearable assistive device can make up for elderly people’s muscle atrophy and enhance their motion when performing sit to stand. My project focuses on informing the design of a wearable assistive device that will compensate for muscle weakness in elderly people. Via dynamic optimization, I will extract the evolution of joint torques first in a normal sit to stand, then in an elderly sit to stand. I will add an active actuator at the hip to model the wearable assistive device and extract the torques required for the device to support elderly people in sit to stand.
- What evolution of joint torques occurs at the ankle, knee, and hip during sit to stand?
- What torque at the hip is required for an assistive device to support movement of an elderly person in sit to stand?
There are two methods that can answer these questions in different ways. The first method is to create an inverse dynamics simulation based on kinematics data of elderly and young people performing sit to stand in the literature and to compare the differences in joint torques created over time. A comparison of both simulations’ results would shed light on when and where elderly people lack the joint torques necessary to perform sit to stand and would provide a base truth to support further work.
The second method involves solving a dynamic optimization problem and grants insight on the most efficient way to assist an elderly person in sit to stand. I would describe a model with appropriate model constraints, simulation end-time event handlers, and an objective function for the optimizer to search for actuation patterns that minimizes (1) a standing condition error (includes a joint alignment error, a zero-velocity at final position constraint, as well as a minimum height requirement), (2) injury, and (3) pulling on the ground by the feet. These added actuators may also act to alter the kinematics seen previously, and comparing the kinematics of the healthy, elderly, and elderly + suit experiments will grant interesting insights.
Phase 1 [completed]:
Use inverse dynamics on kinematics data in the literature to get evolution of joint torques. Use this to compare against the optimizer’s solution.
- Set up the CMA-ES optimizer (derived from Carmichael’s Standing Long Jump optimizer):
- Tune objective function
- Tune model constraints
- Run optimizer, then single forward dynamics simulation.
- Visualize in OpenSim.
- Troubleshoot: return to 2.a.&b.
- Extract the joint torques from the optimized motion.
Phase 2 [tbc]:
- Weaken model by setting optimal force to
- Elderly model relearns STS with same optimization setup.
- Add sim model of exosuit by adding active actuators on top of the muscle-like coordinate actuators.
- Elderly model plus exosuit relearns STS with same optimization setup.
- Compare healthy, elderly, and elderly plus exosuit kinematics and joint torques.
- Extract max output torques from active actuators.
Inverse Dynamics on Kinematics Data (Nuzik, 1986)
In my literature review, I found Nuzik et. al.'s "Sit to Stand Movement Pattern: A Kinematic Study." They presented twenty data points over two seconds of a performed sit to stand averaged over 55 test subjects, 38 women and 17 men. From the angle definitions in the figure below, I used Matlab to process the data and input the kinematics into OpenSim, where I used the inverse dynamics tool to extract the baseline joint torques for later comparison.
Because of the lack of resolution, these joint moments may have some noise, but they serve as a good base truth for comparing against the optimized joint torques and as a sanity check for later work.
Optimization Set-Up & Progress
A covariance matrix adaptation evolution strategy (CMA-ES) was used for the optimizer. It is a stochastic, derivative-free method for numerical optimization of non-linear or non-convex continuous optimization problems. I worked on developing the model parameters and constraints as well as the objective function in order to mathematically and physically define what it means to perform a sit to stand.
I worked from the Ashby model, a 2D five-segment (foot, shank, thigh, head-neck-trunk, arm), seven degree-of-freedom link model. The segmental moments of inertia, lengths, mass fractions, mass center locations, as well as the total body mass for the Ashby model were determined via previous measurement experiments on human body characteristics or determined by averaging the respective parameters of the subjects in Ashby's experimental study. The ankle, knee, hip, and shoulder joints were modeled as revolute joints actuated by net torques which were derived from muscle-like properties and included dependencies on the activation, the joint angle, and the joint angular velocity (Ashby, 2004). They were aptly named "Muscle-Like Coordinate Actuators," often abbreviated to MLCA.
Carmichael Ong adapted the Ashby model to devise a method for designing exoskeletons using the Standing Long Jump as an example. I spun a model and an optimization off of Ong's project with the intent to convert it to perform a sit to stand.
To start, I constrained the model at the heel and toe, such that the foot does not move throughout the duration of the simulation. I found no particularly easy way to terminate the simulation since the termination signal would be need to be based on the model’s final state, which, in the case of standing, is complicated to define. Instead, I hardcoded a 0.5 seconds of simulation time into the program.
After troubleshooting, I defined the following objective function:
f = alignmentError + heightError + injuryPrevention;
alignmentError = (knee.x – heel.x)² + (hip.x – heel.x)² + (shoulder.x – heel.x)²;
// the alignment error can be best visualized as below:
heightError = max(0, 0.9m – (COM.y – heel.y));
// when the difference between the center of mass of the model and the vertical heel position is less than 0.9 meters, the objective function is penalized. On the other hand, as soon as the model reached the minimum height, the term goes to zero.
// a penalty for using ligaments over muscles (controls type of MLCA output).
I also implemented a seat constraint and a seat release constraint in the model as well as an event handler in the program. These effectively acted as a seat for the Ashby model to "sit" on before the vertical forces at the constraint went to zero, and which point the model was no longer constrained at the hip joint, could lift its hips off, and proceed to stand. Altogether, the model with its toe, heel, and seat constraints, its seat constraint release, and the above objective function was able to achieve sit to stand:
Joint Torques from Optimized Motion
- First, I will refine the objective function and constraints by:
- adding a zero-velocity and zero-acceleration constraint for the final standing position,
- penalizing for negative output forces at toe and heel constraints,
- minimizing the usage of the muscle-like coordinate actuators,
- defining a simulation termination event handler so as to make the simulation time variable, and thus finally
- minimizing the simulation time.
- Second, I will make a weakened (elderly) model relearn sit to stand with and without the exosuit added, which would be modeled as active controls on top of the original MLCAs.
- Third, I will extract the joint torques from these optimized motions from the elderly model and, for validation, compare them against the healthy model’s sit to stand joint torques as well as the joint torques previously derived from the experimentally gathered kinematics data.
Ashby, B. M. (2004). Coordination of upper and lower limbs in the standing long jump: kinematics, dynamics, and optimal control (Master's thesis, Stanford University, 2004). Ann Arbor: ProQuest Information and Learning Company.
Nuzik S, Lamb R, Vansant A, Hirt S. 1986. Sit to Stand Movement Pattern: A Kinematic Study. Physical Therapy 66(11):1708-13.
Ong, C. F., Hicks, J. L., & Delp, S. L. (2016). Simulation-Based Design for Wearable Robotic Systems: An Optimization Framework for Enhancing a Standing Long Jump. IEEE Transactions on Biomedical Engineering, 63(5), 894-903. doi:10.1109/tbme.2015.2463077
Read Carmichael’s paper in more depth (read cited literature).
Talk to Carmichael about his Standing Long Jump program.
Conduct a literature review: look for kinematics data of sit to stand for old people and young people.
Set-up workflow: create necessary OpenSim-related files, download Carmichael’s model, etc.
- Define optimization constraints and equations.
- Do a first pass at running the optimization code.
- After gathering kinematics data, see if need to assemble into a specific file structure.
- Try to run inverse dynamics on the kinematics data of the young and old people.
- Write up progress report for Week 7. Include challenges (resolved or unresolved) and strategies for addressing them.
- Present a demo.
- Submit final project deliverables: