function generate_rb_dynamics(path_to_urdf) % ---------------------------------------------------------------------- % Function generates rigid body dynamics equations, namely M, C matrices % and g vector: M(q) ddq + C(q, dq) dq + g(q) = tau % ---------------------------------------------------------------------- % Parse urdf to get robot description ur10 = parse_urdf(path_to_urdf); % Create symbolic generilized coordiates, their first and second deriatives q_sym = sym('q%d',[6,1],'real'); qd_sym = sym('qd%d',[6,1],'real'); q2d_sym = sym('q2d%d',[6,1],'real'); % ------------------------------------------------------------------------ % Getting gradient of energy functions, to derive dynamics % ------------------------------------------------------------------------ T_pk = sym(zeros(4,4,6)); % transformation between links w_kk(:,1) = sym(zeros(3,1)); % angular velocity k in frame k v_kk(:,1) = sym(zeros(3,1)); % linear velocity of the origin of frame k in frame k g_kk(:,1) = sym([0,0,9.81])'; % vector of graviatational accelerations in frame k p_kk(:,1) = sym(zeros(3,1)); % origin of frame k in frame k for i = 1:6 jnt_axs_k = str2num(ur10.robot.joint{i}.axis.Attributes.xyz)'; % Transformation from parent link frame p to current joint frame rpy_k = sym(str2num(ur10.robot.joint{i}.origin.Attributes.rpy)); R_pj = RPY(rpy_k); R_pj(abs(R_pj)