Vehicle Steering Gain at Different Speeds

This example shows how to use the vehicle dynamics slowly increasing steering reference application to analyze the impact of the steering angle and speed on vehicle handling. Specifically, you can calculate the steering gain when you run the maneuver with different speed set points.

Based on the constant speed, variable steer test defined in SAE J2661, the slowly increasing steering maneuver helps characterize the lateral dynamics of the vehicle. In the test, the driver:

  • Accelerates until vehicle hits a target velocity.

  • Maintains a target velocity.

  • Linearly increases the steering wheel angle from 0 degrees to a maximum angle.

  • Maintains the steering wheel angle for a specified time.

  • Linearly decreases the steering wheel angle from maximum angle to 0 degrees.

For more information about the reference application, see Slowly Increasing Steering Maneuver.

Run a Slowly Increasing Steering Maneuver

  1. Create and open a working copy of the increasing steering reference application.

  2. Open the Slowly Increasing Steer block. By default, the maneuver is set with these parameters:

    • Longitudinal speed setpoint — 50 mph

    • Handwheel rate — 13.5 deg

    • Maximum handwheel angle — 270 deg

  3. Open the Visualization subsystem. By default, the 3D Engine is set with the 3D visualization engine disabled. For the 3D visualization engine platform requirements and hardware recommendations, see 3D Visualization Engine Requirements.

  4. Run the maneuver with the default settings. As the simulation runs, view vehicle information.

    • In the Vehicle Position window, view the vehicle longitudinal distance as a function of lateral distance.

    • In the Visualization subsystem, open the Yaw Rate and Steer Scope block to display the yaw rate and steering angle versus time:

      • Yellow line — Yaw rate

      • Blue lines — Steering angle

      The blue line shows a linearly increasing and decreasing steering angle.

Sweep Speed Set Points

Run the slowly increasing steering angle reference application with three different speed set points.

  1. In the slowly increasing steering reference application model ISReferenceApplication, open the Slowly Increasing Steer block. The Longitudinal speed set point, xdot_r block parameter sets the vehicle speed. By default, the speed is 50 mph.

  2. In the Visualization subsystem, enable signal logging for these model elements. Disable the 3D visualization environment. You can use the Simulink® editor or, alternatively, MATLAB® commands. Save the model.

    Model Element

    Simulink Editor

    VehFdbk inport

    ISO 15037-1:2006 block

    3D Engine block

    Alternatively, use these commands to enable the signal logging, disable the 3D visualization environment, and save the model.

    % Open the model
    mdl = 'ISReferenceApplication';
    open_system(mdl);
    
    % Enable signal logging for VehFdbk
    ph=get_param('ISReferenceApplication/Visualization/VehFdbk','PortHandles');
    set_param(ph.Outport,'DataLogging','on');
    
    % Enable signal logging for ISO block
    set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable');
    
    % Disable 3D environment
    set_param([mdl '/Visualization/3D Engine'],'engine3D','Disabled');
    
    save_system(mdl)

  3. Set up a speed set point vector, xdot_r, that you want to investigate. For example, at the command line, enter:

    mdl = 'ISReferenceApplication';
    open_system(mdl);
    % Define the set of parameters to sweep
    vmax = [40, 50, 60];
    tfinal = [60, 60, 60];
    numExperiments = length(vmax);

  4. Create an array of simulation inputs that set xdot_r equal to the Slowly Increasing Steer block parameter.

    for idx = numExperiments:-1:1
        in(idx) = Simulink.SimulationInput(mdl);
        in(idx) = in(idx).setBlockParameter([mdl '/Slowly Increasing Steer'], 'xdot_r', num2str(vmax(idx)));
        in(idx) = in(idx).setModelParameter('StopTime', num2str(tfinal(idx)));
    end

  5. Save the model and run the simulations. If available, use parallel computing.

    save_system(mdl);
    tic; 
    simout = parsim(in,'ShowSimulationManager','on');
    toc;

  6. Import the simulation results to the Simulation Data Inspector.

    1. On the Simulink Editor toolbar, click the Data Inspector button .

    2. In the Simulation Data Inspector, select Import. In the Import dialog box, accept the defaults and select Import.

    3. In the Import dialog box, clear logsout. Select simout(1), simout(2), and simout(3). Select Import.

    4. Select each of the runs. For each run, right-click to rename the results to the velocity that corresponds to the simulation. Run 1 corresponds to the simulation with the default settings.

  7. Explore the results in the Simulation Data Inspector. To characterize the steering, view the plots of the simulation results. For example, plot longitudinal velocity, steering wheel angle, lateral acceleration, longitudinal position, X, and lateral position, Y. The results are similar to these plots, which show the results for runs 2, 3, and 4. The results indicate that the greatest lateral acceleration occurs when the vehicle velocity is 40 mph.

  8. To explore the results further, use these commands to extract the lateral acceleration, steering angle, and vehicle trajectory from the simout object.

    • Extract the lateral acceleration and steering angle. Plot the data. To calculate the steering gain, fit a first order polynomial to the data.

      % Plot results from simout object: lateral acceleration vs steering angle
      figure
      for idx = 1:numExperiments
          % Extract Data
          log = simout(idx).get('logsout');
          sa=log.get('Steering-wheel angle').Values;
          ay=log.get('Lateral acceleration').Values;
          
          firstorderfit = polyfit(sa.Data,ay.Data,1);
          gain(idx)=firstorderfit(1);
          
          legend_labels{idx} = [num2str(vmax(idx)), ' mph: Gain = ',num2str(gain(idx)), ' m/(deg s^2)'];
          
          % Plot steering angle vs. lateral acceleration
          plot(sa.Data,ay.Data)
          hold on
      end
      % Add labels to the plots
      legend(legend_labels, 'Location', 'best');
      title('Lateral Acceleration')
      xlabel('Steering Angle [deg]')
      ylabel('Acceleration [m/s^2]')
      grid on

      The results are similar to this plot.

    • Extract the vehicle path. Plot the data.

      % Plot vehicle path
      figure
      for idx = 1:numExperiments
          % Extract Data
          log = simout(idx).get('logsout');
          VehFdbk = log.get('VehFdbk');
          x = VehFdbk.Values.Body.X;
          y = VehFdbk.Values.Body.Y;
          legend_labels{idx} = [num2str(vmax(idx)), ' mph'];
         
          % Plot vehicle location
          axis('equal')
          plot(y.Data,x.Data)
          hold on 
      end
      % Add labels to the plots
      legend(legend_labels, 'Location', 'best');
      title('Vehicle Path')
      xlabel('Y Position [m]')
      ylabel('X Position [m]')
      grid on

      The results are similar to this plot.

References

[1] SAE J266. Steady-State Directional Control Test Procedures For Passenger Cars and Light Trucks. Warrendale, PA: SAE International, 1996.

See Also

| |

Related Topics