Устойчивость отклонения от курса на переменных дорожных покрытиях

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

ISO 3888-21 задает маневр изменения двойного маршрута, чтобы проверить производительность предотвращения препятствия автомобиля. В тесте, драйвере:

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

  • Отпускает педаль акселератора

  • Руль поворотов, чтобы следовать за путем в левый маршрут

  • Руль поворотов, чтобы следовать за путем назад в правильный маршрут

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

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

Запустите маневр изменения Двойного Маршрута

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

  2. Откройте блок Lane Change Reference Generator. По умолчанию маневр установлен с этими параметрами:

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

    • Vehicle width — 2 м

    • Lateral reference position breakpoints и Lateral reference data — Значения, которые задают боковую ссылочную траекторию как функцию продольного расстояния

  3. В подсистеме Визуализации откройте 3D Блок двигателя.

    • Расположите автомобиль в рекомендуемое местоположение для маневра изменения двойного маршрута.

      1. Установите эти параметры.

        • Scene к Double lane change

        • Выберите Recommended for scene

      2. Выберите Apply, чтобы изменить начальные параметры положения автомобиля.

      3. Нажмите Update the model workspaces with the initial values, чтобы перезаписать начальное положение автомобиля в рабочих пространствах модели с прикладными значениями.

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

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

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

    • В подсистеме Визуализации откройте блок Lane Change scope, чтобы отобразить боковое смещение как функцию времени.

      • Красная линия — Конусы, отмечающие контур маршрута

      • Синяя строка — Ссылочная траектория

      • Зеленая строка — Фактическая траектория

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

    • В подсистеме Визуализации, если вы включаете 3D среду визуализации Блока двигателя, можно просмотреть ответ автомобиля в окне VehicleSimulation.

Разверните поверхностное трение

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

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

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

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

    Редактор Simulink

    VehFdbk inport

    Импорт маршрута

    Блок ISO 15037-1:2006

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

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

    % Open the model
    mdl = 'DLCReferenceApplication';
    open_system(mdl);
    
    % Enable signal logging for VehFdbk
    ph=get_param('DLCReferenceApplication/Visualization/VehFdbk','PortHandles');
    set_param(ph.Outport,'DataLogging','on');
    
    % Enable signal logging for Lane
    ph=get_param('DLCReferenceApplication/Visualization/Lane','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. Настройте вектор с масштабными коэффициентами трения, lambdamu, который вы хотите исследовать. Например, чтобы исследовать масштабные коэффициенты трения, равные 0.9, 0.95 и 1.0, в командной строке входят:

    mdl = 'DLCReferenceApplication';
    open_system(mdl);
    % Define the set of parameters to sweep
    lambdamu = [0.9, 0.95, 1.0];
    numExperiments = length(lambdamu);

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

    % Create an array of Simulink.SimulationInputs
    for idx = numExperiments:-1:1
        in(idx) = Simulink.SimulationInput(mdl);
        in(idx) = in(idx).setBlockParameter([mdl '/Environment/Friction'],'Value',['ones(4,1).*',num2str(lambdamu(idx))]);
    end

  5. Установите время остановки симуляции в 30 с. Сохраните модель и запустите симуляции. При наличии используйте параллельные вычисления.

    set_param(mdl,'StopTime','30')
    save_system(mdl)
    tic; 
    simout = parsim(in,'ShowSimulationManager','on');
    toc;
    delete(gcp('nocreate'))

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

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

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

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

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

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

    • Чтобы оценить успех маневра тестируют, когда lambdamu равен.9.95, и 1.0, постройте верхний контур маршрута, <UB>, более низкий контур маршрута, <LB>, и боковое расстояние автомобиля, Y.

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

    • Чтобы оценить устойчивость отклонения от курса для дорожных покрытий, постройте поперечное ускорение, ay, боковое расстояние автомобиля, Y, угол отклонения от курса, psi, и уровень отклонения от курса, r.

      Результаты подобны этим графикам. Результаты показывают, что автомобиль имеет уровень отклонения от курса приблизительно.62 рад/с, когда масштабный коэффициент трения равен 1.

  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;
          
          legend_labels{idx} = ['lambdamu = ', num2str(lambdamu(idx))];
          
          % 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

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

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

      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} = ['lambdamu = ', num2str(lambdamu(idx))];
         
          % Plot vehicle location
          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

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

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

|

Ссылки

[1] ISO 3888-2: 2011. Легковые автомобили — Испытательная площадка для серьезного маневра изменения маршрута.

Похожие темы