Hi,
I would like to apply segmental kinematic optimisation such as Sodervisk, Cheze etc to calculate joint kinematics. I know how to specify a 6 DoF joint between two segments but how do I apply the above algorithms? Are there any use cases or examples?
Thanks
Segmental kinematic optimisation
- Radhakrishnan Vignesh
- Posts: 104
- Joined: Tue Jun 01, 2021 8:09 am
- Ton van den Bogert
- Posts: 167
- Joined: Thu Apr 27, 2006 11:37 am
Re: Segmental kinematic optimisation
When you have 6-dof joints, OpenSim's inverse kinematics will give you exactly the same solution as those algorithms you mention. They all use a least-squares fit of marker positions.
Ton van den Bogert
Ton van den Bogert
- Radhakrishnan Vignesh
- Posts: 104
- Joined: Tue Jun 01, 2021 8:09 am
Re: Segmental kinematic optimisation
Hello Ton van den Bogert,
Thanks for the reply. Just to confirm IK would give a similar residual error and rotation matrix compared to if you use a svd or eigen value method if the joints are 6 dof?
Thanks
Thanks for the reply. Just to confirm IK would give a similar residual error and rotation matrix compared to if you use a svd or eigen value method if the joints are 6 dof?
Thanks
- Ton van den Bogert
- Posts: 167
- Joined: Thu Apr 27, 2006 11:37 am
Re: Segmental kinematic optimisation
Yes, absolutely it will be the same result in all respects.
You could verify this with some simple test data (one frame, one bone with 3 markers). Let me know if you need code for the SVD and eigenvalue methods. SVD and eigenvalue methods also give the same answer, but the eigenvalue method is somewhat more sensitive to very poor marker sets (i.e. all markers nearly placed on a line).
You could verify this with some simple test data (one frame, one bone with 3 markers). Let me know if you need code for the SVD and eigenvalue methods. SVD and eigenvalue methods also give the same answer, but the eigenvalue method is somewhat more sensitive to very poor marker sets (i.e. all markers nearly placed on a line).
- Radhakrishnan Vignesh
- Posts: 104
- Joined: Tue Jun 01, 2021 8:09 am
Re: Segmental kinematic optimisation
If it is possible to share the code, it would be really helpful.
I rewrote aspects of pycgm2 in MATLAB for my application but the results are not very consistent so I was trying to use Simbody (via OpenSim) for the same.
Thanks
I rewrote aspects of pycgm2 in MATLAB for my application but the results are not very consistent so I was trying to use Simbody (via OpenSim) for the same.
Thanks
- Ton van den Bogert
- Posts: 167
- Joined: Thu Apr 27, 2006 11:37 am
Re: Segmental kinematic optimisation
I have attached my Matlab implementation of the SVD method.
Also a Fortran code for the eigenvalue method. I have once (a long time ago) verified that both give the same result unless the marker configuration is almost on a line.
Ton
Also a Fortran code for the eigenvalue method. I have once (a long time ago) verified that both give the same result unless the marker configuration is almost on a line.
Ton
- Attachments
-
- DISP3DB_FORTRAN.txt
- (7.32 KiB) Downloaded 27 times
-
- hmc3_soder.m.txt
- (1.61 KiB) Downloaded 34 times
- Radhakrishnan Vignesh
- Posts: 104
- Joined: Tue Jun 01, 2021 8:09 am
Re: Segmental kinematic optimisation
Thanks a lot
Vignesh
Vignesh
- Radhakrishnan Vignesh
- Posts: 104
- Joined: Tue Jun 01, 2021 8:09 am
Re: Segmental kinematic optimisation
Hello Ton,
Sorry to disturb but I have a question regarding the IK process. Specifically, I am interested in the residual error of the IK process, whether using SVD or using global optimisation. I would like to know:
1) How are the joint angles determined when we use global optimisation such as applied in OpenSim? Do we still determine the transformation matrix of each segment and determine the relative rotation?
2) I would like to ask a question regarding pycgm2 since I have read some of your comments in their github page. In CGM version >2.3, opensim is integrated. But SVD is again applied to the new marker locations determined using opensim's IK. Do you know the reasoning behind this? How would this differentiate between joint angles calculated using OpenSim alone? Is there any benefit to this?
Thanks
Sorry to disturb but I have a question regarding the IK process. Specifically, I am interested in the residual error of the IK process, whether using SVD or using global optimisation. I would like to know:
1) How are the joint angles determined when we use global optimisation such as applied in OpenSim? Do we still determine the transformation matrix of each segment and determine the relative rotation?
2) I would like to ask a question regarding pycgm2 since I have read some of your comments in their github page. In CGM version >2.3, opensim is integrated. But SVD is again applied to the new marker locations determined using opensim's IK. Do you know the reasoning behind this? How would this differentiate between joint angles calculated using OpenSim alone? Is there any benefit to this?
Thanks