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

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

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

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

helpersetupcr;

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

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

  • МаневрConstant radius

  • Используйте специфичный для маневра драйвер, исходное положение и сцену — на

  • Продольная скорость — 35 миль в час

  • Значение радиуса — 100 м

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

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

mdl = 'CRReferenceApplication';
sim(mdl);
### Starting serial model reference simulation build
Warning: method not found. 
### Successfully updated the model reference simulation target for: Driveline
### Successfully updated the model reference simulation target for: PassVeh14DOF
### Successfully updated the model reference simulation target for: SiMappedEngineV

Build Summary

Simulation targets built:

Model            Action                       Rebuild Reason                              
==========================================================================================
Driveline        Code generated and compiled  Driveline_msf.mexw64 does not exist.        
PassVeh14DOF     Code generated and compiled  PassVeh14DOF_msf.mexw64 does not exist.     
SiMappedEngineV  Code generated and compiled  SiMappedEngineV_msf.mexw64 does not exist.  

3 of 3 models built (0 models already up to date)
Build duration: 0h 3m 55.12s

  • В окне Vehicle Position просмотрите транспортное средство продольное расстояние как функцию или боковое расстояние. Желтая линия отображает уровень рыскания. Синяя линия показывает держащийся угол.

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

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

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

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

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

  • Выберите симуляцию Остановки блока Reference Generator в пороговом параметре поперечного ускорения.

set_param([mdl '/Reference Generator'],'cr_ay_stop','on');
  • Включите логгирование сигнала для Ссылочного Генератора выходной порт сигнала Виса.

ph=get_param('CRReferenceApplication/Reference Generator','PortHandles');
set_param(ph.Outport(1),'DataLogging','on');
  • Включите логгирование сигнала для сигнала выходного порта блока Passenger Vehicle.

ph=get_param('CRReferenceApplication/Passenger Vehicle','PortHandles');
set_param(ph.Outport(1),'DataLogging','on');
  • В подсистеме Визуализации включите логгирование сигнала для блока ISO.

set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable');

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

vmax = [35, 40, 45];
numExperiments = length(vmax);

4. Создайте массив входных параметров симуляции, которые устанавливают Ссылочные параметры блоков Генератора Продольная ссылка скорости, xdot_r равный 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)));
end

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

save_system(mdl)
tic;
simout = parsim(in,'ShowSimulationManager','on');
toc;
[17-Dec-2020 14:19:27] Checking for availability of parallel pool...
[17-Dec-2020 14:19:27] Starting Simulink on parallel workers...
[17-Dec-2020 14:19:28] Loading project on parallel workers...
[17-Dec-2020 14:19:28] Configuring simulation cache folder on parallel workers...
[17-Dec-2020 14:19:28] Loading model on parallel workers...
[17-Dec-2020 14:19:44] Running simulations...
[17-Dec-2020 14:20:29] Completed 1 of 3 simulation runs
[17-Dec-2020 14:20:55] Completed 2 of 3 simulation runs
[17-Dec-2020 14:21:24] Completed 3 of 3 simulation runs
[17-Dec-2020 14:21:25] Cleaning up parallel workers...
Elapsed time is 130.512151 seconds.

6. Закройте окна Simulation Data Inspector.

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

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

1. Откройте Инспектора Данных моделирования. На Панели инструментов Simulink, на вкладке Simulation, рассматриваемых Результатах, нажимают Data Inspector.

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

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

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

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

for idx = 1:numExperiments
    % Create sdi run object
    simoutRun(idx)=Simulink.sdi.Run.create;
    simoutRun(idx).Name=['Velocity = ', num2str(vmax(idx))];
    add(simoutRun(idx),'vars',simout(idx));
end
sigcolor=[0 1 0;0 0 1;1 0 1];
for idx = 1:numExperiments
    % Extract the lateral acceleration, position, and steering
    msignal(idx)=getSignalByIndex(simoutRun(idx),265);
    msignal(idx).LineColor =sigcolor((idx),:);
    ssignal(idx)=getSignalByIndex(simoutRun(idx),252);
    ssignal(idx).LineColor =sigcolor((idx),:);
    asignal(idx)=getSignalByIndex(simoutRun(idx),249);
    asignal(idx).LineColor =sigcolor((idx),:);
end
Simulink.sdi.view
Simulink.sdi.setSubPlotLayout(3,1);
for idx = 1:numExperiments
    % Plot the lateral position, steering angle, and lateral acceleration
    plotOnSubPlot(ssignal(idx),1,1,true);
    plotOnSubPlot(msignal(idx),2,1,true);
    plotOnSubPlot(asignal(idx),3,1,true);
end

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

Последующий анализ

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

1. Извлеките поперечное ускорение и держащийся угол. Отобразите данные на графике. Результаты похожи на этот график.

figure
for idx = 1:numExperiments
    % Extract Data
    log = get(simout(idx),'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

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

figure
for idx = 1:numExperiments
    % Extract Data
    log = get(simout(idx),'logsout');
    x = log{1}.Values.Body.InertFrm.Cg.Disp.X.Data;
    y = log{1}.Values.Body.InertFrm.Cg.Disp.Y.Data;
    legend_labels{idx} = [num2str(vmax(idx)), ' mph'];
    % Plot vehicle location
    axis('equal')
    plot(y,x)
    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.

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

| |

Похожие темы