Создайте демонстрационную реализацию для UAV пользовательский интерфейс датчика
createCustomSensorTemplate
создает демонстрационную реализацию для UAV пользовательский датчик, который наследовался uav.SensorAdaptor
класс. Эта функция открывает новый файл в Редакторе MATLAB®.
Создайте адаптер датчика для imuSensor
от Navigation Toolbox™ и собирают показания для симулированного сценария рейса UAV.
Создайте адаптер датчика
Используйте createSensorAdaptorTemplate
функция, чтобы сгенерировать датчик шаблона и обновить его, чтобы адаптировать imuSensor
объект для использования в сценарии UAV.
createCustomSensorTemplate
Этот пример provivdes класс адаптера uavIMU
, который может быть просмотрен используя следующую команду.
edit uavIMU.m
Используйте адаптер датчика в симуляции сценария UAV
Используйте адаптер датчика IMU в симуляции Сценария UAV. Во-первых, создайте сценарий.
scenario = uavScenario("StopTime", 8, "UpdateRate", 100);
Создайте платформу UAV и задайте траекторию. Добавьте mesh фиксированного крыла для визуализации.
plat = uavPlatform("UAV", scenario, "Trajectory", ... waypointTrajectory([0 0 0; 100 0 0; 100 100 0], "TimeOfArrival", [0 5 8], "AutoBank", true)); updateMesh(plat,"fixedwing", {10}, [1 0 0], eul2tform([0 0 pi]));
Присоедините датчик IMU с помощью uavSensor
возразите и задайте uavIMU
как вход. Загрузите параметры для модели датчика.
imu = uavSensor("IMU", plat, uavIMU(imuSensor)); fn = fullfile(matlabroot,'toolbox','shared',... 'positioning','positioningdata','generic.json'); loadparams(imu.SensorModel,fn,"GenericLowCost9Axis");
Визуализируйте сценарий.
figure ax = show3D(scenario); xlim([-20 200]); ylim([-20 200]);
Предварительно выделите simData
структура и поля, чтобы сохранить данные моделирования. Датчик IMU выведет ускорение и угловые уровни.
simData = struct; simData.Time = duration.empty; simData.AccelerationX = zeros(0,1); simData.AccelerationY = zeros(0,1); simData.AccelerationZ = zeros(0,1); simData.AngularRatesX = zeros(0,1); simData.AngularRatesY = zeros(0,1); simData.AngularRatesZ = zeros(0,1);
Setup сценарий.
setup(scenario);
Запустите симуляцию с помощью advance
функция. Обновите датчики и запишите данные.
updateCounter = 0; while true % Advance scenario. isRunning = advance(scenario); updateCounter = updateCounter + 1; % Update sensors and read IMU data. updateSensors(scenario); [isUpdated, t, acc, gyro] = read(imu); % Store data in structure. simData.Time = [simData.Time; seconds(t)]; simData.AccelerationX = [simData.AccelerationX; acc(1)]; simData.AccelerationY = [simData.AccelerationY; acc(2)]; simData.AccelerationZ = [simData.AccelerationZ; acc(3)]; simData.AngularRatesX = [simData.AngularRatesX; gyro(1)]; simData.AngularRatesY = [simData.AngularRatesY; gyro(2)]; simData.AngularRatesZ = [simData.AngularRatesZ; gyro(3)]; % Update visualization every 10 updates. if updateCounter > 10 show3D(scenario, "FastUpdate", true, "Parent", ax); updateCounter = 0; drawnow limitrate end % Exit loop when scenario is finished. if ~isRunning break; end end
Визуализируйте симулированные показания IMU.
simTable = table2timetable(struct2table(simData)); figure stackedplot(simTable, ["AccelerationX", "AccelerationY", "AccelerationZ", ... "AngularRatesX", "AngularRatesY", "AngularRatesZ"], ... "DisplayLabels", ["AccX (m/s^2)", "AccY (m/s^2)", "AccZ (m/s^2)", ... "AngularRateX (rad/s)", "AngularRateY (rad/s)", "AngularRateZ (rad/s)"]);
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.