uavScenario

Сгенерируйте сценарий симуляции БПЛА

    Описание

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

    Создание

    scene = uavScenario создает пустой сценарий БПЛА со значениями свойств по умолчанию. Инерционными системами координат по умолчанию являются системы координат северо-востока-вниз (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. После начала симуляции сценария он запускается до тех пор, пока не достигнет времени остановки.

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

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

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

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

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

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

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

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

    Платформы БПЛА в сценарии, заданные как массив uavPlatform объекты.

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

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

    Примеры

    свернуть все

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

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

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

    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); 

    Создайте платформу БПЛА с заданной траекторией путевой точки в сценарии. Определите mesh для платформы БПЛА.

    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 к передней части платформы БПЛА.

    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 

    В этом примере показано, как добавить рельеф местности и пользовательский mesh создания к сценарию БПЛА.

    Добавление поверхности местности

    Добавьте поверхность местности на основе данных о повышении местности из 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