@bnsgeyer (Bill Geyer) posted a new topic, subject "Multicopter/Helicopter Frequency Domain Characterization for Control Law Development". It read:

   @Leonardthall had mentioned his desire to start characterizing both multicopters and helicopters in the frequency domain. I am opening this topic to be the discussion thread for those participating in this characterization work.
    
    Leonard was looking to provide a number of excitation signals to include Chirp function, sinusoide stepped in frequency and Maximal length BPSK sequence. I have incorporated a chirp function in Copter 3.5.3. I was able to run some test flights with my Ergo flybarred heli and get some frequency response data.
    
    Aircraft and Setup  
    Ergo .46 converted to electric  
    E-flite 700 heli motor  
    Castle Creation 80Amp 50VDC ESC  
    12s 5000mAh Lipo batteries  
    rotorspeed: 1800 RPM  
    blades: 600mm  
    rotorhead: Miniature Aircraft X-cell 30 2 bladed flybarred head  
    weight: 10.5 lbs  
    swashplate servos: Futaba 3050 digital servos
    
    Here is a graph of the input chirp function and the output to the mixer. It increased in frequency from 1 to 60 rad/sec over 90 seconds with an amplitude of 0.08 on Rout.  
    
    
    input.jpg1920×333 97.7 KB
    
    So I conducted the chirp in both the pitch and roll axes. The data was collected at 400 hz using the fast ATT logging bit. I had added the sweep as a signal that was logged with the RATE data. The data was processed using the Student version of CIFER. I had it down sample the data to 250hz for the analysis.  
    Here is the bode plot for the pitch axis  
    
    
    Ergo_freq_resp_pitch.jpg930×702 93.8 KB
    
    Here is the bode plot for the roll axis  
    
    
    Ergo_freq_resp_roll.jpg930×702 92.8 KB
    
    It is interesting to see the hump in the top plot (gain plot) in both axes which is indicative of a lightly damped oscillatory mode. so if the controller was to drive the aircraft at that frequency then you could see some oscillations. It can also be noted that the roll axis has a greater bandwidth (follows your inputs up to higher frequencies) than the pitch axis which is expected. One of my questions is whether the magnitude and phase drop at higher frequencies is due to the servo or the aircraft. I don't know what the frequency response of these servo are.
    
    So I have a Y6 multicopter and I am interested to see how frequency response compares to these.

To which @Leonardthall (Leonard Hall) replied

    I hit the heart 5 times but it kept going on and off 
    
    There is a problem with your graphs though. It looks like the program has not factored in the magnitude of the input signal and you are getting 40 dB gain when it should be more like 0.5 dB.
    
    For stability the bode plot should be going negative in magnitude when the phase goes through 180. If it doesn't then it will be shaking!
    
    Great work!!
    
    Edit:
    
    Ok, I looked at the code. You have allowed the user to choose either rate request, or output to the mixers as the input location. NICE! To make it generic I will try to let it also go to the angle request.
    
    Starting with using the 400 Hz logging (or the rate controller loop frequency) functionality is a good starting point. We can always enable RAW logging to look at step responses at higher frequencies but I doubt there will be much information to learn there as I don't think we have the ability to excite a response up there yet.
    
    I will need to chat to Randy about how to best structure this so we can make the characterisation a separate library and drive it all using an Autotune like mode.

Then @bnsgeyer (Bill Geyer) said

    Leonardthall:
    
    > There is a problem with your graphs though. It looks like the program has not factored in the magnitude of the input signal and you are getting 40 dB gain when it should be more like 0.5 dB.
    
    I believe this is a scaling issue. I didn't scale the Rout signal to what that translates to in blade cyclic angle. I think if it was properly scaled then the gain plot would make more sense.

To which @Leonardthall (Leonard Hall) replied

    Right, you were using the direct output excitation, I was assuming you were using the Rate excitation.
    
    Cool, very cool

To which @bnsgeyer (Bill Geyer) replied

    @Leonardthall I loaded my custom firmware with the automated chirp on my Y6. I got a few flights completed and successfully flew pitch and roll chirps. Unfortunately I didn't set the log_bitmask correctly and the data rate was too slow. So I have to refly and analyze the data. Hope to get to it next week.

After which, @bnsgeyer (Bill Geyer) added

    I had the opportunity to conduct some frequency response testing this morning on a 3D Robotics Y6 multicopter. Here are the specs on this aircraft.  
    weight: 4.2 lbs  
    engines: six SunnySky 2830-12 850kv  
    propellers: APC 10X4.7  
    battery: Thunder Power Pro Lite+ Power Series 14.8V 4s 4,400mAh lithium polymer battery
    
    The chirp was set up to run 100 seconds and vary frequency from 1 to 80 rad/s with an amplitude of 0.1 on Rout and Pout. The data was collected at 400 hz using the fast ATT logging bit. The data was processed using the Student version of CIFER. I had it down sample the data to 250hz for the analysis.  
    Here is the bode plot for the pitch axis  
    
    
    Y6pitch_freq_resp.jpg1135×878 105 KB
    
    Here is the bode plot for the roll axis  
    
    
    Y6roll_freq_resp.jpg1135×878 105 KB
    
    @Leonardthall even though I ran the frequency sweep from 1 rad/s through 80 rad/s, you can see that I have poor coherence up to about 4 rad/s. I'm not sure why that is. I did make some inputs to keep the aircraft from getting too far away from me. Also is this really representing raw aircraft dynamics or is there some feed forward shaping that you are doing in the motors class? Do I need to change any of the MOT parameters that may affect getting the raw aircraft dynamics?  
    Thoughts? Is this what you expected for a frequency response?

So @Leonardthall (Leonard Hall) replied

    So there are a couple things going on her. First up for the lower frequencies the attitude controller is can cancelling your excitation function. This is probably why your coherence is poor at lower frequencies. Keep in mind that 10 rad/s is 3 Hz. So you are not really interested in much below 3 rad/s or half way along the graph.
    
    This is why I felt we needed to enable the excitation signal to be applied to the angle, rate, or RPYTout. For example, if we apply the excitation to angle then we will get great definition at the lower frequencies because the attitude loop will ensure we get maximum output rather than minimum. The problem with using the angle as the input is the filtering will prevent characterisation at the high frequencies because the filtering will attenuate the signal. It is worth noting that at very low frequencies we will still have poor coherence because the outputs must be kept very small or we will flip over.
    
    So what you have here looks like a good representation of the upper control band and out of control band range. If you passed this into the angle instead I would expect to see the phase increase up to 0 and the coherence be better down lower. It is interesting looking at the crossover of 180 degrees at 6 Hz. I have never seen that measured before!
    
    The other thing we should look at is comparing this to the raw logging output of the IMU so we are not effected by the IMU filters. The IMU filters at 20 Hz will provide a significant phase offset at 6 Hz still.

Then @Leonardthall (Leonard Hall) said

    Could you give me a link to that Y6 log?

After which, @bnsgeyer (Bill Geyer) added

    Here Is the log. https://drive.google.com/open?id=1NhtHbkGEI4Ja0gKea3E2YLxWXdNJe7vn

After which, @Leonardthall (Leonard Hall) added

    Hi Bill,
    
    Why is the desired roll changing in the logs?
    
    I thought you put the excitation into the Roll_out.

So @bnsgeyer (Bill Geyer) replied

    Leonardthall:
    
    > Why is the desired roll changing in the logs?
    
    Ok. So in my haste I had the wrong input type. It was for a disturbance rejection analysis. So what I have is still a good analysis of the raw dynamics of the aircraft but as you pointed out the control system was modifying the input and causing the coherence to be low. It is tough trying to get flights in during the week since it is winter and it gets dark before I get home from work so it is difficult squeezing in flights during the week. So I will try this again later this week. I'm curios to see what the low frequency looks like.  
    By the way, this input type makes the sweep input to the attitude signal going into the attitude controller. So you can do your analysis looking at the input to the attitude controller.

After which, @bnsgeyer (Bill Geyer) added

    So I used the correct setting and got much better coherence at the lower frequencies.
    
    Here is the frequency response for Pitch  
    
    
    Y6pitch_freq_resp.jpg1135×878 98.3 KB
    
    And here is the frequency response for roll  
    
    
    Y6roll_freq_resp.jpg1135×878 98 KB
    
    I really thought that multi's were more acceleration response (phase of -90) throughout the low frequency regime but this is showing that they have a phase closer to -180 deg.
    
    Here is a link to the .bin file  
    drive.google.com
    
    ### 2017-12-14 22-51-10.log
    
    Google Drive file.

After which, @Leonardthall (Leonard Hall) added

    bnsgeyer:
    
    > I really thought that multi's were more acceleration response (phase of -90) throughout the low frequency regime but this is showing that they have a phase closer to -180 deg.
    
    I believe they do and the problem is the excitation does not have enough resolution at the lower frequencies and there is distortion due to start up. I don't think your results are accurate below 5 rad/s.
    
    This is where the design of the sweep is important. By using a linear chirp you get increasing SNR at the higher frequencies at the expense of the lower frequencies. By chirping at a rate proportional to the frequency the SNR will be constant until the control loops cancel things out at the lower end.
    
    So at low frequencies you have a low SNR because of the short time relative to a period you spend on those frequencies and the cancellation of those frequencies by the control loop.

So @bnsgeyer (Bill Geyer) replied

    Leonardthall:
    
    > I believe they do and the problem is the excitation does not have enough resolution at the lower frequencies and there is distortion due to start up. I don't think your results are accurate below 5 rad/s.
    
    Ok. Interesting. Well I thought the coherence would speak to the quality of the signal and whether there was enough SNR. Well what I'll do is perform another chirp that will be 100 seconds long and go from 1 rad/s to 6 rad/s. I'll also increase the amplitude to make sure there is enough SNR.
    
    So I've been using multiple windows for the FFT's in CIFER and it has a feature that combines the FFT's with different windows. At this point I've been doing 20 sec, 10 sec and 5 sec windowing. Then I have it combine the spectral results to one composite spectral analysis result.
    
    Also you had mentioned the effect of the 20 hz LPF on the rate signal on the results of the analysis. Should I filter the input at 20 hz before doing the analysis to negate the effect of the LPF on the rate signal?

So @Leonardthall (Leonard Hall) replied

    bnsgeyer:
    
    > Well I thought the coherence would speak to the quality of the signal
    
    Yeh, I am not familiar with that software so I don't know what that represents.
    
    bnsgeyer:
    
    > Should I filter the input at 20 hz before doing the analysis to negate the effect of the LPF on the rate signal?
    
    You could do that. I intended to just take the raw IMU data before filtering. So you could turn on RAW logging and use that. You would need to downsample the data though.

To which @Leonardthall (Leonard Hall) replied

    Leonardthall:
    
    > So at low frequencies you have a low SNR because of the short time relative to a period you spend on those frequencies and the cancellation of those frequencies by the control loop.
    
    I don't think this is true in a power sense but I think it does relate to the ability to measure phase. I will need to go into the maths more.
    
    Sorry.

Then @bnsgeyer (Bill Geyer) said

    From what I know about spectral analysis coherence is the goodness of how well the output correlates with the input. Typically, any value above 0.6 is considered good correlation. A value of 1 indicates perfect correlation. I would imagine you know this. As for the accuracy of the phase, I guess good correlation doesn't necessarily guarantee accurate phase estimation. I will still plan to get the data for the low frequency range. Hopefully that will shed some light on this.

After which, @Leonardthall (Leonard Hall) added

    bnsgeyer:
    
    > I would imagine you know this.
    
    You imagine wrong 
    
    I assume it is referring to magnitude-squared coherence though:  
    https://en.wikipedia.org/wiki/Coherence_(signal_processing)
    
    I will have to work through the maths to understand what it does and does not tell us. There is always something else to learn…

@bnsgeyer (Bill Geyer) replied

    Leonardthall:
    
    > There is always something else to learn…
    
    So True! I will be taking a course in January on CIFER. Part of it is learning how to determine a lower order system from the spectral analysis results.

After which, @olliw42 (OlliW42) added

    I think the first chapter “Definition and Formulation” of the given link says it all about the coherence
    
    I think you would want to find a means to have error bars on your data in the plots. E.g. in the data plots in the first post, the reason for the drop in coherence at low freq can IMHO be very clearly seen: from the Bode plots its clear it's due to a drop in magntiude, and when you look into the data trace one clearly can see lots of noise in the first few cycles, and in fact a kind of a “jump” after ca. 6 cycles there it kind of “snaps in”.
    
    Looking at this it could be maybe worthwhile to test if it could help to prepend the sweep by e.g. 10 cycles of constant frequency, in order to give the system some time and/or account for slow transients
    
    great stuff btw

@bnsgeyer (Bill Geyer) replied

    olliw42:
    
    > I think you would want to find a means to have error bars on your data in the plots. E.g. in the data plots in the first post, the reason for the drop in coherence at low freq can IMHO be very clearly seen: from the Bode plots its clear it's due to a drop in magntiude, and when you look into the data trace one clearly can see lots of noise in the first few cycles, and in fact a kind of a “jump” after ca. 6 cycles there it kind of “snaps in”.
    
    Just remember that the first time history plot contains only rout (the output of the attitude controller to the mixer) and the sweep signal that is included in rout. I did not include the rate response of the vehicle. So here is a time history of the Y6 frequency sweep in the roll axis (shown below).
    
    Y6_roll_TH.jpg1791×753 186 KB
    
    The red is the output from the attitude controller to the mixer (rout) and the green is the roll rate response of the vehicle. The scale for Rout is on the left and the scale for the roll rate is on the right. I think it is pretty clear that the signal to noise is sufficient to support what is seen in the bode plot for 1 rad/s to 5 rad/s. Not only is the SNR good, it also shows that the aircraft is 180 deg out of phase with the input for the low freqency regime. I will go out and gather another sweep in the low frequency regime but I think the analysis is consistent with what is observed in the time history plot.
    
    olliw42:
    
    > great stuff btw
    
    Thanks!

So @olliw42 (OlliW42) replied

    well, what I only wanted to mention is that in all plots there is a loss of coherence below ca 0.8 Hz or so … and I think it's obvious why from looking at the data in the first few cycles (the last plot just reinforces it) … that's all I wanted to mention

To which @bnsgeyer (Bill Geyer) replied

    olliw42:
    
    > well, what I only wanted to mention is that in all plots there is a loss of coherence below ca 0.8 Hz or so … and I think it's obvious why from looking at the data in the first few cycles (the last plot just reinforces it) … that's all I wanted to mention
    
    No. I'm glad you wrote. It made me look at the trace and convince myself that the results from 1 to 5 rad/s are consistent with the time history. just a clarification. You mention 0.8 Hz. Did you mean Hz or Rad/s?

@olliw42 (OlliW42) replied

    sorry, wasn't careful: ca 0.8 rad/s  
    I don't believe your magnitudes are “real” in that regime, and I think the hints are there  
    my 2 cents

To which @bnsgeyer (Bill Geyer) replied

    olliw42:
    
    > I don't believe your magnitudes are “real” in that regime, and I think the hints are there  
    >  my 2 cents
    
    I guess I wouldn't expect good coherence below 1 rad/s since I didn't run my sweep below 1 rad/s. Or are you speaking of frequencies above 1 rad/s where the coherence is good near 1?

So @olliw42 (OlliW42) replied

    ah … I missed that, sorry (I was assuing that the lowest shown frequency was the starting frequency)  
    so the plots below 1 rad/s are indeed not real, but for a trivial reason  
    I guess you want then to cut out the unreal parts in the plots

Then @bnsgeyer (Bill Geyer) said

    olliw42:
    
    > so the plots below 1 rad/s are indeed not real, but for a trivial reason  
    >  I guess you want then to cut out the unreal parts in the plots
    
    Sorry, didn't think about that. I will do that for my future plots.

After which, @Leonardthall (Leonard Hall) added

    I am very confused about that low frequency phase.
    
    Edit: I know what it is!!! It is propeller flapping torque. The aircraft is speeding up as it is tilted over and the propeller flapping torque is then being countered by the output of the rate loop.
    
    In short for low frequencies you are characterising the relationship between propeller flapping torque or rate_out and airspeed. At higher frequencies airspeed can not build up and you are looking at the relationship between rate_out and rate.
    
    Ok, everything is right in the world again now

To which @rmackay9 (rmackay9) replied

    very impressive stuff!

@bnsgeyer (Bill Geyer) replied

    Here is an update on the work that I've been doing. Just got back from a course on systems identification using a program called CIFER (Comprehensive Identification from Frequency Responses). I posted previously the pitch and roll frequency responses. I had also done frequency sweeps in the yaw axis but had not posted the results. I had the data with me and wanted to put what I had just learned to use. This course walked us through what was important about gathering the data (instrumentation, data consistency, frequency sweeps…), developing the bode plots that show the relationships between the important control inputs and outputs (states), and lastly how to develop a 6 degree of freedom model from the frequency response data. One thing that I learned/didn't realize is how uncoupled multicopters are compared to helicopters. Helicopters become even more difficult to model going from a teetering rotor head to something that had geometric or effective offset (i.e. flap hinges displaced from the center of rotation or no flap hinges). So coming up with a model (set of transfer functions) that represent a multicopter is not too difficult. What remains to be seen is how scalable they would be to different multicopter size and configurations.  
    I used my frequency sweeps for the Y6 in roll and yaw to come up with a bare airframe model for the lateral/directional equations of motion. So you have 3 equations of motion for rigid body motion instead of the 6. SO the lateral directional equations are the lateral force, roll moment, and yaw moment equations.  
    I used CIFER to fit the following frequency responses, roll rate § to Rout (roll mixer output), lateral acceleration (AY) to Rout (roll mixer output), body axis lateral translation velocity (V) to Rout (roll mixer output) and yaw rate ® to Yout (yaw mixer output). It also determined the modes of motion for the system and stability and control derivatives. Here are the plots of the frequency responses with the model laid over it.  
    first chart is V to Rout and P to Rout  
    
    
    Y6_lat-dir_model_pg2.jpg1261×975 54.5 KB
    
      
    next chart is AY to ROUT and R to YOUT  
    
    
    Y6_lat-dir_model_pg1.jpg1261×975 52.4 KB
    
    Generally the model is fitted for frequencies from 1.5 rad/s to 15-20 rad/s. It captures the unstable long term mode, the yaw short term mode, and the roll mode. There was no roll damping derivative which leads me to believe the roll mode is effectively acceleration command in the short term. Here are the transfer functions  
    
    
    Y6_Lat-Dir_eigenvalues.jpg1005×812 107 KB
    
    So in order to develop a full 6 DOF model, I will need to do a sweep in the vertical axis with the collective (that's throttle for the multi's). Then I can use the same process. So this information could be used to develop better a better control system however these equations only apply to the Y6. So a lot more work would need to be done to understand how to build a generic model of a multicopter or helicopter and what physical attributes for that type of aircraft play into the eigenvalues or the stability and control derivatives.

Then @bnsgeyer (Bill Geyer) said

    Thanks @Leonardthall!

After which, @Leonardthall (Leonard Hall) added

    Great work Bill!!!

@bnsgeyer (Bill Geyer) replied

    Reopening this thread with some new data. @ChrisOlson and I were able to get some frequency response data on two fairly different helicopters. I think things are starting to make sense with regard to the RC helicopter frequency response. So here are the vehicles  
    Bill's  
    Ergo .46 converted to electric  
    E-flite 700 heli motor  
    Castle Creation 80Amp 50VDC ESC  
    12s 5000mAh Lipo batteries  
    rotorspeed: 1800 RPM  
    blades: 600mm  
    rotorhead: Miniature Aircraft X-cell 30 2 bladed flybarless (I removed the flybar)  
    Dampers in rotor head are pretty soft.  
    weight: 10.5 lbs  
    swashplate servos: Futaba 3050 digital servos
    
    Chris' Heli  
    Synergy E5 stretch  
    I'm assuming it is running 626mm blades  
    Flybarless head with stiff dampers  
    low head speed 1550 rpm  
    high head speed 1700 rpm  
    I'll let Chris fill in the rest. I'm sure his is a little lighter than mine.
    
    Here is the comparison of the two aircraft in pitch. This plot is a bode plot of pitch rate to pout which is the pitch command being sent to the mixer. I plotted coherence there for completeness but tried to trim the plot on the x axis to exclude regions where the coherence was poor.  
    ergo is labeled ergofbl  
    626 low headspeed is labeled olson03  
    626 high headspeed is labeled olson04  
    
    
    compare_pitch.jpg930×702 89.6 KB
    
      
    There are a couple of points to be made here
    
      1. this shows that the bare airframe response of these RC helicopters is nearly rate command because the phase at lower frequencies is near 0 deg. For the Ergo this would be more difficult to fly because of the phase lag but for the 626 an experienced heli pilot could fly this aircraft.
      2. I believe the rotor head dampers play a big part in how far out the mag and phase go before they drop off. Rotor speed has some effect but for the RC heli's with teetering heads, however the damper plays bigger part.
      3. The rigid body pitch mode of the aircraft can be determined and almost perfectly fits a second order system model for the frequencies shown here. The transfer function of the form  
    
    
    
    
    Yields the following data for the bode plot above
    
      
    I will continue with the roll results at a later time.

After which, @Leonardthall (Leonard Hall) added

    This is soooo cool!!
    
    That may be the resonance of the head dampers at about 25 Hz on the Olsen 03 04.
    
    Sorry I have been offline, I have been crazy busy lately.
    
    Chat soon!

Then @bnsgeyer (Bill Geyer) said

    Leonardthall:
    
    > That may be the resonance of the head dampers at about 25 Hz on the Olsen 03 04
    
    This is 25 rad/sec not hz. So about 4 hz. I have believe we are seeing more lightly damped rigid body modes than the full scale Helis. Full scale helicopters with teetering rotors like the jet ranger (Bell 206) or the older H-1's (also Bell product) can be modeled as a first order system for the roll and pitch rigid body modes. Even some of the lower geometric offset designs like the H-3. Geometric offset is the distance from the shaft to the flapping hinge. This helps increase the maneuverability of the aircraft. As the rotor system gets stiffer like in hingeless designs (i.e. Virtual flapping hinges) like the BO-105, the rotor response starts to couple with the body of the aircraft and the rigid body modes become second or higher order. Most full size helicopters have higher inertia rotor systems and thus the rigid body modes are fairly well damped (damping mainly coming from the rotor system).  
    So with model helicopters, the desire is highly maneuverable aircraft with good rotor response. So the rotor blades for the flybarless designs are lighter with less inertia and even though they are teetering rotor systems they have stiff dampeners that help drive up the natural freq. This means the rigid body modes are less damped and have higher natural frequencies.  
    So I've been reading Tischler's book on helicopter system identification. Using the transfer function results, some rotor system characteristics can be determined. The rotor flapping time constant, natural frequency and control system delay. For Chris' 626, it is 0.084 sec and for my ergo, it is 0.052 sec. seems odd that mine is quicker than chris' which has the stiffer dampeners but they really impact the natural freq more than anything which is very obvious in this case. The Delay column in my previous post is the control system delay. You can see that my delay is much higher. I'm using digital servos but they are probably not as powerful as they should be.  
    So now the challenge is designing a control system that can better handle a lightly damped system. I think the current one does pretty well but maybe we can do better.  
    Regards,  
    Bill

Then @bnsgeyer (Bill Geyer) said

    Another update on the comparison of rotorheads for flybarless helicopters. So I bought a Synergy 626 which is the same aircraft Chris Olson had provided data for my comparison for the pitch axis. However the frequency sweep was cut off a little early and did not contain enough data to determine the natural frequency for the roll axis of the synergy aircraft. So I did the frequency sweep testing with my aircraft and the pitch axis looks nearly identical to Chris' results. So here is a comparison of the Ergo and Synergy aircraft in the roll axis. The bode plot is frequency response of the roll rate to Rout signal.  
    
    
    Roll_freq_resp_compare.png930×702 5.79 KB
    
    So I did not get the two rotor speeds that Chris had gotten but I think this shows the difference in rotor heads. I think rotor speed plays a minor role and head stiffness is more important when it comes to the rotor flap natural frequency. In a hingeless rotor system, I believe rotor speed will have a more pronounced effect. I have a 4 bladed head and intend to show results from that when I get a chance to swap it out on one of these helicopters.  
    Here is the data based on the 2nd order model described in my previous post.  
      
    Notice that both have a lightly damped rigid body mode however the synergy natural frequency is double that of the Ergo.

@bnsgeyer (Bill Geyer) replied

    Another update to this thread. Over the past month, I have been conducting tests looking at different rotor heads on the same helicopter. I used the Synergy E5 stretched to a 626. The same as I described above. I conducted frequency sweeps on the stock teetering rotor head for both 1500 and 1900 RPM. I removed the stock rotor head and replaced it with a 4 bladed rotor head from century helicopters. This is a hingeless rotor head in the flap degree of freedom and pinned in lead-lag like most model helicopters.  
    
    
    IMG_0015_low_res.jpg1008×756 554 KB
    
    Here is a plot of both the pitch and roll frequency response for 1500 and 1900 RPM. Here is the description of the legend label  
    syn4b15p - 4 bladed rotor, 1500 RPM, Pitch axis  
    syn4b19p - 4 bladed rotor, 1900 RPM, Pitch axis  
    syn4b15r - 4 bladed rotor, 1500 RPM, Roll axis  
    syn4b19r - 4 bladed rotor, 1900 RPM, Roll axis
    
    synergy_4blade_pitch-roll_compare.png930×702 6.94 KB
    
    The data from the 4 bladed head shows the rotor regressive flap mode in both the pitch and roll axes. In the pitch axis the magnitude and phase roll off because the lead lag regressive is not coupled to the rigid body pitch mode. In the roll axis, the lead lag regressive is coupled with the rigid body roll mode and the magnitude and phase roll off after the lead lag mode at ~80 rad/s. The flap regressive is not as evident in the teetering head shown in my previous posts.  
    So my thought is that to suppress these lightly damped modes, notch filters will be needed for both. The more rigid the head the better. It keeps the flap regressive mode above the piloting frequencies (< 3 Hz ). This is now more evident with my X-3 which uses the 4 bladed rotor system. The flap regressive coupled with the body was around 5 hz which allowed me to notch that frequency and enabled me to get he P gain up to 0.2 which is unheard of for heli's. The aircraft handled much differently than heli's that are tuned with the wiki method. So the goal is to get the flap regressive freq higher which may require stiffer dampeners in the rotor head.


{'source': 'discourse', 'url': 'https://discuss.ardupilot.org/t/multicopter-helicopter-frequency-domain-characterization-for-control-law-development/23666', 'title': 'Multicopter/Helicopter Frequency Domain Characterization for Control Law Development', 'views': 3808, 'has_accepted_answer': False, 'word_count': 5313, 'like_count': 7, 'reply_count': 21, 'participant_count': 4, 'posts': 37, 'tags': '', 'author': '@bnsgeyer (Bill Geyer)', 'participants': '@bnsgeyer (Bill Geyer), @Leonardthall (Leonard Hall), @olliw42 (OlliW42), @rmackay9 (rmackay9)', 'image_url': ['https://discuss.ardupilot.org/uploads/default/optimized/2X/6/6971e13f30e99e6e1a3ed12f7bd7cf73abe99439_2_1024x177.jpg'], 'created_at': '2017-12-03T00:39:08.212Z', 'last_posted_at': '2018-12-25T23:18:41.933Z'}