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