Этот пример показывает, как запустить маневр изменения двойного маршрута динамики аппарата на различных дорожных покрытиях, анализировать устойчивость отклонения от курса автомобиля и определить успех маневра.
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. Легковые автомобили — Испытательная площадка для серьезного маневра изменения маршрута.