В этом примере показано, как запустить маневр изменения двойного маршрута динамики аппарата на различных дорожных покрытиях, анализируйте устойчивость отклонения от курса транспортного средства и определите успех маневра.
ISO 3888-21 задает маневр изменения двойного маршрута, чтобы проверить производительность предотвращения препятствия транспортного средства. В тесте, драйвере:
Ускоряется, пока транспортное средство не врезается в целевую скорость
Отпускает педаль акселератора
Руль поворотов, чтобы следовать за путем в левый маршрут
Руль поворотов, чтобы следовать за путем назад в правильный маршрут
Как правило, конусы отмечают контуры маршрута. Если транспортное средство и драйвер могут согласовать маневр, не врезаясь в конус, транспортное средство проходит тест.
Для получения дополнительной информации о примере готовых узлов, смотрите Маневр Изменения Двойного Маршрута.
Создайте и откройтесь, рабочая копия двойного маршрута изменяют пример готовых узлов.
Откройте блок Lane Change Reference Generator. По умолчанию маневр установлен этими параметрами:
Longitudinal entrance velocity setpoint — 35 миль в час
Vehicle width — 2 м
Lateral reference position breakpoints и Lateral reference data — Значения, которые задают боковую ссылочную траекторию как функцию продольного расстояния
В подсистеме Визуализации откройте блок 3D Engine.
Расположите транспортное средство в рекомендуемое местоположение для маневра изменения двойного маршрута.
Установите эти параметры.
Scene к Double lane change
Выберите Recommended for scene
Выберите Apply, чтобы изменить начальные параметры положения транспортного средства.
Нажмите Update the model workspaces with the initial values, чтобы перезаписать начальное положение транспортного средства в рабочих пространствах модели с прикладными значениями.
По умолчанию параметр 3D Engine устанавливается на Disabled. Для 3D требований платформы механизма визуализации и рекомендаций по аппаратным средствам, смотрите 3D Требования Engine Визуализации.
Запустите маневр. Когда симуляция запускается, информация о транспортном средстве представления.
В окне Vehicle Position просмотрите транспортное средство продольное расстояние как функцию бокового расстояния.
В подсистеме Визуализации откройте блок Lane Change scope, чтобы отобразить боковое смещение как функцию времени.
Красная линия — Конусы, отмечающие контур маршрута
Синяя линия — Ссылочная траектория
Зеленая линия — Фактическая траектория
Зеленая линия действительно близко подходит к красной линии, которая отмечает конусы.
В подсистеме Визуализации, если вы включаете среду визуализации блока 3D Engine, можно просмотреть ответ транспортного средства в AutoVrtlEnv
окно.
Запустите приложение готовых узлов на трех дорожных покрытиях с различными масштабными коэффициентами трения. Используйте результаты анализировать устойчивость отклонения от курса, и справка определяют успех маневра.
В двойном маршруте изменяют модель DLCReferenceApplication
примера готовых узлов, откройте подсистему Среды. Параметры блоков Friction Constant value задают масштабный коэффициент трения. По умолчанию масштабным коэффициентом трения является
1.0
. Пример готовых узлов использует коэффициент, чтобы настроить трение на каждом временном шаге.
В подсистеме Визуализации включите логгирование сигнала. Можно использовать редактор Simulink® или, альтернативно, команды MATLAB®. Сохраните модель.
Элемент модели | Редактор Simulink |
---|---|
VehFdbk inport |
|
Импорт маршрута |
|
Блок ISO 15037-1:2006 |
|
3D Блок двигателя |
|
В качестве альтернативы используйте эти команды, чтобы включить логгирование сигнала и сохранить модель.
% Open the model mdl = 'DLCReferenceApplication'; open_system(mdl); % Enable signal logging for VehFdbk ph=get_param('DLCReferenceApplication/Visualization/VehFdbk','PortHandles'); set_param(ph.Outport,'DataLogging','on'); % Enable signal logging for Lane ph=get_param('DLCReferenceApplication/Visualization/Lane','PortHandles'); set_param(ph.Outport,'DataLogging','on'); % Enable signal logging for ISO block set_param([mdl '/Visualization/ISO 15037-1:2006'],'Measurement','Enable'); % Disable 3D environment set_param([mdl '/Visualization/3D Engine'],'engine3D','Disabled'); save_system(mdl)
Настройте вектор с масштабными коэффициентами трения, lambdamu
, то, что вы хотите заняться расследованиями. Например, чтобы исследовать масштабные коэффициенты трения равняются 0.9
, 0.95, и
1.0
, в командной строке войдите:
mdl = 'DLCReferenceApplication'; open_system(mdl); % Define the set of parameters to sweep lambdamu = [0.9, 0.95, 1.0]; numExperiments = length(lambdamu);
Создайте массив входных параметров симуляции, который устанавливает lambdamu
равняйтесь Friction постоянным параметрам блоков.
% Create an array of Simulink.SimulationInputs for idx = numExperiments:-1:1 in(idx) = Simulink.SimulationInput(mdl); in(idx) = in(idx).setBlockParameter([mdl '/Environment/Friction'],'Value',['ones(4,1).*',num2str(lambdamu(idx))]); end
Установите время остановки симуляции в 30 с. Сохраните модель и запустите симуляции. При наличии используйте параллельные вычисления.
set_param(mdl,'StopTime','30') save_system(mdl) tic; simout = parsim(in,'ShowSimulationManager','on'); toc;
Импортируйте результаты симуляции Инспектору Данных моделирования.
На панели инструментов Simulink Editor нажмите кнопку Data Inspector.
В Инспекторе Данных моделирования выберите Import.
В диалоговом окне Import очистите logsout
. Выберите simout(1)
, simout(2)
, и simout(3)
. Выберите Import.
Выберите каждый из запусков. Для каждого запуска щелкните правой кнопкой, чтобы переименовать запуск к масштабному коэффициенту трения, который соответствует симуляции.
Исследуйте результаты в Инспекторе Данных моделирования.
Чтобы оценить успех маневра тестируют когда lambdamu
равно.9.95, и 1.0, постройте верхний контур маршрута, <UB>
, более низкий контур маршрута, <LB>
, и боковое расстояние транспортного средства, Y
.
Результаты похожи на эти графики, которые показывают результаты для запусков. Результаты показывают, что положение ответвления транспортного средства действительно близко подходит к контурам маршрута.
Чтобы оценить устойчивость отклонения от курса для дорожных покрытий, постройте поперечное ускорение, ay
, боковое расстояние транспортного средства, Y
, угол отклонения от курса, psi
, и уровень отклонения от курса, r
.
Результаты похожи на эти графики. Результаты показывают, что транспортное средство имеет уровень отклонения от курса приблизительно.62 рад/с, когда масштабный коэффициент трения равен 1.
Чтобы исследовать результаты далее, используйте эти команды, чтобы извлечь поперечное ускорение, регулируя угол и траекторию транспортного средства от simout
объект.
Извлеките поперечное ускорение и держащийся угол. Отобразите данные на графике.
% Plot results from simout object: lateral acceleration vs steering angle figure for idx = 1:numExperiments % Extract Data log = simout(idx).get('logsout'); sa=log.get('Steering-wheel angle').Values; ay=log.get('Lateral acceleration').Values; legend_labels{idx} = ['lambdamu = ', num2str(lambdamu(idx))]; % 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
Результаты похожи на этот график. Они указывают, что самое большое поперечное ускорение происходит, когда масштабным коэффициентом трения является 1
.
Извлеките путь к транспортному средству. Отобразите данные на графике.
figure for idx = 1:numExperiments % Extract Data log = simout(idx).get('logsout'); VehFdbk = log.get('VehFdbk'); x = VehFdbk.Values.Body.X; y = VehFdbk.Values.Body.Y; legend_labels{idx} = ['lambdamu = ', num2str(lambdamu(idx))]; % Plot vehicle location plot(y.Data,x.Data) 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
Результаты похожи на этот график. Они указывают, что самое большое боковое положение транспортного средства происходит, когда масштабным коэффициентом трения является 0.9
.
Simulink.SimulationInput
| Simulink.SimulationOutput
[1] ISO 3888-2: 2011. Легковые автомобили — Испытательная площадка для серьезного маневра изменения маршрута.