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

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

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

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

helpersetupcr;

Запуск маневра постоянного радиуса

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

  • Маневр - Constant radius

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

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

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

2. Выберите блок Reference Generator 3D вкладке Engine. По умолчанию параметр 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

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

  • В Подсистеме Визуализации откройте блок Steer, Velocity, Lat Accel Scope, чтобы отобразить угол поворота, скорость и боковое ускорение от времени.

Скорость свипа

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

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

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

  • Выберите блок Ссылки Generator Stop симуляции при боковом ускорении порога параметра.

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

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. Создайте массив входных параметров симуляции, которые задают блочный параметр Reference Generator Longitudinal 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. Закройте окна Данных моделирования Inspector.

Используйте Данные Моделирования Inspector для анализа результатов

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

1. Откройте Данные моделирования Inspector. На панели инструментов Simulink, на вкладке Simulation, в разделе Review Results, нажмите Data Inspector.

  • В Данные моделирования Inspector выберите Import.

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

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

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. Установившиеся Процедуры тестирования управления направлением для легковых и легких автомобилей. Warrendale, PA: SAE International, 1996.

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

См. также

| |

Похожие темы