Independent study : A Matlab AnyBody interface to compute torque requirements for Assisting and Resisting modes for a leg exoskeleton helping perform a leg curl.
2. The grounding was removed from the Pelvis segment and provided at the Hip joint. The whole UpperLeg was grounded effectively by providing a revolute joint at the hip and providing it zero velocity.
3. The muscle definitions were changed so as to now connect through nodes on the UpperLeg and LowerLeg instead of the Pelvis and the Foot respectively. The extra muscles that do not participate in the knee motion were deleted.
4.
5. Two nodes were added to each of the original Leg segments at their extremeties and 0.06m away along the axis of rotation of the knee.
6. The exoskeleton segments were “frozen” with respect to the leg segments at the Hip joint and Foot-Shank joint by providing zero velocity revolute joints.
7. The Exo-Knee joint was created between the Lower-Exo and Upper-Exo and the Knee joint in the actual Leg was removed to prevent the model from having more degrees of freedom than the constraints in the system.
8. The Exo-Knee joint was driven by a cubic spline interpolation using a function AnyFunInterPol that took the knot points data from a file ‘moment.txt’.
9. The segments were drawn in an easy to see way using the AnyDrawSTL command in AnyBody to replace the segments. The STL (Stereo Lithography) files themselves were made using Pro-E software.
10. The application of the force at the Shank-Foot joint is now decided based on the application to be emulated by the Exo-skeleton.
11. Exoskeleton Application: The exoskeleton is required to provide assistance to the human leg for lifting of a heavy weight and hence the vertical force at the ankle joint is included in the Exo-skeleton model.
12. Rehabilitation/Exercise Application: The exoskeleton in required to emulate the effect of a mass attached to the ankle joint by providing an equivalent moment Hence, the actual force is not required.
13.
14. Update AnyBody model files (for both Leg model and Exo-skeleton model) with the new parameters.
15. Find an appropriate torque profile to be applied to the exo-skeleton knee so depending upon the application selected (whether exo-skeleton or exercise mode).
21. Simulation Time: The total time of the movement in seconds. It is written to the ‘tEnd’ parameter in both the models.
22. Body-Weight: It is written to both the models and the weights of the Leg as well as the Exoskeleton are directly proportional to this parameter.
23. Start Angle: The angle, in degrees, at which the Exercise should start.
24. End Angle: The angle, in degrees, at which the Exercise should culminate.
25.
26. Push Button: Used to capture user inputs for performing certain actions (eg. To start calibration).
27. Pop-Up Menu: Used to toggle between a fixed set of available options (eg. Choice of display of muscle forces corresponding to Leg Model, Exoskeleton model or a difference between the two).
28. Check-Box: Used to toggle variables that have only two states (eg. Whether a muscle force is to be plotted on the graph or not).
29. Sliders and Edit Boxes: To capture user input of variables within certain ranges. While the sliders have inbuilt capability of limiting an input, the Edit Boxes had to be explicitly programmed to have this feature. Variables such as the Foot Load, Simulation Time etc. were captured in this way.
30.
31.
32. Solution Mode: This menu allows the user to select between the exercise mode and the Exoskeleton mode. The exercise mode is programmed equalize the muscle forces in both models while the Exoskeleton mode is programmed to neutralize muscle forces in the exoskeleton model.There is a checkbox corresponding to each muscle employed in the model to toggle that muscle’s force display in the Muscle force graph. There is a Re-Calibrate Button to initiate the Calibration sequence. It also has a Calibration Status indicator that is green if the previous calibration was successful, yellow if a calibration is underway and red if the previous calibration was unsuccessful. Figure 6 – On First Calibration The following parameters were set for the initial calibration. Foot Load = 5.3kgSimulation Time = 4.3sBody Mass=66.1kgStart Angle = -25。End Angle = 53。Solution Mode = Exercise This implies that the Leg is performing an exercise by attaching a load of 5.3kg at the ankle and the stroke is from -25 degrees to 53 degrees(with respect to the vertical position of the lower leg). This exercise is performed in 4.3 seconds and the body mass is 66.1kg. The body mass is important since it determines the mass of the leg(which is equal to the mass of the corresponding exo-ekeleton segment) and finally affects the moment needed to neutralize it. The left part of the figure shows the forces developed by the various muscles in the leg as the stroke advances. This can be changed to show the muscle forces in the Exo-skeleton model as well as the difference by changing the Display Mode(currently set as Leg Model). As can be expected, some of the muscles are active till the leg reaches the vertical position and others kick in once the vertical position is passed. This means that the muscles active in the former part of the stroke are aiding in the ??? The right part of the figure shows the muscle profile that has to be applied to the motor at the knee joint of the exo-skeleton in order to equate the muscle forces in the Leg model with the downward force and those in the Exo-model without the force applied. This implies that the motor will now emulate the effect of having a mass of 5.3kg tied to the Leg at the ankle without the load being actually applied. This sort of force distribution is because of the selection of Exercise mode as the Solution mode. It can be used to design an Exo-skeleton for rehabilitation purposes. The motor torque at the initial point can be calculated as; MInitial=MLower*L2-M*L*g*sin-25*pi180= 6.465Nm where mass of lower leg=mass of lower exo= MLower=0.045*MBody=0.045*66.1=2.9745kg Mass hung at ankle, M=5.3kg length of lower leg=length of lower exo=L=.409m Final point motor torque is MFinal=MLower*L2-M*L*g*sin53*pi180= -12.2174Nm As we can see, the actual motor torque values are in close accordance with the expected values. Figure 7 – Viewing Force Difference Figure 7 showcases the same calibration as in Figure 6 but now plots the difference of the muscle forces felt in both the models. As can be seen, the differences in muscle forces are reduced to almost zero. This implies that the calibration was successful in emulating the effect of an actual exercise using an exoskeleton. Figure 8 – On change to Exo-skeleton Mode Now we change the solution mode to exoskeleton mode. In this case, we actually apply a load equal to the Foot Load at the Ankle of the Leg and calibrate so as to reduce the muscle forces of the Leg in the Exo-model to a miminum. As can be seen, the muscle forces of the Exo-model are reduced to an exact zero. This implies that the calibration was perfect in nullifying the external forces and moments to make the movement ‘effortless’. Calculating the moments as earlier, MInitial=MLower*L2+MLower*L2+M*L*g*sin-25*pi180= -14.03Nm MFinal=MLower*L2+MLower*L2+M*L*g*sin53*pi180= 26.514Nm The extra term in this case corresponds to the weight of the Lower Leg that now needs to be compensated for too, since the muscles need to be ‘effortless’. Also, the sign of the M*L term has changed because the motor now needs to neutralize an existing force of M*g rather than emulating it when it does not exist. Again, the actual moment profile is a close match to the expected one. This type of calibration can now be used to design an exo-skeleton for the Leg. Figure 9- On Animation of Exo-skeleton Figure 10 - On Animation of Leg Figures 9 and 10 are a depiction of the actual stroke made by the leg. This animation is triggered by hitting the ‘Animation’ Button in the top right corner of the GUI. Since the Display mode is Exo-model, the exo-skeleton model is displayed while carrying out the stroke. It is programmed to extract the relevant frames from an AVI file that has frames for angles ranging from -40 degrees to 90 degrees (the whole allowable range of angles). The frames are then played at such a speed so as to make the stroke time equal to the Simulation Time. Figure 11 – Final Muscle Force Profile during Calibration Figure 13 shows the Muscle Force differences after the calibration is over. Since there weren’t any significant muscle force differences to begin with, the change in the torque profile is not substantial. This implies that our initial approximation was quite accurate. However, since the maximum value of the differences has gone to less the 0.02N, we can say that the calibration was successful. Figure 12 - Viewing important muscle forces on Interface In order to display the model muscle wise, we can deselect the unimportant muscles in the central area of the GUI and display only the ones that are important. However, this option does not remove the deselected muscles from the actual models. Figure 13 - Iteration and max-error history after calibration with approximate profile Figure 14 - Iteration and max-error history after calibration with exact profile Figure 13 shows the muscle force magnitude as it decreases from the initial value of about 9N to a final value of about 0.9N. As can be seen, there is a really good convergence obtained by the method employed. However, as seen in Figure 14, by applying a correctly calculated Torque Profile in the first go, we can have an acceptable answer without any iterative procedures. Muscle force magnitude is calculated as the maximum magnitude of the difference in the muscle force exhibited by any muscle in the model. Different muscles have the maximum magnitude during different iterations. Hence, the program considers the muscle with the maximum muscle force magnitude while applying corrections to the Muscle Force Profile (Eqn 10). Sensitivity Analyses In this section, we try to ascertain how changes in various parameters affect the muscle forces. We start with a typical set of parameters as: Foot Load = 7kg.Body Mass = 75kg.Start Angle = -40◦End Angle = 90◦Simulation Time = 6.5sNumber of Steps = 65Mode = Exercise Mode Equation 11 – Typical Parameters for sensitivity analyses We then change the parameters one by one and observe changes in the Vasti Muscle. This procedure is intended to provide a better understanding of the system and also validate the formulation. Foot Load When we change the foot load from 0 through 10kg, it has a substantial effect on the muscle forces. This is expected since the main contributing term in the equation. Figure 15 - Foot Load Sensitivity Body Mass Next, we try to change the Body mass from 50 through 100kg. As expected, the change in muscle forces is not significant. This is helpful in the sense that the same calibration can be used for people with a variety of body masses without enduring a considerable downfall in performance. Figure 16 - Body Mass Sensitivity Start Angle Next, we try to change the starting angle and compare the muscle forces at an angular position for different start angles. It has no effect on the muscle forces. We can infer that the starting condition of the exo-skeleton is immaterial although the zero reference needs to be correct. Figure 17 - Start Angle Sensitivity Simulation Time Finally, we try to vary the simulation time to see if longer durations of a stroke can increase muscle forces. As expected, the muscle forces at an angular position are constant for a variety of stroke times (or Simulation Times). Figure 18 - Simulation Time Sensitivity Conclusion A brief study was made on the muscle forces developed in the human leg by creating a simplified model of the leg and analyzing it using AnyBody. The effect of an exo-skeleton on the muscle forces in the leg was also studied by providing the appropriate segments and torques. Two different applications, the exercise mode for rehabilitation and the Exo-skeleton mode for actual exo-skeleton design, were successfully studied and developed. Then, using MATLAB, the analysis process was automated by writing AnyBody files with desired parameters and analyzing them externally (without AnyBody) using AnyBodyCon. A program was developed for converging to the required torque profile using penalty function. Finally, a MATLAB GUI was developed to automate the entire design process and also for ease of access of data. The results obtained were found to be quite satisfactory for this simple model. Future Scope Similar models may be developed for other parts of the body. The starting point could be the Hand model since it closely correlates to the Leg as far as joints are concerned. Also, the simulation may be made more realistic by applying real-time movement data to the knee-joint in the Leg model by using Motion-capture for a full range of parameters. Another approach may involve the use of fmincon function in MATLAB to optimize the muscle force profile for higher end models, whose direct analysis and approximation could be more complex than in this simple example. The final part could be the similar analysis of a full scale exo-skeleton model in the exo-skeleton mode and automation of the process similar to this case. To provide reasonably accurate data for driving the Leg model in AnyBody, an actual exercise can be done with the simulated conditions and the motion of the leg captured using Motion Capture System. For example, a SIMI motion capture system can be used with three cameras for this purpose. References 1) “CONVERSION OF POINT CLOUD DATA INTO 3-D MODELS”, Karthikeyan Senthilnathan & Chen Lin, Independent Study Report, Mechanical and Aerospace Engineering, SUNY Buffalo. 2) AnyBody Reference Manual, AnyBody Technology – www.anybodytech.com 3) “ANALYSIS OF PARALLEL MANIPULATOR ARCHITECTURES FOR USE IN MASTICATORY MOTION CASE STUDIES”, Madusudanan Sathia Narayanan, M.S. Thesis, Mechanical and Aerospace Engineering, SUNY Buffalo 4) “MUSCULOSKELETAL MODELING OF SMILODON FATALIS FOR VIRTUAL FUNCTIONAL PERFORMANCE TESTING”, Kiran S Konakanchi, M.S. Project Report, Mechanical and Aerospace Engineering, SUNY Buffalo 5) http://en.wikipedia.org/wiki/Interpolation 6) http://en.wikipedia.org/wiki/Spline_(mathematics) 7) http://tech.groups.yahoo.com/group/anyscript/ - AnyScript Support Group