how to integrate angle in matlab
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Bhargav Jha
il 18 Ago 2015
Commentato: Bhargav Jha
il 20 Ago 2015
Hi! I have these three state equations:
x_dot = v*cos(alpha);
y_dot = v*sin(alpha);
alpha_dot = lateralAcceleration/v;
I have to integrate these states to get x,y and alpha. I am implementing this on simulink. But I am facing a problem that while integrating the angle alpha goes to a very large number. I need it to be in a certain range such as range of atan2. Is there a way to do it?
I have attached the image which shows my current implementation.
0 Commenti
Risposta accettata
JMP Phillips
il 19 Ago 2015
If alpha_dot is going very large, you could consider filtering or smoothing out the large jumps.
You can put a saturation block in to limit your alpha_dot between lower and upper values: http://au.mathworks.com/help/simulink/slref/saturation.html
Alternatively or additionally you can insert a gain block: alpha_dot = k*lateralAcceleration/v where k is a proportional gain that you can tune such that alpha_dot is within an acceptable range.
After you integrate alpha_dot to get alpha you need to wrap it between -pi and pi or 0 and 2 pi, whatever convention you are using, using mod, e.g.
angle_wrapped = ( mod( (angle-angle_min),(angle_max-angle_min)) +angle_min);
I don't remember if Simulink already has a wrap block, but there is already a wrapToPi function in the mapping toolbox if you have that.
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!