Руководящее усиление транспортного средства на различных скоростях

В этом примере показано, как использовать динамику аппарата, медленно увеличивающуюся регулирующий пример готовых узлов, чтобы анализировать удар держащегося угла и скорости на обработке транспортного средства. А именно, можно вычислить держащееся усиление, когда вы запускаете маневр с различными сетболами скорости.

На основе постоянной скорости переменная регулирует тест, заданный в SAE J2661, медленно руководящий маневр увеличения помогает охарактеризовать боковую динамику транспортного средства. В тесте, драйвере:

  • Ускоряется, пока транспортное средство не врезается в целевую скорость.

  • Обеспечивает целевую скорость.

  • Линейно увеличивает угол руля от 0 градусов до максимального угла.

  • Обеспечивает угол руля в течение требуемого времени.

  • Линейно уменьшает угол руля от максимального угла до 0 градусов.

Для получения дополнительной информации о примере готовых узлов, смотрите Медленно Руководящий Маневр Увеличения.

Запустите медленно руководящий маневр увеличения

  1. Создайте и откройте рабочую копию увеличения, регулирующего пример готовых узлов.

  2. Откройте блок Slowly Increasing Steer. По умолчанию маневр установлен этими параметрами:

    • Longitudinal speed setpoint — 50 миль в час

    • Handwheel rate — 13,5 градусов

    • Maximum handwheel angle — 270 градусов

  3. Откройте подсистему Визуализации. По умолчанию 3D Engine установлен с 3D отключенным механизмом визуализации. Для 3D требований платформы механизма визуализации и рекомендаций по аппаратным средствам, смотрите 3D Требования Engine Визуализации.

  4. Запустите маневр с настройками по умолчанию. Когда симуляция запускается, информация о транспортном средстве представления.

    • В окне Vehicle Position просмотрите транспортное средство продольное расстояние как функцию бокового расстояния.

    • В подсистеме Визуализации откройте блок Yaw Rate и Steer Scope, чтобы отобразить уровень отклонения от курса и держащийся угол по сравнению со временем:

      • Желтая линия — уровень Отклонения от курса

      • Синие линии — Держащийся угол

      Синяя линия показывает линейно увеличение и уменьшение держащегося угла.

Разверните сетболы скорости

Запустите медленно увеличение, регулирующее угловой пример готовых узлов с тремя различными сетболами скорости.

  1. В медленном увеличении, регулирующем модель ISReferenceApplication примера готовых узлов, откройте блок Slowly Increasing Steer. Параметры блоков Longitudinal speed set point, xdot_r устанавливают скорость транспортного средства. По умолчанию скоростью является 50 mph.

  2. В подсистеме Визуализации включите логгирование сигнала для этих элементов модели. Отключите 3D среду визуализации. Можно использовать редактор Simulink® или, альтернативно, команды MATLAB®. Сохраните модель.

    Элемент модели

    Редактор Simulink

    VehFdbk inport

    Блок ISO 15037-1:2006

    3D Блок двигателя

    В качестве альтернативы используйте эти команды, чтобы включить логгирование сигнала, отключить 3D среду визуализации и сохранить модель.

    % 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. Настройте вектор сетбола скорости, xdot_r, то, что вы хотите заняться расследованиями. Например, в командной строке, введите:

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

  4. Создайте массив входных параметров симуляции, которые устанавливают xdot_r равняйтесь параметрам блоков Slowly Increasing Steer.

    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_system(mdl);
    tic; 
    simout = parsim(in,'ShowSimulationManager','on');
    toc;

  6. Импортируйте результаты симуляции Инспектору Данных моделирования.

    1. На панели инструментов Simulink Editor нажмите кнопку Data Inspector.

    2. В Инспекторе Данных моделирования выберите Import. В диалоговом окне Import примите значения по умолчанию и выберите Import.

    3. В диалоговом окне Import очистите logsout. Выберите simout(1), simout(2), и simout(3). Выберите Import.

    4. Выберите каждый из запусков. Для каждого запуска щелкните правой кнопкой, чтобы переименовать результаты к скорости, которая соответствует симуляции. Запуститесь 1, соответствует симуляции с настройками по умолчанию.

  7. Исследуйте результаты в Инспекторе Данных моделирования. Чтобы охарактеризовать регулирование, просмотрите графики результатов симуляции. Например, постройте продольную скорость, угол руля, поперечное ускорение, продольное положение, X, и боковое положение, Y. Результаты похожи на эти графики, которые показывают результаты для запусков 2, 3, и 4. Результаты показывают, что самое большое поперечное ускорение происходит, когда скоростью транспортного средства является 40 mph.

  8. Чтобы исследовать результаты далее, используйте эти команды, чтобы извлечь поперечное ускорение, регулируя угол и траекторию транспортного средства от simout объект.

    • Извлеките поперечное ускорение и держащийся угол. Отобразите данные на графике. Чтобы вычислить держащееся усиление, соответствуйте полиному первого порядка к данным.

      % 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

      Результаты похожи на этот график.

    • Извлеките путь к транспортному средству. Отобразите данные на графике.

      % 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

      Результаты похожи на этот график.

Ссылки

[1] SAE J266. Установившиеся направленные процедуры контрольного теста для легковых автомобилей и легких грузовиков. Варрендэйл, PA: SAE International, 1996.

Смотрите также

| |

Похожие темы