uavScenario

Сгенерируйте сценарий симуляции UAV

    Описание

    uavScenario объект генерирует сценарий симуляции, состоящий из статических сеток, платформ UAV и датчиков в 3-D среде.

    Создание

    scene = uavScenario создает пустой сценарий UAV со значениями свойств по умолчанию. Инерционные системы координат по умолчанию являются северо-востоком вниз (NED) и системами координат "восточного севера" (ENU).

    scene = uavScenario(Name,Value) конфигурирует uavScenario объект со свойствами с помощью одного или нескольких Name,Value парные аргументы. Name имя свойства и Value соответствующее значение. Name должен появиться в кавычках. Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN. Любые незаданные свойства берут значения по умолчанию.

    Используя этот синтаксис, можно задать UpdateRate, StopTime, HistoryBufferSize, ReferenceLocation, и MaxNumFrames свойства. Вы не можете задать другие свойства uavScenario объект, которые только для чтения.

    Свойства

    развернуть все

    Частота обновления симуляции в виде положительной скалярной величины в Гц. Размер шага сценария при использовании advance объектная функция равна инверсии частоты обновления.

    Пример 2

    Типы данных: double

    Время остановки симуляции в виде неотрицательного скаляра. Сценарий прекращает совершенствоваться, когда он достигает времени остановки.

    Пример: 60.0

    Типы данных: double

    Максимальное количество шагов, сохраненных в сценарии в виде положительного целого числа, больше, чем 1. Это свойство определяет максимальное количество систем координат положений платформы, сохраненных в сценарии. Если количество симулированных шагов превышает значение этого свойства, то сценарий хранит только последние шаги.

    Пример: 60

    Типы данных: double

    Источник сценария в геодезических координатах в виде вектора с 3 элементами из скаляров в форме [latitude longitude altitude]. latitude и longitude геодезические координаты в градусах. altitude высота выше ссылочного эллипсоида WGS84 в метрах.

    Типы данных: double

    Максимальное количество систем координат в сценарии в виде положительного целого числа. Объединенное количество инерционных систем координат, платформ и датчиков, добавленных к сценарию, должно быть меньше чем или равно значению этого свойства.

    Пример: 15

    Типы данных: double

    Это свойство доступно только для чтения.

    Текущее время симуляции в виде неотрицательного скаляра.

    Типы данных: double

    Это свойство доступно только для чтения.

    Укажите, запускается ли сценарий в виде true или false. После того, как симуляция сценария запускается, она запускается, пока она не достигает времени остановки.

    Типы данных: логический

    Это свойство доступно только для чтения.

    Информация о преобразовании между всеми системами координат в сценарии в виде transformTree объект. Это свойство содержит информацию о преобразовании между инерционным, платформой и системами координат датчика, сопоставленными со сценарием.

    Типы данных: object

    Это свойство доступно только для чтения.

    Имена инерционных систем координат в сценарии в виде вектора из строк.

    Типы данных: string

    Это свойство доступно только для чтения.

    Платформы UAV в сценарии в виде массива uavPlatform объекты.

    Функции объекта

    setupПодготовьте сценарий UAV к симуляции
    addCustomTerrainДобавьте пользовательские данные о ландшафте
    addMeshДобавьте новую статическую mesh в сценарий UAV
    addInertialFrameЗадайте новую инерционную систему координат в сценарии UAV
    advanceУсовершенствуйте симуляцию сценария UAV одним временным шагом
    updateSensorsОбновите показания датчика в сценарии UAV
    removeCustomTerrainУдалите пользовательские данные о ландшафте
    restartСбросьте симуляцию сценария UAV
    showВизуализируйте сценарий UAV в 2D
    show3DВизуализируйте сценарий UAV в 3-D
    terrainHeightВозвращает высоту ландшафта в сценариях UAV

    Примеры

    свернуть все

    Создайте сценарий UAV и установите его локальный источник.

    scene = uavScenario("UpdateRate",200,"StopTime",2,"ReferenceLocation",[46, 42, 0]); 

    Добавьте инерционную систему координат под названием MAP к scneario.

    scene.addInertialFrame("ENU","MAP",trvec2tform([1 0 0])); 

    Добавьте одну наземную mesh и две цилиндрических сетки препятствия к сценарию.

    scene.addMesh("Polygon", {[-100 0; 100 0; 100 100; -100 100],[-5 0]},[0.3 0.3 0.3]);
    scene.addMesh("Cylinder", {[20 10 10],[0 30]}, [0 1 0]); 
    scene.addMesh("Cylinder", {[46 42 5],[0 20]}, [0 1 0], "UseLatLon", true); 

    Создайте платформу UAV с заданной waypoint траекторией в сценарии. Задайте mesh для платформы UAV.

    traj = waypointTrajectory("Waypoints", [0 -20 -5; 20 -20 -5; 20 0 -5],"TimeOfArrival",[0 1 2]); 
    uavPlat = uavPlatform("UAV",scene,"Trajectory",traj); 
    updateMesh(uavPlat,"quadrotor", {4}, [1 0 0],eul2tform([0 0 pi])); 
    addGeoFence(uavPlat,"Polygon", {[-50 0; 50 0; 50 50; -50 50],[0 100]},true,"ReferenceFrame","ENU"); 

    Присоедините датчик INS к передней стороне платформы UAV.

    insModel = insSensor(); 
    ins = uavSensor("INS",uavPlat,insModel,"MountingLocation",[4 0 0]); 

    Визуализируйте сценарий в 3-D.

    ax = show3D(scene); 
    axis(ax,"equal"); 

    Симулируйте сценарий.

    setup(scene); 
    while advance(scene) 
        % Update sensor readings 
        updateSensors(scene); 
    
        % Visualize the scenario 
        show3D(scene,"Parent",ax,"FastUpdate",true); 
        drawnow limitrate 
    end 

    В этом примере показано, как добавить, что ландшафт и пользовательское создание сцепляются к сценарию UAV.

    Добавьте поверхность ландшафта

    Добавьте поверхность ландшафта на основе данных о вертикальном изменении ландшафта из n39_w106_3arc_v2.dt1 Файл DTED.

    addCustomTerrain("CustomTerrain","n39_w106_3arc_v2.dt1");
    scenario = uavScenario("ReferenceLocation", [39.5 -105.5 0]);
    addMesh(scenario,"terrain", {"CustomTerrain", [-200 200], [-200 200]}, [0.6 0.6 0.6]);
    show3D(scenario);

    Figure contains an axes. The axes contains an object of type patch.

    Добавьте создания

    Добавьте пару пользовательских сеток создания с помощью вершин и сеток многоугольника в сценарий. Используйте terrainHeight функция, чтобы получить наземную высоту для каждой основы сборки.

    buildingCenters = [-50, -50; 100 100];
    
    buildingHeights = [30 100];
    buildingBoundary = [-25 -25; -25 50; 50 50; 50 -25];
    for idx = 1:size(buildingCenters,1)
        buildingVertices = buildingBoundary+buildingCenters(idx,:);
        buildingBase = min(terrainHeight(scenario,buildingVertices(:,1),buildingVertices(:,2)));
        addMesh(scenario,"polygon", {buildingVertices, buildingBase+[0 buildingHeights(idx)]}, [0.3922 0.8314 0.0745]);
    end
    
    show3D(scenario);
    view([0 15])

    Figure contains an axes. The axes contains 3 objects of type patch.

    Удалите пользовательский ландшафт

    Удалите пользовательский ландшафт, который был импортирован.

    removeCustomTerrain("CustomTerrain")
    Введенный в R2020b