Поперечное ускорение автомобиля на различных скоростях

Этот пример показывает, как использовать динамику аппарата постоянный пример готовых узлов радиуса, чтобы анализировать влияние скорости на динамике ответвления автомобиля. А именно, можно исследовать поперечное ускорение, когда вы запускаете маневр с различными скоростями. Для получения информации о подобных маневрах см. стандарты SAE J266_1996011 и ISO 4138:20122.

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

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

Запустите постоянный маневр радиуса

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

  2. Выберите блок Reference Generator. По умолчанию пример готовых узлов использует Прогнозирующий Блок драйверов, чтобы поддержать радиус правого поворота на 100 м на уровне 30 миль в час.

    • ManeuverConstant radius

    • Use maneuver-specific driver, initial position, and sceneon

    • Longitudinal velocity — 30 миль в час

    • Radius value — 100 м

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

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

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

    • В подсистеме Визуализации откройте Регулировать, Скорость, блок Lat Accel Scope, чтобы отобразить держащийся угол, скорость и поперечное ускорение по сравнению со временем.

Разверните скорость

Запустите постоянное приложение готовых узлов радиуса с тремя различными скоростями. Остановите симуляцию, если автомобиль превышает порог поперечного ускорения.5 г.

  1. В постоянной модели CRReferenceApplication примера готовых узлов радиуса откройте блок Reference Generator. Параметры блоков Longitudinal velocity reference, xdot_r устанавливают скорость автомобиля. По умолчанию скорость составляет 30 миль в час.

  2. Включите журналирование сигнала. Выберите блок Reference Generator параметр Stop simulation at lateral acceleration threshold. Можно использовать редактор Simulink® или, альтернативно, команды MATLAB®. Сохраните модель.

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

    Редактор Simulink

    Подсистема визуализации — VehFdbk inport

    Подсистема визуализации — блок ISO 15037-1:2006

    Ссылочный блок Generator

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

    % Open the model
    mdl = 'CRReferenceApplication';
    open_system(mdl);
    
    % Enable signal logging for VehFdbk
    ph=get_param('CRReferenceApplication/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');
    
    % Set parameter to stop simulation at lateral acceleration threshold
    set_param([mdl '/Reference Generator'],'cr_ay_stop','on');
    save_system(mdl)

  3. Настройте вектор сетбола скорости, xdot_r, который вы хотите исследовать. Например, в командной строке, введите:

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

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

    for idx = numExperiments:-1:1
        in(idx) = Simulink.SimulationInput(mdl);
        in(idx) = in(idx).setBlockParameter([mdl '/Reference Generator'], '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;
    delete(gcp('nocreate'))

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

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

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

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

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

  7. Исследуйте результаты в Инспекторе Данных моделирования. Чтобы охарактеризовать поперечное ускорение и регулирование, просмотрите графики результатов симуляции. Например, постройте продольную скорость, поперечное ускорение и угол руля. Результаты подобны этим графикам, которые показывают результаты для трех выполнений. Результаты показывают, что самое большое поперечное ускорение происходит, когда скоростью автомобиля является 45 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] J266_199601. Установившиеся направленные процедуры контрольного теста для легковых автомобилей и легких грузовиков. Варрендэйл, PA: SAE International, 1996.

[2] ISO 4138:2012. Легковые автомобили - Установившееся круговое ведущее поведение - методы тестирования Разомкнутого цикла. ISO (Международная организация по стандартизации), 2012.

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

| |

Похожие темы