exponenta event banner

uavScenario

Создать сценарий моделирования БПЛА

    Описание

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

    Создание

    scene = uavScenario создает пустой сценарий БПЛА со значениями свойств по умолчанию. Инерционными кадрами по умолчанию являются кадры «север-восток-вниз» (NED) и «восток-север-вверх» (RUS).

    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Добавить новую статическую сетку в сценарий БПЛА
    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])); 

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

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

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

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

    Прикрепите датчик ИНС к передней части платформы БПЛА.

    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 

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

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

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