В этом примере показано, как использовать динамику аппарата, медленно увеличивая пример готовых узлов рулевого управления, для анализа влияния угла рулевого управления и скорости на управление транспортным средством. В частности, можно вычислить коэффициент усиления рулевого управления, когда вы запускаете маневр с различными точками набора скоростей. Основываясь на постоянной скорости, переменном рулевом тесте, определенном в 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, чтобы изучить результаты. Можно использовать пользовательский интерфейс или, кроме того, функции командной строки.
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.
polyfit
| Simulink.SimulationInput
| Simulink.SimulationOutput