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

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

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

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

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

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

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

    • ManeuverConstant radius

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

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

    • 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 равняйтесь параметрам блоков Reference Generator.

    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;

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

    1. На панели инструментов Simulink Editor нажмите кнопку 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.

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

| |

Похожие темы

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