The output value of discrete PID controller is NaN

15 visualizaciones (últimos 30 días)
lim daehee
lim daehee el 19 de Mayo de 2020
Comentada: Zheng Zhang el 8 de Sept. de 2023
I'm trying to control motors with pwm signals.
when I clicked monitor & tune button, I found some outputs of discrete PID controller block is NaN. It is stated below.
Other input from same bus, yawspeed, generate normal value, however, pitch and roll angles have nan value.
I first thought that the problem is from the difference of data type.. so I checked data types of all inputs and outputs and there are no problems with data types.
Is there anyone who know why the nan value is generated?
  2 comentarios
Ameer Hamza
Ameer Hamza el 19 de Mayo de 2020
Try to monitor the input of PID blocks. Are the input values finite?
lim daehee
lim daehee el 19 de Mayo de 2020
Nope, I monitored all values including input of PID blocks, however, they are all not inf or nan and it ranges from -0.02~0.02
The output saturation is limited from -0.1~0.1.
Additionally, I changed inputs(pitch_angle, roll_angle)into constant block with a constant value and the model works fine.
However, when inputs are from uORB block, the output of PID block has nan valeu.

Iniciar sesión para comentar.

Respuestas (3)

Ankur Bose
Ankur Bose el 28 de Sept. de 2021
Answered the same question here
https://www.mathworks.com/matlabcentral/answers/527384-i-gain-of-pid-controller-has-nan-value-simulink
  2 comentarios
勇刚 张
勇刚 张 el 19 de Mayo de 2022
This method can solve the problem
  1. Ensure that initial inputs are not NaN. in PX4 thing might happen when you are trying to read from vehicle attitude connected to rotation block. Initially the estimator might not have started which caues attitude not to be published and hence uORB block retutns [0 0 0 0] as quat which are invalid and hence rotation block computes NaN and passes to PID. Eventually this might be fixed but PID will still store NaN.
  2. Reset the PID block using and external signal when values are stored
Zheng Zhang
Zheng Zhang el 8 de Sept. de 2023
您好,能详细说一下您是怎么解决的吗?

Iniciar sesión para comentar.


Jonas
Jonas el 19 de Mayo de 2020
Check the block 'Rotation Order: ZYX'. Does it work properly?
  1 comentario
lim daehee
lim daehee el 19 de Mayo de 2020
Editada: lim daehee el 19 de Mayo de 2020
I changed pid controller into p controller and it works fine. So I think rotation order worked well. Also, I think d and i controller is the problem, but I don't know why d and i gain caused the problem.

Iniciar sesión para comentar.


Kunal Lad
Kunal Lad el 31 de Jul. de 2020
Hey Lim Daehee,
Did you find the solution to this problem as I am facing it too. Share up if possible.
Thanks.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by