Apply Exoskeleton to New Body Part

Hi AnyBody,

I am repurposing the ExoConceptTrunk_BoxLift code to apply the spring loaded exoskeleton to a new part of the body. The simulation works and I can see the exoskeleton changes the muscle activity and joint reaction forces. However, I also want to visualise the system as it does in the ExoskeletonConceptTrunk_BoxLift model. Except when I repurpose this section of the code I get:

ERROR(SCR.PRS9) : SeatedHumanFullWithNeckv6withSpring.main.any(207) : 'w3' : Unresolved object

I believe this error will occur for each of the lines below it in the AnyKinPLine section. This does not occur in the original file. Could someone please help explain the reason for this error and provide pointers to fix it? Thanks very much in advance!

I have attached the model file.

Kind regards,
Tim

SeatedHumanFullWithNeckv6withSpring.main.any (22.6 KB)

Hi Tim,

I could not load your model as it needs a few other files from the model folder. However, having looked at the code, I couldn't immediately figure out anything that should be wrong as far as the error you described.

Could you attach the model folder as well, please?

Best regards,
Dave

Thanks Dave. I don't think I can attach a folder, so I will attach the contents of the folder.

Something just occured to me when you mentioned the model folder. I copied the exoskeleton code from inside the main file of the ExoConceptTrunk_BoxLift into my own file of the seated human. I then edited the code to apply it to the new body part of the seated human. However, I didn't bring over anything from the Model folder of the ExoConceptTrunk_BoxLift. Could this be what is missing? I explored the ExoConceptTrunk_BoxLift Model folder for any mention of "w3" etc, but couldn't find any. But maybe it is in there but I have missed it or I didn't know I was looking at it. Is copying the contents of the ExoConceptTrunk_BoxLift Model folder into my files Model folder a good idea?

Kind regards,
Tim

ArmSupport.any (3.1 KB)
BackrestSupport.any (20.6 KB)
Body.Study.any (15.5 KB)
BodyModelConfiguration.any (734 Bytes)
BRepChanges.any (2.4 KB)
BRepChangesLeg.any (3.4 KB)
ConnectionSegments.any (5.0 KB)
DrawCoorSystem.any (84 Bytes)
DrawSettings.any (4.3 KB)
Environment.any (14.6 KB)
FootrestSupport.any (5.9 KB)
InitialPositionsEnvironment.any (1.2 KB)
InitialPositionsLeg.any (940 Bytes)
InitialPositionsShoulderArm.any (8.8 KB)
InitialPositionsTrunk.any (1.3 KB)
InputParameters.any (1.7 KB)
JointsAndDrivers.any (14.9 KB)
LegrestSupport.any (3.3 KB)
LumbarRhythm.any (5.3 KB)
Mannequin.any (4.4 KB)
MannequinValuesFromModel.any (4.1 KB)
Measures.any (3.3 KB)
SeatSupport.any (19.2 KB)
Support.any (187 Bytes)

I attempted what I suggested above and it made no change.

Tim

Hi Tim,

The ExoConceptTrunk_BoxLift model does not really have a model folder. It uses an existing mocap model (the BVH_BoxLift model) and applies exo concept to it. All the exo related code is in the main file itself.

Could you please make a zip folder of the entire model? This should include the main file and the model folder and any other file that model needs.

Best regards,
Dave

Hi Dave,

Ok, understood. Attached is the zip folder.

SeatedHumanFullWithNeck - Copy.zip (54.1 KB)

Kind regards,
Tim

Hi Tim,

The problem is due to the fact that you are not using the TLEM leg model. w3 points to Wrap3 that we create in the model on Thigh.VastusIntermedius6Node. I think the leg model that you are using does not have VastusIntermedius6Node on the Thigh segment. That is the real problem. Sometimes, the error messages can be a little bit misleading with the way the model loads and constructs the model tree, unfortunately.

The quickest solution for you would be to use TLEM2 Leg model. Otherwise, you would need to define these nodes on another reference node on the thigh instead of VastusIntermedius6Node. But maybe you would need to adjust the relative positions of these nodes. Is there any particular reason you don't want to use the TLEM 2 leg model?

Best regards,
Dave

Thank you Dave, this was it. I changed the nodes to those in this model. And now have it how I want. I do have further questions.

SeatedHumanFullWithNeck - Spring.zip (54.1 KB)

I am using the rotational spring exo from the exo concept model reapplied to the upper body.

Starting the simulation by inputting in "JointsAndDrivers" file, position start of 45* flexion and then an angular velocity -45 to return to neutral position in 10 steps.

I want a movement path (extension) and then be able to increase the stiffness of the spring to reduce the muscle activity of the body to complete the set motion path.

With my attempts so far with certain low spring stiffnesses it reduces the extensor muscle activity and joint reaction forces, however at slightly higher stiffnesses it increases these measures. This is counter intuitive. For a strong result, I would expect greater stiffness to reduce muscle activity by a greater amount. I think I must be doing something not quite right.

I am applying the spring at the T1C7 joint.

Is there something I should change about this model set up so I can achieve the analysis/result I laid out? In JointsAndDrivers?

Kind regards,
Tim

Hi Tim,

I have briefly looked at your model. I think you are talking starting the head in a 45 degree flexed position and moving it with extension velocity.

I would suggest you can try applying the stiffness on the same measure that you are using to drive the movement of the head. This way you can also use the position of this measure to modulate the stiffness of the spring. When you apply a spring to a single joint like T1C7, it can be hard to understand the consequences since there are several other cervical joints all the way to C1 and the skull.

Best regards,
Dave

Thank you very much for the response Dave. You are correct in how the model works.

One thing though, I actually misspoke above. I do have the spring attached to skullthoraxflexion which is the same way I am driving it. (The visualisation portion of the code referenced the T1C7 joint). When analysing the extensor muscles of the neck. I have found that at 3 N.m/deg I have the largest decrease in Max Muscle Activity and Joint Reaction Forces of the cervical joints. At lower spring stiffnesses the Max Muscle Activity and Joint Reaction Forces increase linearly until they are the same as just the human performing the movement with no spring. What is weird though is that above 3 N.m/deg, the same thing occurs. Rather than helping the movement more, the increased spring stiffnesses increase Max Muscle Activity and Joint Reaction Forces as well until it is the same and then higher than the human performing the movement with no spring. In this way it appears the spring stiffness has an inverse bell curve shaped relationship (or absolute graph shape) with Max Muscle and Joint Reaction forces. I'm wondering if you have any thoughts on why this might be the case?

Something to do with muscle actions? Like you said above could this be because the skullthoraxflexion is a simplified motion of the many neck joints?

Kind regards,
Tim

Hi Tim,

Which muscles are you looking at when you look in the Max muscle activity? I had a look at the SemispinalisCapitis and their activity seems to reduce with increasing stiffness.

As far as joint reaction forces are concerned, they will also be affected by the flexor muscles. If you increase the stiffness too much, you may end up activating the flexor muscles and this may increase the joint reaction force.

I also noticed that you mentioned stiffness as Nm/deg but I hope you are aware that in your code, when you refer to ThorCer.Pos, the output will be in radians.

Best regards,
Dave

Hi Dave,

I have primarily been looking at the semispinalis cervicis as it has consistently had the highest level of muscle activation. Do you have a suggestion for how the activation of this muscle could be lowered?
You're right the impact on the other muscles of the neck has been positive.

Thank you. This makes sense. I will keep it in mind.

Kind regards,
Tim

Hi Tim,

Sorry for the delayed reply!

Unfortunately, I won't be able to give you some great ideas on how to reduce the activation of the semispianlis cervicis. You will have to try a few different ideas and figure it out somehow. And, of course, there are multiple muscles and it could be hard to target specific muscles. What I can suggest is that you watch this webcast on conceptual design of exoskeletons. Maybe you find some inspiration regarding different concepts for the exoskeleton :slight_smile: But I also suppose you would have seen this webcast already.

One other thing I noticed looking at your model again today. You have a support force between the skull and the backrest from the seated model. So, it works like you have a headrest in the model. If this is not the case you are simulating, it will surely affect how the extension assistance will play out.

Best regards,
Dave

Hi Dave,

That sounds like an important observation from you. I didn't know that support force at the skull was there. Could you please let me know where this force is in the code? I would like to change it to zero.

And no worries! Thank you for the response.

Kind regards,
Tim

Hi Tim,

It's located in Model/BackrestSupport.any. I think the object is named SkullSupport.

Best regards,
Dave

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.