+ Reply to Thread
Page 3 of 6 FirstFirst 1 2 3 4 5 ... LastLast
Results 21 to 30 of 56

Thread: Testing, Testing 1,2 ...

  1. #21
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    Enf is Enf.

    Enf is the symbolic name for front aligning torque compliance steer on some planets: 'E' = steer, 'N' is aligning moment, 'F' as in front.

    So, put your car on grease plates, lock the steering wheel in the straight ahead position very firmly, take your torque wrench and a precision protractor, measure and record road wheel angle vs. moment for a series of readings at say 5 or 10 Nm increments up to 10 or so readings in both directions. We would normally do both wheels at the same time on a K&C machine, but wtf, do it one wheel at a time.

    Using Matlab, fit a log function to the data and scaled so that parameter 'A' is the initial slope, and parameter 'B' is the 63% moment value to the final limiting steer level. Change some parts (wheel bearing, steering gear preload, steering gear mount type, column configuration, etc.) and show us the pltted results and a table pf the 'A' and 'B' coefficients. Yeah, you can do this in Excel, but that's for accountants.

    Nice little project to be greatly valued by all on this Forum. Then try it at a few different steer angles. This experiment is usually the beginning of Reality Checking.

  2. #22
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    ENF Demo

    Here's an example of a way to parameterize your data for K&C types of tests: Run it through a function.

    Here's the function:

    function [enf]= enf_fcn(enfb,enfc,nf)
    enf=sign(nf).*enfb*enfc/100.*log(abs(nf)./enfc+1);

    You could speculate on the looks of data from good cars, bad cars, awful cars and great cars, but a simple test will answer that question directly.

    Here is some Matlab to demo it:

    enfb1=5.00
    enfc1=10

    nf=[-100:10:100];
    figure

    enf1=enf_fcn(enfb1,enfc1,nf);

    enfb2 =.5
    enfc2 =100
    enf2=enf_fcn(enfb2,enfc2,nf);

    enfb3 =15
    enfc3 =5
    enf3=enf_fcn(enfb3,enfc3,nf);

    plot(nf,enf1,'ro-',nf,enf2,'bo-',nf,enf3,'go-')

    legend(['ENFB= ' num2str(enfb1) ', ENFC = ' num2str(enfc1)], ...
    ['ENFB= ' num2str(enfb2) ', ENFC = ' num2str(enfc2)], ...
    ['ENFB= ' num2str(enfb3) ', ENFC = ' num2str(enfc3)],'Location','SouthEast');
    legend boxoff

    xlabel('Aligning Moment (Nm)')
    ylabel('Aligning Moment Steer Compliance (deg/100Nm per wheel)')
    grid
    vref(0);href(0)
    title('Two Parameter Nonlinear Compliance Steer Model')

    Make it so ....

  3. #23
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    Step Fit and Frequency Decomposition.

    Whether simulation or on road testing, Matlab tools require only the simplest scripting to reduce your raw data to Engineering results. You should not be 'programming in Matlab the way you would in BASIC, FORTRAN, or PL/1. The Matlab functions are already written, debugged and waiting for you to select them.

    For example:

    Step steer processing. You can either paw through the data segments to get steady state averaged values and run backwards through the segment to determine the time for 90% or 67% or 50% of the steady state value to be reached. Whoopie.
    Or, you can fit your channels (including steer BTW) to this function using one of several parameter ftting routines (like LSQCURVEFIT):

    function f=cr_fit(x,time)
    % step response function solutionn model.
    % might want to consider using abs(x(4)) to keep the fit consistent.
    % Matlab will try using + and - parameters.
    f=x(1) + x(2).*exp(-x(3).*time).*cos(2*pi.*x(4).*time + pi/180*x(5));

    This equation contains the Systems Engineering traits of your signals (the X values, silly), including the steady state, phase, and damping factors. After a series of runs in a linear or nonlinear mode, you will have run results suitable to process for gains (steering sensitivity, sideslip, roll, yawrate, cornering compliances) and the responcs times, damping, phase angle vs. Ay, or Steer, whatever you pick. It's that simple.

    Frequency Response processing. With a simulation, just a single run is needed. I use a 40.96 second chirp at 100 Hz. sample rate with an initial and final zero steer angle to produce a marvelouse FFT array. On the road we use multiple identical steer attempts and use a process to average the real and imaginary components of the FFT so we get a 'Coherence' calculation. Coherence = consistency, confidence level, repeatability, whatever you want to call it. High coherence = high believeability. It's like an R^2 at each frequency point.

    Same input channels now processed in pairs.


    warning off
    YAWACC = gradient(YAWVEL)./gradient(TIME); % Math channel
    warning on

    nfft = pow2(round(log2(length(STEER)))) ;
    nseg=1
    [sstxy,f] = tfe(STEER(:,nseg),LATACC(:,nseg),nfft,sps,hamming( nfft),nfft/2); % ayg by steer transfer function
    [rolltxy,f] = tfe(LATACC(:,nseg),ROLL(:,nseg),nfft,sps,hamming(n fft),nfft/2); % roll by ay transfer function
    [betatxy,f] = tfe(LATACC(:,nseg),SIDSLP(:,nseg),nfft,sps,hamming (nfft),nfft/2); % beta by ay transfer function
    [yawvtxy,f] = tfe(STEER(:,nseg),YAWVEL(:,nseg),nfft,sps,hamming( nfft),nfft/2); % yawv by steer transfer function
    [yawatxy,f] = tfe(STEER(:,nseg),YAWACC(:,nseg),nfft,sps,hamming( nfft),nfft/2); % yaw accel by steer transfer function
    [rollyawvtxy,f] = tfe(YAWVEL(:,nseg),ROLL(:,nseg),nfft,sps,hamming(n fft),nfft/2); % roll by yawvel transfer function
    [rollswatxy,f] = tfe(STEER(:,nseg),ROLL(:,nseg),nfft,sps,hamming(nf ft),nfft/2); % roll by steer transfer function

    inx=find(f > 4 | f < .10); % The reality of Bandpass
    f(inx)=[];
    sstxy(inx)=[];
    rolltxy(inx)=[];
    betatxy(inx)=[];
    yawvtxy(inx)=[];
    yawatxy(inx)=[];

    rollyawvtxy(inx)=[];
    rollswatxy(inx)=[];

    ss_gain = 100.*abs(sstxy); % convert to Bode form for gain
    ss_phase = angle(sstxy).*180/pi;
    yawv_gain = 100.*abs(yawvtxy);
    yawv_phase = angle(yawvtxy).*180/pi;
    yawa_gain = 100.*abs(yawatxy);
    yawa_phase = angle(yawatxy).*180/pi;
    roll_gain = abs(rolltxy);
    roll_phase = angle(rolltxy).*180/pi;
    beta_gain = abs(betatxy);
    beta_phase = angle(betatxy).*180/pi;
    rollswa_gain = 100*abs(rollswatxy);
    rollswa_phase = angle(rollswatxy).*180/pi;

    plot(f,ss_gain),%ylim([0 2])
    grid
    pause
    plot(f,yawv_gain),%ylim([0 30])
    grid
    pause
    plot(f,yawa_gain),%ylim([0 300])
    grid

    etc.

    Yes, you need LSQCURVEFIT and TFE tools to do this job professionally. If you didn't know it already, you can buy a killer version of Matlab for home use if you promise you won't show up on Shark Tank to sell your analysis product. If you really need an extra Toolbox, its $50. Your iPhone bill per month is higher than that. Go search for "Hobby version of Matlab"

    All the same parameter metrics mentioned in the step response processing are easily produced from your FR results. Now all you need to do is resolve the discrepancy between what you built and what you intended to build in Math or Material. Don't worry about the nonlinearities. The effects of them are actually very disappointing (like miniscule in the Big Picture of things). Keep your max Ay value below 0.4 and you will live to test another day.

  4. #24
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    Run before you walk away

    OK, so if some forms of testing are too hard, too complicated or too expensive for a student team, try a very simple test from the infant stages of vehicle dynamics with road cars: The "C-Speed" test. No, its NOT a constant speed test, it was originally planned as a "Characteristic Speed" test. An understeering vehicle's characteristic speed is the speed where the steering gain is down by 1/2 . Caused by the development of understeer with increasing lateral acceleration.

    All you need is a yawrate gyro to measure yaw velocity and also forward speed. A borrowed VBOX will do it. That's it. You set the steering wheel to some non-zero value, hold it firmly and start driving with a slight forward acceleration. This creates lateral g's. You process the yawrate and speed into curvature and lateral g's and you get a plot and a function of understeer vs. lateral acceleraton. Since a number of us are still awaiting a realistic test of this metric from a team, I thought I's kick up some dust off of this procedure. Heck, I even ran it on my bass boat.

    In the first picture, I show a validation test of the process: I take a 'vehicle' model with an installed linear value of understeer. Second pic shows a likely result of runing a FSAE type car with some typical nonlinear tire and steering compliance factors installed. Kinda goofy, ain't it ? Anybody want to speculate on why the curve looks like a polynomial fit to some funky data ? (Its not, its the effects of the two nonlinearities interacting).

    SO, isn't this more exciting than studying boring rules, tube frames, throttle thickness, fuel viscosity, restrictor condoms, cost of manufacturing, etc. or looking at employment ads wanting engineers who can tweet and text at over 1000 words per minute while eating hummus and drinking a Starbucks simultaneously ?

    Here's the Matlab code: (BTW: You'll need a committee to measure your car's wheelbase and to vote on what the correct value is).

    % Take out the trash: % delete possible residue from previous activities
    clear all

    % Get me some SIM or DAC data:
    csmp_read % get simulation data

    % Discard the startup transient:
    inx = find(TIME > 1);
    URG = URG(inx); % ~yawrate * speed = ay(ss)
    YAWVEL = YAWVEL(inx); % deg/sec
    SPEED = SPEED(inx)*.277778; % Convert to m/sec
    L = L(inx); % Don't start sweating, this is a sim artifact

    % Turn the crank:
    wb = L/1000; % convert wheelbase to meters
    r = YAWVEL*pi/180; % convert yawrate to rad/sec
    radius = SPEED./r; % computed turn radius
    curvature = r./SPEED; % the math majors term for it
    b = spap2(2,4,URG,curvature); % Spline fit. Use polynomial if necessary.
    db = fnder(b); % derivative function
    d = fnval(db,URG); % evaluate the derivative over the range
    k = -wb.*d*180/pi; % understeer deg/g over the range

    plot(URG,k,'r', 'LineWidth',2);

    xlim([0 2.0]); ylim([-2 12])
    xlabel('Steady State Lateral Acceleration (g)')
    ylabel('Understeer (deg/g)')
    supertitle(['Characteristic Speed Test Results'])
    title({[title2]},'Interpreter','none')
    sidetext(['Bill Cobb zzvyb6@yahoo.com'],'Interpreter','none');
    grid on
    href(0)
    vref(0)

    legend('Installed Understeer in this vehicle is 3.0 deg/g')
    legend('Understeer in this vehicle is from TLLTD and steer compliance')
    Attached Images

  5. #25
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    C-Speed Test using your Android Phone

    The heck with a VBOX, Use this app (or the free version) and use your phone to compute your FSAE cars understeer !

    http://www.rotoview.com/sensor_kinetics_pro_android.htm

  6. #26
    BillCobb, if you're ever feeling underappreciated for your work on this thread, I've talked to two FSAE teams in the last week and they are both using some of your ideas on testing.
    Charles Kaneb
    Magna International
    FSAE Lincoln Design Judge - Frame/Body/Link judging area. Not a professional vehicle dynamicist.

  7. #27
    Quote Originally Posted by Charles Kaneb View Post
    BillCobb, if you're ever feeling underappreciated for your work on this thread, I've talked to two FSAE teams in the last week and they are both using some of your ideas on testing.
    I'd also like to thank you for these contributions, the Lund team will use this.

    And I'm planning to test my own car, as soon as winter lets go of its crippling grip.
    Pontus Fyhr - Lund University Formula Engineering alumn/assistant FA

  8. #28
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    In Godd we trust, all others will need to brings some data.

    Thanks to all for your interest. Let's see some results. Don't have to wait for better weather, do some indoor tests of steering compliance and overall steer ratio. The compliance results will guide you when it's correlation time. The ratio tests will tell you how good your as-built steering geometry is. Build a 'side-pull rig' to evaluate calculated vs. actual lateral load transfer distributions with the car stationary. Do this at several steer angles and see how it changes.

    Then prep with a simple but elegant simulation of the on-track tests you intend to run. Take the sim data and post-process it to have a good idea what to expect from your test results: signs, order of magnitude, units, data volume, data editor/extractor, toolbox functions (Matlab kinda stuff), GUIs, summary data metrics, metrics database and graphs.

    Then the testing will hit the ground running and you will be pleased with your preparations and be able to run a predetermined set of conditions valuable to your team: tire pressures, springs and bars, reinforcement braces, wheel rim effects, tire temps, static caster/camber settings, etc.

    'Knowing' what to expect will allow you to prioritize test conditions. A high volume of outdoor testing will also tax your powertrain and result in valuable durability confidence levels.

  9. #29
    Senior Member
    Join Date
    Mar 2008
    Location
    Brighton, MI
    Posts
    686

    For Example

    A indoor lab test whose importance is so very often overlooked, is a test for overall steering ratio. Simple stuff. Measure steering wheel angle, measure one or both road wheel angles, calculate a slope and you are done, right ?

    Not so fast. Because of build tolerances being out of spec, because of part simplification(s), and because of non-coaxial geometric consequences, there can be some REALLY bad results obtained. Most often occuring with a large angular difference between steering column and pinion axes, where no (or a bad) attempt at using a double Cardan joint is made, angular variations in wheel angle displacement and velocity become pronounced. There is a lot more to this than just a little steering gain effect.

    Here's an example from the history books.

    First plot is just the raw data. Looks pretty innocent. Some curvature because of Ackerman geometry design intentions. Now lets look at it in more detail. The next plot shows the higher resolution derivative of the overall steering ratio functions for both road wheels. This vehicle has a problem with so-called 'lumpy steering'. Because the column was not carefully installed, the input and output angle of the steering intermediate shaft which connects the end of the column to the pinion nose are not co-axial and the phase angle on the shaft is no longer correct for the setup. So, a nominal 17:1 steer ratio has high and low values as you turn the wheel. Corresponding to the steering gain effect, will be a steering effort cycling that can be felt even bt casual evaluators. So the wheel is light in the straight ahead zone where the gain is highest. This tends to feel weird and unnatural when you drive the car straight either with both hands on the wheel or with one of your knees pushing on it as you eat your lunch with one hand and swig a gulp of soda held by the other. Its not really severe, though, where it gets bad is when that min/max gets shifted off to one side by more than a few dozen degrees. Then you can sense a tendency for the vehicle to lead or pull in one direction.

    Now, for the few geeks who are still with me, there is another tragic consequence. To compute the understeer of a vehicle from step tests, etc. You subtract the so called Ackerman gain (the wheelbase and speed effects) from the meaured steering wheel angle divided by the overal steering ratio. (but, you see, that's just NOT a constant value in this case). If you DO use a single, constant value, the understeer curve you generate will be distorted by the lumpiness effect. This can lead to all sorts of bad judgements: you have a bad tire, a bad alignment, a badly installed part or some other unknown whimsically blamed item.

    To correct the understeer calculation, you would need to use the actual left and right wheel steer angles and here is how you do it. Take the nonlinear ratio data fitting function, integrate it out to the steering wheel angle input value and produce the true reference steer angles.

    Here is the other singer, those of you who have some engineering education on control theory, would know that the yaw rate by steer angle transfer function has TWO numerater terms: that means a vehicle at speed responds to both steer angle AND steer velocity. Now take a look onece again at the lumpy ratio function. You should recognize that it is possible to have an increasing steer angle but also a negative steer veolocity. Now you could understand why some cars and trucks seem to have a 'deadband' at some steer angles. It's because your steering commands to the pinion are inconsistent, undesireable, unnatural and explainable.

    "Welcome to the New World, Captain Rameous."

    Over the years, I quickly learned to value this test by a large amount. If the ratio functions looks goofy, then, most likely, the car feels goofy, the test results will look goofy and the results of other tests at multiple speeds, load conditions and tire contstructions will be a total waste of time and energy.

    So, spend a little time in the shop if the weather is bad outside and get this information. The presentation value is huge, the judges will be shocked and unable to talk, and a lot of handwaving will be avoided.

    Here is the nonlinear ratio function I've used in this example. Keith Adams came up with this formulation. It handles nonlinear (by design) gears, Cardan joint effects, Ackerman steer geometry, etc. Matlab, of course... I use lsqcurvefit to compute the appropriate and fitting coefficients. A GUI to explore all the possible effects is sorta entertaining, actually. The coefficients that model the plotted data are listed on the plot for both road wheels.

    function [RATIO] = sr_func(SR,swa)
    %VHTRIMS Overall Steer Ratio fitting function
    % [RATIO] = sr_func(A0,A1,A2,B,C,D,F,G,swa)

    % sample data typical for full blown curve fit:
    %A0 = 15.57 Ratio Points
    %A1 * 10^3 = -0.4974 ASYMMETRY
    %A2 * 10^6 = -9.4283 BOW
    %B = -0.56 LUMPINESS AMPLITUDE (Ratio Points)
    %C = -14.84 LUMPINESS PHASE POSITION (Degrees SWA)
    %D = 2.70 VARIABLE RATIO AMPLITUDE (Ratio Points)
    %F = 550.82 VARIABLE RATIO RANGE (Degrees SWA)
    %G = 13.75 VARIABLE RATIO ZERO OFFSET (Degrees SWA)

    A0 = SR(1);
    A1 = SR(2);
    A2 = SR(3);
    B = SR(4);
    C = SR(5);
    D = SR(6);
    F = SR(7);
    G = SR(8);

    F(F==0)=realmax; % realsteve could do the job, too.

    RATIO = A0 + A1/10^3*(swa) + A2/10^6*(swa).^2 + B*cos(2*(swa- C)/57.3) + D*exp(-(4*(swa-G)/F).^2) ;
    return
    Attached Images

  10. #30

    Evidence

    First of all, I'd like to thank Bill for all the gold on this thread.

    I'm Vishnu Sanjay. I used to be the mechanical lead of the FSE team at my University, and graduated a few months ago. I thought I would share some data that we obtained, to show evidence of how important this kind of testing could be to the teams in this competition. It definitely tells you what to concentrate on improving, before expecting a quick car.
    This data is representative of the 4ze Racing car, from SRM University, Chennai, that my batch designed and ran (and won with) at our national competition Formula Green in March this year. The car has already ended its competition life cycle, and is not one that the current team will be taking to another competition.
    I think the data shows the cars around here need improving.

    First, an example of the steer ratio data. The raw data is quite noisy, due to the free play in the system and the the fact that we used our toe alignment jig (thread running longitudinally from two bars on the front and rear bulkhead) with the test conducted at 2 am and with 150+ manual readings recorded).
    The fit is a nonlinear fit of the kind that Bill has specified, and it shows lumpiness and the asymmetry in the steering. Yes, the UJ phase was not installed right, and the manufacturing resulted in the rack being a little off centre.
    If you are running the test, do it with digital encoders if possible, like we intend to do in the future. The (large amount of) play at the end does drive the residuals of the fit up.

    SR1.jpg
    SR2.jpg

    Next, a plot of the aligning moment compliance of the car. Our car is definitely closer to the 'bad' example in Bill's post than it is to the 'good' one. Comes from thinking of only a few of the many 'springs' that get loaded in series when an aligning moment is applied to a tire.
    We used ratchet straps and dial gauges to get this data. The method is crude but if you are clever and constrain the car right, then you could get useful data very quickly.
    A future test we plan involves strain gauge rosettes on all the springs to find the 'soft' culprits.

    Screenshot (276).jpg

    Definitely useful information to have before you start your design stage. If I were leading the mechanical team I would have the vehicle dynamics, steering kinematics AND structural engineering guys all being involved when any dynamics are being checked, just so that everyone understands what they need to do in order for the car to perform as simulated.
    For the car the readings were taken on, it happened because we didn't think in great detail about this kind of stuff back then. Kind of disappointing thinking you've designed a close to neutral steer, high-g machine and then finding out on test day that you don't get what you want.

    What do you guys think? Do you have any suggestions/experience regarding processing data with a lot of noise/play? (Our SR goes off to infinity at the ends because of the play, and we dealt with it by not including data points near the ends, for the fit)

+ Reply to Thread
Page 3 of 6 FirstFirst 1 2 3 4 5 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts