В этом примере показано, как проверить сгенерированный код при помощи программного обеспечения в цикле (SIL) и процессор в цикле (PIL) выполнение. В этом примере выполнение PIL использует аппаратную плату Raspberry Pi®.
Этот пример использует эти вспомогательные файлы:
kalman01.m
содержит функцию MATLAB® kalman01
для Оценки состояния фильтра Калмана.
position.mat
содержит входные данные о траектории объекта.
test01_ui.m
скрипт MATLAB, который загружает входные данные от position.mat
в рабочую область, kalman01
вызовов оценить местоположение объекта при помощи алгоритма фильтрации Кальмана, и наконец вызывает
plot_trajectory
функция, которая строит и фактическую траекторию объекта и оценку Кальмана.
plot_trajectory.m
содержит plot_trajectory
функция, описанная выше.
Чтобы протестировать код MATLAB, запустите скрипт test01_ui
.
test01_ui
Current plot held
Current plot released
В графике, который отображен, вы видите, что оценка Кальмана сопровождает фактическую траекторию объекта. Тестовые данные включают два внезапных сдвига или разрывы в положении. Эти разрывы проверяют, что Фильтр Калмана может быстро приспособить свою оценку и возвратиться к отслеживанию объекта точно.
Для получения дополнительной информации смотрите генерацию кода C для Алгоритма фильтрации Кальмана MATLAB.
В выполнении SIL, через интерфейс MATLAB SIL, генератор кода скомпилировал и запустил код библиотеки по вашему компьютеру разработчика.
Создайте coder.EmbeddedCodeConfig
объект сгенерировать статическую библиотеку C. Установите VerificationMode
свойство к 'SIL'
. Опционально, включите отладчик Microsoft® Visual Studio® для выполнения SIL.
config = coder.config('lib'); config.VerificationMode = 'SIL'; % config.SILDebugging = true;
Проверяйте, что производственная аппаратная установка установлена в значение по умолчанию 'Generic->MATLAB Host Computer'
.
disp(config.HardwareImplementation.ProdHWDeviceType);
Generic->MATLAB Host Computer
Используйте codegen
команда с объектом config
настройки сгенерировать статическую библиотеку C и интерфейс SIL для
kalman01
функция. Чтобы выполнить выполнение SIL, можно просто вызвать сгенерированный интерфейс SIL kalman01_sil
в командной строке MATLAB.
В codegen
команда, -test
опция позволяет вам запустить тестовый скрипт test01_ui
с вызовами kalman01
функция, замененная вызовами сгенерированного интерфейса SIL kalman01_sil
.
codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui
Code generation successful: View report Running test file: 'test01_ui' with MEX function 'kalman01_sil.mexw64'. Current plot held ### Starting SIL execution for 'kalman01' To terminate execution: clear kalman01_sil
Current plot released
Генератор кода создает эти выходные папки:
codegen\lib\kalman01
— Статическая библиотека для kalman01
.
codegen\lib\kalman01\sil
— Код интерфейса SIL для kalman01
.
Заметьте, что выход этого запуска совпадает с выходом от kalman01
Функция MATLAB.
Если вы включаете отладчик Microsoft Visual Studio, то выполнение тестового файла открывает IDE Microsoft Visual Studio с точками останова отладчика в начале kalman01_initialize
и kalman01
функции.
Можно использовать функции отладчика, чтобы наблюдать поведение кода. Например, можно продвинуться через код и исследовать переменные.
Закончить сеанс отладки:
Удалите все точки останова.
Кликните по кнопке (F5) Continue.
Выполнение SIL выполнение до завершения.
Отключите процесс выполнения SIL.
clear kalman01_sil;
### Stopping SIL execution for 'kalman01'
Можно также использовать команду clear mex
, который очищает MEX-функции из памяти.
Указания по применению для выполнения SIL на платформе Windows:
Windows Firewall может потенциально блокировать выполнение SIL. Чтобы позволить выполнение, используйте диалоговое окно сигнала безопасности Windows. Например, в Windows 7, нажмите, предоставляют доступ.
Предположим что текущая рабочая директория MATLAB (папка, что pwd
отображения), путь UNC (например, \\server\a\b\c
) на платформе Windows. Если при запуске исполняемый файл SIL от этого пути, местоположение, где исполняемый файл SIL запускается, может быть непредсказуемым и отличаться от текущей рабочей директории MATLAB (например, C:\Windows
). Чтобы устранить эту проблему, используйте подключенный сетевой диск для пути UNC как ваша текущая рабочая директория MATLAB.
В выполнении PIL, через интерфейс MATLAB PIL, код производственного объекта кросс-компиляций и запусков генератора кода по целевому процессору или эквивалентному симулятору процессора. Прежде чем вы запустите выполнение PIL, необходимо настроить настройку возможности соединения PIL для цели. В этом примере выполнение PIL использует аппаратную плату Raspberry Pi®.
Создайте coder.EmbeddedCodeConfig
объект сгенерировать статическую библиотеку C. Установите VerificationMode
свойство к 'PIL'
. Установите Hardware
свойство к аппаратной конфигурации платы возражает для Raspberry Pi.
config = coder.config('lib'); config.VerificationMode = 'PIL'; config.Hardware = coder.hardware('Raspberry Pi');
Если вы к своей аппаратной плате Распхэрри Пи впервые, необходимо также задать Username
, DeviceAddress
, и Password
свойства config.Hardware
параметр.
Используйте codegen
команда с объектом config
настройки сгенерировать статическую библиотеку C и интерфейс PIL для
kalman01
функция. Чтобы выполнить выполнение PIL, можно просто вызвать сгенерированный интерфейс PIL kalman01_pil
в командной строке MATLAB.
В codegen
команда, -test
опция позволяет вам запустить тестовый скрипт test01_ui
с вызовами kalman01
функция, замененная вызовами сгенерированного интерфейса PIL kalman01_pil
.
codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui
### Connectivity configuration for function 'kalman01': 'Raspberry Pi' Location of the generated elf : /home/pi/MATLAB_ws/R2021b/C/Users/aghosh/Documents/Examples/ecoder-ex65983262/codegen/lib/kalman01/pil Code generation successful: View report Running test file: 'test01_ui' with MEX function 'kalman01_pil.mexw64'. Current plot held ### Connectivity configuration for function 'kalman01': 'Raspberry Pi' ### Starting application: 'codegen\lib\kalman01\pil\kalman01.elf' To terminate execution: clear kalman01_pil ### Launching application kalman01.elf...
Current plot released
Генератор кода создает эти выходные папки:
codegen\lib\kalman01
— Статическая библиотека для kalman01
.
codegen\lib\kalman01\pil
— Код интерфейса PIL для kalman01
.
Заметьте, что выход этого запуска совпадает с выходом от kalman01
Функция MATLAB.
Windows Firewall может потенциально блокировать выполнение PIL. Чтобы позволить выполнение, используйте диалоговое окно сигнала безопасности Windows. Например, в Windows 7, нажмите, предоставляют доступ.
Отключите процесс выполнения PIL.
clear kalman01_pil;
### Host application produced the following standard output (stdout) and standard error (stderr) messages:
Можно также использовать команду clear mex
, который очищает MEX-функции из памяти.
codegen
| coder.config
| coder.EmbeddedCodeConfig