elbow flexion moment exo

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
dani mendez
Posts: 24
Joined: Tue Aug 07, 2018 1:40 am

elbow flexion moment exo

Post by dani mendez » Tue Mar 17, 2020 12:05 pm

Hi, I'm trying to see how using an exoskeleton when doing a flexion / extension movement affects the elbow, the problem is that when modifying the spring stiffness, I always get the same torque at the elbow.
exo.png
exo.png (60.61 KiB) Viewed 596 times
elbow flexion moment.png
elbow flexion moment.png (14.69 KiB) Viewed 596 times
Logically, by modifying the spring stiffness, you should get a different torque at the elbow, but that doesn't happen. Does anyone have any idea what is going on?

Thank you

Tags:

User avatar
Thomas Uchida
Posts: 1776
Joined: Wed May 16, 2012 11:40 am

Re: elbow flexion moment exo

Post by Thomas Uchida » Tue Mar 17, 2020 12:41 pm

Logically, by modifying the spring stiffness, you should get a different torque at the elbow, but that doesn't happen. Does anyone have any idea what is going on?
How are you generating your simulations? If you are running the Inverse Dynamics Tool, then the behavior you are seeing does make sense: the net joint moments required to track the specified kinematics would not change if you change the spring stiffness (unless you also change the kinematics that are being tracked).

User avatar
dani mendez
Posts: 24
Joined: Tue Aug 07, 2018 1:40 am

Re: elbow flexion moment exo

Post by dani mendez » Wed Mar 18, 2020 4:29 am

I do the IK first and then the ID. After modifying the stiffness of the spring, I carry out a new study of IK and ID, saving it in different files and comparing the moment of flexion in the elbow, resulting in that they are exactly the same, which I do not understand, according to which the kinematics does not vary, but the forces for dynamic study if they should vary and a different elbow flexion moment should be obtained, right?

User avatar
Thomas Uchida
Posts: 1776
Joined: Wed May 16, 2012 11:40 am

Re: elbow flexion moment exo

Post by Thomas Uchida » Thu Mar 19, 2020 6:57 am

If the motion you are tracking with IK is not changing, then the IK results will not change. Similarly, if the kinematics do not change, then the net joint moments computed by ID will not change.

User avatar
dani mendez
Posts: 24
Joined: Tue Aug 07, 2018 1:40 am

Re: elbow flexion moment exo

Post by dani mendez » Tue Mar 24, 2020 5:33 am

I don't understand your reasoning. The kinematic study is always the same, but the dynamic study should change when modifying the spring stiffness, since the external forces applied to the model vary. It is not possible that the moment supported by the elbow is always the same when I modify the conditions of the spring. The problem is that I can't find where the failure may be.

User avatar
Thomas Uchida
Posts: 1776
Joined: Wed May 16, 2012 11:40 am

Re: elbow flexion moment exo

Post by Thomas Uchida » Wed Mar 25, 2020 7:51 pm

I'm also not sure about this: I added a SpringGeneralizedForce to the arm26 model and the computed net joint moments changed. I can help you investigate if you upload an example that demonstrates the issue.

User avatar
Thomas Uchida
Posts: 1776
Joined: Wed May 16, 2012 11:40 am

Re: elbow flexion moment exo

Post by Thomas Uchida » Wed Mar 25, 2020 8:00 pm

By the way, please check the "forces_to_exclude" property in your Inverse Dynamics Tool setup file:

Code: Select all

<InverseDynamicsTool>
    ...
    <!--List of forces by individual or grouping name (e.g. All, actuators, muscles, ...) to be excluded when computing model dynamics. 'All' also excludes external loads added via 'external_loads_file'.-->
    <forces_to_exclude />
    ...
</InverseDynamicsTool>

User avatar
dani mendez
Posts: 24
Joined: Tue Aug 07, 2018 1:40 am

Re: elbow flexion moment exo

Post by dani mendez » Thu Mar 26, 2020 5:34 am

Hi, thanks for your response. As forces excluded are only the muscles, so the spring must act. It occurs to me that to connect the exoskeleton to the arm I have used a ConstraintSet. Can it not transmit the force generated by the spring to the arm because of that?

Thank you

Code: Select all

			<WeldConstraint name="weldconstraint">
					<!--List of components that this component owns and serializes.-->
					<components />
					<!--Flag indicating whether the constraint is enforced or not.Enforced means that the constraint is active in subsequent dynamics realizations. NOTE: Prior to OpenSim 4.0, this behavior was controlled by the 'isDisabled' property, where 'true' meant the constraint was not being enforced. Thus, if 'isDisabled' is'true', then 'isEnforced' is false.-->
					<isEnforced>true</isEnforced>
					<!--Path to a Component that satisfies the Socket 'frame1' of type F (description: The first frame participating in this linker.).-->
					<socket_frame1>placa_ulna_02_offset</socket_frame1>
					<!--Path to a Component that satisfies the Socket 'frame2' of type F (description: The second frame participating in this linker.).-->
					<socket_frame2>ulna_offset</socket_frame2>
					<!--Frames created/added to satisfy this component's connections.-->
					<frames>
						<PhysicalOffsetFrame name="placa_ulna_02_offset">
							<!--The geometry used to display the axes of this Frame.-->
							<FrameGeometry name="frame_geometry">
								<!--Path to a Component that satisfies the Socket 'frame' of type Frame.-->
								<socket_frame>..</socket_frame>
								<!--Scale factors in X, Y, Z directions respectively.-->
								<scale_factors>0.20000000000000001 0.20000000000000001 0.20000000000000001</scale_factors>
							</FrameGeometry>
							<!--Path to a Component that satisfies the Socket 'parent' of type C (description: The parent frame to this frame.).-->
							<socket_parent>/bodyset/placa_ulna_02</socket_parent>
							<!--Translational offset (in meters) of this frame's origin from the parent frame's origin, expressed in the parent frame.-->
							<translation>0 0 -0.10000000000000001</translation>
							<!--Orientation offset (in radians) of this frame in its parent frame, expressed as a frame-fixed x-y-z rotation sequence.-->
							<orientation>0 0 0</orientation>
						</PhysicalOffsetFrame>
						<PhysicalOffsetFrame name="ulna_offset">
							<!--The geometry used to display the axes of this Frame.-->
							<FrameGeometry name="frame_geometry">
								<!--Path to a Component that satisfies the Socket 'frame' of type Frame.-->
								<socket_frame>..</socket_frame>
								<!--Scale factors in X, Y, Z directions respectively.-->
								<scale_factors>0.20000000000000001 0.20000000000000001 0.20000000000000001</scale_factors>
							</FrameGeometry>
							<!--Path to a Component that satisfies the Socket 'parent' of type C (description: The parent frame to this frame.).-->
							<socket_parent>/bodyset/ulna</socket_parent>
							<!--Translational offset (in meters) of this frame's origin from the parent frame's origin, expressed in the parent frame.-->
							<translation>0 -0.089999999999999997 0</translation>
							<!--Orientation offset (in radians) of this frame in its parent frame, expressed as a frame-fixed x-y-z rotation sequence.-->
							<orientation>0 0 0</orientation>
						</PhysicalOffsetFrame>
						

POST REPLY