According to https://frankaemika.github.io/docs/control_parameters.html, the link 7's parameter "d" should be zero, which was however defined to be 0.107 in mdl_panda(). In the following, I'm writing to verify the correctness of mdl_panda().
In mdl_panda().m, the robot is created using the function revolutemdh(). After reading rne_mdh.m, I understand that the "d" parameter of link $i$ is used for defining the transformation matrix
${}^{i-1}{T}_i$
between frame $i-1$ and $i$. For example, "L1" in mdl_panda() gives us ${}^{0}T_1$, consistent with numbering of links in https://frankaemika.github.io/docs/control_parameters.html. But "L7" however is not consistent as "d" is 0.107. I wasn't sure if anywhere I didn't understand correctly using the function revolutemdh and I was wondering if the inertia matrix and center of mass parameters were referred to $i-1$ or $i$-frame when using the function revolutemdh, since in the description of Link.m, it says in line 673, "T=L.A(Q)" tells the transformation from current frame to the next frame. I was confused current frame with $i$ and next frame with $i+1$ for a while until I found that this line of description of current and next frames are not relevant at all to the frame numbering...
Anyway, I found that the inertia matrix and center of gravity should be referred in the frame $i$ because:
Line 134 of rne_mdh.m implied that the angular velocity w was calculated and referred in the frame $i$.
w = ${}^{i}\omega_i$
and from line 154 to 157, the center of mass and inertia matrix were used to operate with this ${}^{i}\omega_i$. It only makes sense two vectors referred in the same frame performing the cross product and so on.
So if Link7, or L7, is created with d=0.107, then it means it defines a wrong transformation matrix
${}^{6}{T}_7$
and a wrong frame 7. Since the center of gravity and inertia matrix were referred to frame 7, it gives wrong results.
According to https://frankaemika.github.io/docs/control_parameters.html, the link 7's parameter "d" should be zero, which was however defined to be 0.107 in mdl_panda(). In the following, I'm writing to verify the correctness of mdl_panda().
In mdl_panda().m, the robot is created using the function revolutemdh(). After reading rne_mdh.m, I understand that the "d" parameter of link $i$ is used for defining the transformation matrix
${}^{i-1}{T}_i$
between frame $i-1$ and $i$. For example, "L1" in mdl_panda() gives us ${}^{0}T_1$, consistent with numbering of links in https://frankaemika.github.io/docs/control_parameters.html. But "L7" however is not consistent as "d" is 0.107. I wasn't sure if anywhere I didn't understand correctly using the function revolutemdh and I was wondering if the inertia matrix and center of mass parameters were referred to $i-1$ or $i$-frame when using the function revolutemdh, since in the description of Link.m, it says in line 673, "T=L.A(Q)" tells the transformation from current frame to the next frame. I was confused current frame with $i$ and next frame with $i+1$ for a while until I found that this line of description of current and next frames are not relevant at all to the frame numbering...
Anyway, I found that the inertia matrix and center of gravity should be referred in the frame $i$ because:
Line 134 of rne_mdh.m implied that the angular velocity w was calculated and referred in the frame $i$.
w = ${}^{i}\omega_i$
and from line 154 to 157, the center of mass and inertia matrix were used to operate with this ${}^{i}\omega_i$. It only makes sense two vectors referred in the same frame performing the cross product and so on.
So if Link7, or L7, is created with d=0.107, then it means it defines a wrong transformation matrix
${}^{6}{T}_7$
and a wrong frame 7. Since the center of gravity and inertia matrix were referred to frame 7, it gives wrong results.
I verified this by writing a simple matlab file, just comparing the joint torque given random q, qd, qdd with https://github.com/marcocognetti/FrankaEmikaPandaDynModel/tree/master/matlab/dyn_model_panda, with d=0 and d=0.107. When d=0, there was less error.