petercorke / robotics-toolbox-matlab

Robotics Toolbox for MATLAB
GNU Lesser General Public License v2.1
1.29k stars 444 forks source link

The Panda model DH parameters do not seem to be correct #62

Closed vpadois closed 4 years ago

vpadois commented 5 years ago

Dear Peter,

First thanks for this great toolbox which I have been using for years.

After playing around with the panda model, the DH parameters as defined in the mdl_panda.m file seem to be wrong. They are actually different from the source you cite (http://www.diag.uniroma1.it/~deluca/rob1_en/WrittenExamsRob1/Robotics1_18.01.11.pdf) and using the parameters provided in table 1 of this document, the model end-up being correct.

Let me know if I can further help.

best regards Vincent Padois

petercorke commented 5 years ago

The parameters I've used seem to have come from https://frankaemika.github.io/docs/control_parameters.html but this page is not completely clear about whether it uses standard or modified DH. The U.Roma page is clear, by the subscripts, that it is standard DH which is what RTB defaults to.

petercorke commented 5 years ago

The mdl_panda file has been updated and on a few spot checks seems correct. Would be happy for additional checking. Also now includes all rigid-body inertial parameters.

vpadois commented 5 years ago

I went through your file and some of the dynamic parameters do not correspond to what can be found here : https://github.com/marcocognetti/FrankaEmikaPandaDynModel/blob/master/pdf/RA-L_2019_PandaDynIdent_SUPPLEMENTARY_MATERIAL.pdf (see last page).

I think the attached file fixes this. mdl_panda.m.zip

petercorke commented 4 years ago

Specifically, which dynamic parameters do you think are wrong? One of the authors sent me the LaTeX source of that supplementary material and I scripted the parameter extraction from that. It seems to me that you have the 6 inertial parameters in the wrong order for RTB, the manual says:

The 3 diagonal elements come first, then the products.

vpadois commented 4 years ago

I actually followed the convention of the RBT when I first created the model but I did not understand correctly the information from one of the authors of the paper. At that time the supplementary material paper was not online yet and I extracted the parameters from some C++ code that was available on the same github repo (that C++ code is no longer there).

Anyway, when I compared both models weeks later I had forgotten about all this and my interpretation of the mismatch was wrong.

Conclusion: my bad, your version is correct.