Solving set of coupled non-linear ode using ode45

1 visualizzazione (ultimi 30 giorni)
Hello everyone,
I am tryingt to solve a set of coupled non-linear differential equation using ode45 but i am not getting the desired results. By desired results I mean , setting all the initial conditions to be zero and setting torques for both joints , there should be no change in coordinate or change in velocity of the manipulator in other words if you plot the solution of the ode . It should be a horizontal line parallel to time axis. But this is not the case when i run the code. Given below are the set of equations that i am trying to solve numerically:
Manipulator Dynamics
And this is the code that i am using to solve the above system :
function xdot = DynOde(t,y)
%% init constants;
m1 = 5;
m2 = 2;
a1 = 0.34;
a2 = 0.34;
g = 9.81;
T1 = 0;
T2 = 0;
x1dot = y(2);
x1ddot = (T1*a2 - 2*a2 - 2*a1*cos(y(3)) - a1*a2*g*m1*cos(y(1)) - a1*a2*g*m2*cos(y(1)) + a1*a2^2*m2*sin(y(3))*y(2)^2 + a1*a2^2*m2*sin(y(3))*y(4)^2 + a1*a2*g*m2*cos(y(3))*cos(y(1) + y(3)) + a1^2*a2*m2*cos(y(3))*sin(y(3))*y(2)^2 + 2*a1*a2^2*m2*sin(y(3))*y(2)*y(4))/(a2*(a1^2*m1 + a1^2*m2 - a1^2*m2*cos(y(3))^2));
x2dot = y(4) ;
x2ddot = (T1*a2 - 2*a2 - 2*a1*cos(y(3)) - a1*a2*g*m1*cos(y(1)) - a1*a2*g*m2*cos(y(1)) + a1*a2^2*m2*sin(y(3))*y(2)^2 + a1*a2^2*m2*sin(y(3))*y(4)^2 + a1*a2*g*m2*cos(y(3))*cos(y(1) + y(3)) + a1^2*a2*m2*cos(y(3))*sin(y(3))*y(2)^2 + 2*a1*a2^2*m2*sin(y(3))*y(2)*y(4))/(a2*(a1^2*m1 + a1^2*m2 - a1^2*m2*cos(y(3))^2));
xdot = [x1dot;x1ddot;x2dot;x2ddot];
end
Any advice would be of great help.
Than you.
  2 Commenti
David Goodmanson
David Goodmanson il 3 Gen 2022
Hi Ajai,
what are your initial conditions?
Ajai Singh
Ajai Singh il 3 Gen 2022
To check if the code is working , give [ 0 0 0 0 ] . And if everything thing is fine then the plot of solution of the ode should be horizontal lines parallel to time axis.

Accedi per commentare.

Risposta accettata

David Goodmanson
David Goodmanson il 3 Gen 2022
Hi Ajai,
The angles appear to be measured from the horizontal, not the vertical. That's because the terms involving g use cos(theta) and not sin(theta). So if you put in theta = 0 for the initial conditions, the bars are horizontal. So of course they move due to the torque provided by gravity.
  5 Commenti
David Goodmanson
David Goodmanson il 4 Gen 2022
Hi Ajai,
are you saying that with fixed torques the system should settle down to a static solution? I don't think that follows. You can do it with time-dependent torques, but with constant torques there is still the opportunity for undamped oscillations.
Ajai Singh
Ajai Singh il 4 Gen 2022
Modificato: Ajai Singh il 4 Gen 2022
Thank you so much for the explanation. I get it now.Just to confirm, all that I need to do is : instead of having constant torque, make it a function of time ?

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by