MATLAB: SimMechanics Inverse and Forward Dynamics

inverse forward dynamicssimmechanicsSimscape Multibodysimulink

Hello everyone,
I beg your help, because I've been fighting this problem for more than a week without any particular result…
So, I have a Simulink block-diagram representing 5-links with 5 revolute joints robot-manipulator. First I solve Inverse Dynamics, motion is given to the model as a Nx3 vector with motion, velocity and acceleration, N – is number of steps. Normally I take 1 sec time period with 100 steps. In a simpliest case motion is rotation of 1st joint for pi/2 radians with acceleration within first 0.1 sec, constant motion within interval [0.1, 0.9], and decelearation within last 0.1 sec.
The result of Inverse Dynamics is a portion of computed torques on every joint. This part of simulation goes smoothly. Next I want to perform Forward Dynamics with torques I recieved in previous step, just to check if model works well. And here I have a problem. Results of Forward Dynamics do not match initial motion I set in the beginning, although if I put a sensor on a joint drawing torques, the torques on output match torques on input. So I quess that everything should work… But it doesn't.
Please someone help me. Many thanks in advance.
PS: Here is the link for the model (for a reduced model actually – only 3 joints).
File Initial_motion.mat contains Nx3 vector of motion for the first joint. Load this file first. File robomy_q123 contains simulink model for Inverse Dynamics. After running it, run file Q_fnc.m, which converts torques in function of time. Than run Simulink file robomy_q123_torq, which solves Forward dynamics.
Maybe it would help.

Best Answer

You won't generally get a similar motion when applying torques measured from inverse dynamics. Since torque is 2 levels of integration from position, a very small difference (within the solver and assembly tolerance) will quickly make the position drift away.
Depending on the stability of the system, the difference in results will change significantly. In these example models, if you remove gravity in both models, the system becomes stable and only drifts by a fraction of a degree.