exponenta event banner

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

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

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

Дополнительные сведения о справочном приложении см. в разделе Маневр постоянного радиуса.

helpersetupcr;

Выполнение маневра постоянного радиуса

1. Откройте блок «Генератор привязок». По умолчанию маневр устанавливается со следующими параметрами:

  • Манёвр - Constant radius

  • Использовать специально для маневра водителя, исходное положение и сцену - вкл.

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

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

2. Выберите блок «Генератор привязок» 3D вкладке «Двигатель». По умолчанию параметр 3D Engine имеет значение Disabled. Требования к платформе модуля визуализации 3D и рекомендации по аппаратному обеспечению см. в разделе Требования и ограничения модуля визуализации 3D.

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 для отображения угла поворота, скорости и бокового ускорения в зависимости от времени.

Скорость сдвига

Запустите приложение привязки постоянного радиуса с тремя различными скоростями. Прекратить моделирование, если транспортное средство превышает порог бокового ускорения, равный 0,5 g.

1. В медленно увеличивающейся модели эталонного приложения рулевого управления CRRefingApplication откройте блок генератора привязок. Уставка продольной скорости, параметр блока xdot_r задает скорость транспортного средства. По умолчанию скорость составляет 50 миль/ч.

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

  • Выберите параметр моделирования останова блока генератора привязок при пороговом значении бокового ускорения.

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

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

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. Закройте окна инспектора данных моделирования.

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

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

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

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

  • В диалоговом окне «Импорт» снимите флажок «Выход из системы». Выбрать simout(1), simout(2), и simout(3). Выберите Импорт.

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

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

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

См. также

| |

Связанные темы