EN RU CN
System analysis tool: plant response with/without encoders enabled
  • When running plant-only tests on my gimbal setup, I'm getting different Bode plots based on whether I am utilizing the encoder or not.

    When I am NOT utilizing the encoder, I get a plot which looks "correct" to me:
    The gain response starts around 0 dB, stays flat for a while, peaks to 8 dB around 35 Hz (perhaps a resonant response?), and then drops off with a fairly consistent slope
    The phase response starts around -25 deg, stays relatively flat until around 35 Hz where it drops to around -55 deg, and then continues to fall with fairly consistent slope

    When I am utilizing the encoder, the graph prior to 35 Hz looks quite different:
    The gain response starts around 18 dB, stays pretty flat until about 6 Hz, then has a fairly constant negative slope (almost overlapping the non-encoder graph after 35 Hz)
    The phase response starts around -39 deg, has a slight increase until 9 Hz and then decreases fairly constantly (pretty much overlapping the non-encoder graph after 35 Hz)

    Does using the encoder change my system response because the gimbal controller is in the Field Oriented Control mode? Should I be disabling the encoder before running any system tests?
  • 1) First of all, I advise to upgradeto version 2.68b7 (both firmware and GUI) - the Bode plot was slightly rewritten there. Prior to this, it was error in phase, as I remember.

    2) The response with encoders should not differ much from response w/out encoders. Motor control algorithms differ a lot, but they are equalized such way that you do need to change PID settings when switching from one to another, so I assume that both plant responses should match pretty closely. But I did not made such comparision.

    3) In any case, you should make a test with encoders, as I assume you will use gimbal in this mode all the time.
  • Thanks for the advice AlexMos. I'm now using the latest firmware and GUI.

    Regardless of whether I use an exponential sine sweep or white noise to probe my system I get the same results: having the encoder enabled vs. disabled changes the freq. response.

    I have not yet eliminated all of the friction in my gimbal, so I'm thinking that may have something to do with why my plant response looks significantly different below 30 Hz.

    I have a few more follow-up questions (I hope its not too much! I really appreciate your feedback)

    1) I know you use Field Oriented Control when the encoder is enabled, but what control algorithm is used when the encoder is disabled?

    2) I read in the manual (Sys. Analysis Tool > Open-loop vs. Closed-loop Test) that, to prevent over-saturation or making the system go outside its working range, there is some portion of feedback even in "open-loop" tests. What is this feedback and does it mean the Plant and Open-loop tests cannot be used for system identification?

    3) When I open my test data in MATLAB and look closer at the time-series plot, the stimulus signal looks quite different at low frequencies (the "encoder" stimulus signal looks distorted). Is the logged stimulus data the target stimulus or the actual applied stimulus?
  • Hi AlexMos,

    I know you are a busy guy and my original questions may have been a bit too probing, but wanted to follow-up and see if there is any feedback you can give.

    I'm interested in learning more about what control scheme you use when the encoders are not in use (I know you can't give away proprietary details, but any general information would be appreciated).

    If you can also share high-level information on the programming of the freq-response tests that would be very helpful. Specifically, I am wondering if the program switches to measuring the system response with the encoder (instead of the IMU) when enabled. The scale of the response signal in MATLAB is orders of magnitude larger when the encoder is used (I'm using a 14-bit encoder). I think this "larger" measured response is prematurely limiting the applied stimulus, disrupting my tests. Is this possible?