Этот пример показывает, как запустить маневр изменения двойного маршрута динамики аппарата на различных дорожных покрытиях, анализировать устойчивость отклонения от курса автомобиля и определить успех маневра.
ISO 3888-21 задает маневр изменения двойного маршрута, чтобы проверить производительность предотвращения препятствия автомобиля. В тесте, драйвере:
Ускоряется, пока автомобиль не врезается в целевую скорость
Отпускает педаль акселератора
Руль поворотов, чтобы следовать за путем в левый маршрут
Руль поворотов, чтобы следовать за путем назад в правильный маршрут
Как правило, конусы отмечают контуры маршрута. Если автомобиль и драйвер могут согласовать маневр, не врезаясь в конус, автомобиль проходит тест.
Для получения дополнительной информации о примере готовых узлов, смотрите Маневр Изменения Двойного Маршрута.
Создайте и откройтесь, рабочая копия двойного маршрута изменяют пример готовых узлов.
Откройте блок Lane Change Reference Generator. По умолчанию маневр установлен с этими параметрами:
Longitudinal entrance velocity setpoint — 35 миль в час
Vehicle width — 2 м
Lateral reference position breakpoints и Lateral reference data — Значения, которые задают боковую ссылочную траекторию как функцию продольного расстояния
В подсистеме Визуализации откройте 3D Блок двигателя.
Расположите автомобиль в рекомендуемое местоположение для маневра изменения двойного маршрута.
Установите эти параметры.
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 среду визуализации Блока двигателя, можно просмотреть ответ автомобиля в окне VehicleSimulation.

Запустите приложение готовых узлов на трех дорожных покрытиях с различными масштабными коэффициентами трения. Используйте результаты анализировать устойчивость отклонения от курса, и справка определяют успех маневра.
В двойном маршруте изменяют модель DLCReferenceApplication примера готовых узлов, открывают подсистему Среды. Параметры блоков Трения 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, равный Трению постоянные параметры блоков.
% 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; delete(gcp('nocreate'))
Импортируйте результаты симуляции Инспектору Данных моделирования.
На панели инструментов Simulink Editor нажмите кнопку Simulation 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. Легковые автомобили — Испытательная площадка для серьезного маневра изменения маршрута.