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

В этом примере показано, как использовать динамику аппарата, медленно увеличивая пример готовых узлов рулевого управления, для анализа влияния угла рулевого управления и скорости на управление транспортным средством. В частности, можно вычислить коэффициент усиления рулевого управления, когда вы запускаете маневр с различными точками набора скоростей. Основываясь на постоянной скорости, переменном рулевом тесте, определенном в J266 SAE, медленно увеличивающийся маневр рулевого управления помогает охарактеризовать боковую динамику транспортного средства. В тесте драйвер:

  • Ускоряется до тех пор, пока транспортное средство не достигнет целевой скорости.

  • Поддерживает целевую скорость.

  • Линейно увеличивает угол поворота руля с 0 степеней до максимального угла.

  • Поддерживает угол поворота руля в течение заданного времени.

  • Линейно уменьшает угол поворота руля с максимального угла до 0 степеней.

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

helpersetupsis;

Запуск медленно увеличивающегося маневра рулевого управления

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

  • Уставка продольной скорости - 50 миль/ч

  • Скорость рулевого колеса - 13,5 град.

  • Максимальный угол наклона маховика - 270 град

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

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

mdl = 'ISReferenceApplication';
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 4m 0.663s

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

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

Точки скорости сдвига

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

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

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

  • Включите логгирование сигнала для вывода сигнала медленно увеличивающегося шагового сигнала Ref.

mdl = 'ISReferenceApplication';
ph=get_param('ISReferenceApplication/Slowly Increasing Steer','PortHandles');
set_param(ph.Outport(1),'DataLogging','on');
  • Включите регистрацию сигнала для сигнала вывода блока Passenger Vehicle.

ph=get_param('ISReferenceApplication/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 = [45, 50, 55];
numExperiments = length(vmax);

4. Создайте массив входов симуляции, который устанавливает генератор Ссылки Swept Sine параметров блоков амплитуду рулевого управления theta_hw равной amp.

for idx = numExperiments:-1:1
    in(idx) = Simulink.SimulationInput(mdl);
    in(idx) = in(idx).setBlockParameter([mdl '/Slowly Increasing Steer'], ...
        'xdot_r', num2str(vmax(idx)));
end

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

save_system(mdl)
tic;
simout = parsim(in,'ShowSimulationManager','on');
toc;
[17-Dec-2020 14:50:03] Checking for availability of parallel pool...
[17-Dec-2020 14:50:03] Starting Simulink on parallel workers...
[17-Dec-2020 14:50:03] Loading project on parallel workers...
[17-Dec-2020 14:50:03] Configuring simulation cache folder on parallel workers...
[17-Dec-2020 14:50:03] Loading model on parallel workers...
[17-Dec-2020 14:50:14] Running simulations...
[17-Dec-2020 14:51:05] Completed 1 of 3 simulation runs
[17-Dec-2020 14:51:05] Completed 2 of 3 simulation runs
[17-Dec-2020 14:51:06] Completed 3 of 3 simulation runs
[17-Dec-2020 14:51:07] Cleaning up parallel workers...
Elapsed time is 76.454042 seconds.

6. После завершения симуляций закройте окна Данных моделирования Inspector.

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

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

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

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

  • В диалоговом окне Импорт очистите logsout. Выберите 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
    xsignal(idx)=getSignalByIndex(simoutRun(idx),22);
    xsignal(idx).LineColor =sigcolor((idx),:);
    ysignal(idx)=getSignalByIndex(simoutRun(idx),23);
    ysignal(idx).LineColor =sigcolor((idx),:);
    msignal(idx)=getSignalByIndex(simoutRun(idx),255);
    msignal(idx).LineColor =sigcolor((idx),:);
    ssignal(idx)=getSignalByIndex(simoutRun(idx),251);
    ssignal(idx).LineColor =sigcolor((idx),:);
    asignal(idx)=getSignalByIndex(simoutRun(idx),259);
    asignal(idx).LineColor =sigcolor((idx),:);
end
Simulink.sdi.view
Simulink.sdi.setSubPlotLayout(5,1);
for idx = 1:numExperiments
    % Plot the lateral position, steering angle, and lateral acceleration
    plotOnSubPlot(msignal(idx),1,1,true);
    plotOnSubPlot(ssignal(idx),2,1,true);
    plotOnSubPlot(asignal(idx),3,1,true);
    plotOnSubPlot(xsignal(idx),4,1,true);
    plotOnSubPlot(ysignal(idx),5,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 SAE. Статические Процедуры тестирования управления направлением для легковых и легких автомобилей. Warrendale, PA: SAE International, 1996.

См. также

| |

Похожие темы