exponenta event banner

uavPlatform

Платформа БЛА для датчиков по сценарию

Описание

uavPlatform объект представляет собой платформу беспилотного летательного аппарата (БЛА) в заданном сценарии БЛА. Используйте платформу для определения и отслеживания траектории БПЛА в сценарии. Чтобы смоделировать показания датчиков для платформы, установите датчики, такие как gpsSensor, insSensor, и uavLidarPointCloudGenerator object™ системы на платформу в виде uavSensor объекты. Добавление сетки тела на платформу для визуализации с помощью updateMesh объектная функция. Установка ограничений геофайлинга с помощью addGeoFence и проверьте эти пределы с помощью checkPermission объектная функция.

Создание

Описание

platform = uavPlatform(name,scenario) создает платформу с указанным именем name и добавляет его к сценарию, указанному как uavScenario объект. Укажите аргумент имени как строковый скаляр. Аргумент name задает Name собственность.

пример

platform = uavPlatform(name,scenario,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение. Можно также указать свойства в качестве аргументов пары «имя-значение». Например, uavPlatform("UAV1",scene,'StartTime',10) устанавливает начальное время для траектории платформы равным 10 секундам. Заключить каждое имя свойства в кавычки

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'StartTime',10 устанавливает начальное время траектории платформы равным 10 секундам.

Начальное время траектории платформы, определяемое как разделенная запятыми пара, состоящая из 'StartTime' и скаляр в секундах.

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

Исходное положение платформы для БПЛА, определяемое как разделенная запятыми пара, состоящая из 'InitialPosition' и вектор формы [x y z]. Если свойство «Траектория» не задано, укажите только эту пару «имя-значение».

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

Исходная ориентация платформы для БПЛА, определяемая как разделенная запятыми пара, состоящая из 'InitialOrientation' и вектор формы [w x y z], представляющий кватернион. Если свойство «Траектория» не задано, укажите только эту пару «имя-значение».

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

Начальная скорость платформы для БПЛА, определяемая как разделенная запятыми пара, состоящая из 'InitialVelocity' и вектор формы [vx vy vz]. Если свойство «Траектория» не задано, укажите только эту пару «имя-значение».

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

Начальное ускорение платформы для БПЛА, определяемое как разделенная запятыми пара, состоящая из 'InitialAcceleration' и вектор формы [ax ay az]. Если свойство «Траектория» не задано, укажите только эту пару «имя-значение».

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

Начальная угловая скорость платформы для БПЛА, определяемая как разделенная запятыми пара, состоящая из 'InitialAngularVelocity' и трехэлементный вектор вида [x y z]. Величина вектора определяет угловую скорость в радианах в секунду. Координаты xyz определяют ось вращения по часовой стрелке. Если свойство «Траектория» не задано, укажите только эту пару «имя-значение».

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

Траектория движения платформы БПЛА, указанная как waypointTrajectory объект. По умолчанию предполагается, что платформа неподвижна и находится в начале координат. Для перемещения платформы на каждом этапе моделирования сценария используйте move объектная функция.

Примечание

uavPlatform объект должен указывать то же самое ReferenceFrame свойство как указанное waypointTrajectory объект.

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

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

Свойства

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

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

Пример: "uav1"

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

Траектория движения платформы БПЛА, указанная как waypointTrajectory объект. По умолчанию объект предполагает, что платформа является стационарной и находится в начале сценария. Для перемещения платформы на каждом этапе моделирования сценария используйте move объектная функция.

Примечание

uavPlatform объект должен указывать то же самое ReferenceFrame свойство как указанное waypointTrajectory объект.

Опорный кадр для вычисления движения платформы БПЛА, определяемый как строковый скалярный или символьный вектор, соответствующий любому опорному кадру в uavScenario. Объект вычисляет все движения платформы относительно этого инерционного кадра.

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

Сетка корпуса платформы БПЛА, указанная как extendedObjectMesh объект. Сетка тела описывает 3-D модель платформы для целей визуализации.

Цвет сетки тела платформы БПЛА при отображении в сценарии, указанный как триплет RGB.

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

Преобразование между корпусом платформы БПЛА и сетчатой рамкой, заданной как однородная матрица преобразования 4 на 4, отображающая точки в сетчатой рамке платформы в точки в рамке корпуса.

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

Сенсоры монтируются на платформе БПЛА, указанной как массив uavSensor объекты.

Геоскопические ограничения для платформы БПЛА, указанные как структурный массив со следующими полями:

  • Geometry один extendedObjectMesh объект, представляющий 3-D пространство для геофенции в кадре сценария.

  • Permission - логический скаляр, указывающий, разрешена ли платформа внутри геофанкции (true) или не допускается (false).

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

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

moveПереместить платформу БПЛА по сценарию
readСчитывание вектора движения БПЛА
updateMeshОбновить сетку тела для платформы БПЛА
addGeoFenceДобавить географическое ограждение к платформе БПЛА
checkPermissionПроверить разрешение платформы БПЛА по геофайнгу

Примеры

свернуть все

Создать сценарий для имитации полетов беспилотных летательных аппаратов (БЛА) между комплексом зданий. Пример демонстрирует обновление позы БПЛА при моделировании с разомкнутым контуром. Использовать сценарий БПЛА для визуализации полета БПЛА и формирования смоделированных показаний датчиков облаков точек.

Введение

Для тестирования автономных алгоритмов сценарий БПЛА позволяет генерировать тестовые примеры и генерировать данные датчиков из окружающей среды. Можно задать препятствия в рабочем пространстве, предоставить траектории БПЛА в глобальных координатах и преобразовать данные между координатными кадрами. Сценарий БПЛА позволяет визуализировать эту информацию в опорной системе окружения.

Создание сценария с помощью полигональных строительных сетей

A uavScenario объект представляет собой модель, состоящую из набора статических препятствий и подвижных объектов, называемых платформами. Использовать uavPlatform объекты для моделирования БПЛА, мультироторов и других объектов в рамках сценария. В этом примере создается сценарий, состоящий из нулевой плоскости и 11 зданий, например, с помощью выдавленных многоугольников. Данные полигонов для зданий загружаются и используются для добавления полигональных сетей.

% Create the UAV scenario.
scene = uavScenario("UpdateRate",2,"ReferenceLocation",[75 -46 0]);

% Add a ground plane.
color.Gray = 0.651*ones(1,3);
color.Green = [0.3922 0.8314 0.0745];
color.Red = [1 0 0];
addMesh(scene,"polygon",{[-250 -150; 200 -150; 200 180; -250 180],[-4 0]},color.Gray)

% Load building polygons.
load("buildingData.mat");

% Add sets of polygons as extruded meshes with varying heights from 10-30.
addMesh(scene,"polygon",{buildingData{1}(1:4,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{2}(2:5,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{3}(2:10,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{4}(2:9,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{5}(1:end-1,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{6}(1:end-1,:),[0 15]},color.Green)
addMesh(scene,"polygon",{buildingData{7}(1:end-1,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{8}(2:end-1,:),[0 10]},color.Green)
addMesh(scene,"polygon",{buildingData{9}(1:end-1,:),[0 15]},color.Green)
addMesh(scene,"polygon",{buildingData{10}(1:end-1,:),[0 30]},color.Green)
addMesh(scene,"polygon",{buildingData{11}(1:end-2,:),[0 30]},color.Green)

% Show the scenario.
show3D(scene);
xlim([-250 200])
ylim([-150 180])
zlim([0 50])

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

Определение платформы БПЛА и монтируемого датчика

Можно определить uavPlatform в сценарии в качестве носителя моделей датчиков и прогонять их по сценарию для сбора смоделированных данных датчиков. Платформу можно связать с различными сетками, например: fixedwing, quadrotor, и cuboid сетки. Можно определить пользовательские определяемые сети, представленные вершинами и гранями. Укажите опорную рамку для описания движения платформы.

Загрузите полетные данные в рабочее пространство и создайте квадроторную платформу с помощью системы координат NED. Укажите исходное положение и ориентацию на основе загруженных данных полетного журнала. Конфигурация корпуса БПЛА ориентирует ось X как прямую положительную, ось Y как правую положительную, а ось Z - вниз положительную.

load("flightData.mat")

% Set up platform
plat = uavPlatform("UAV",scene,"ReferenceFrame","NED", ...
    "InitialPosition",position(:,:,1),"InitialOrientation",eul2quat(orientation(:,:,1)));

% Set up platform mesh. Add a rotation to orient the mesh to the UAV body frame.
updateMesh(plat,"quadrotor",{10},color.Red,[0 0 0],eul2quat([0 0 pi]))

Можно установить различные датчики, например, insSensor, gpsSensor, или uavLidarPointCloudGenerator Система возражает против вашего БПЛА. Монтаж генератора облака точек лидара и uavSensor объект, содержащий модель лидарного датчика. Укажите место установки датчика относительно корпуса БПЛА.

lidarmodel = uavLidarPointCloudGenerator("AzimuthResolution",0.3324099,...
    "ElevationLimits",[-20 20],"ElevationResolution",1.25,...
    "MaxRange",90,"UpdateRate",2,"HasOrganizedOutput",true);

lidar = uavSensor("Lidar",plat,lidarmodel,"MountingLocation",[0,0,-1]);

Полет платформы БПЛА по заданной траектории и сбор показаний датчика облака точек

Переместите БПЛА по заранее заданной траектории и по пути соберите показания датчика лидара. Эти данные можно использовать для тестирования алгоритмов отображения и локализации на основе лидара.

Предварительно распределить traj и scatterPlot строчные графики, а затем укажите специфичные для графика источники данных. Во время моделирования uavScenario, используйте предоставленное plotFrames вывод из сцены в качестве родительских осей для визуализации данных датчика в правильных координатных кадрах.

% Visualize the scene
[ax,plotFrames] = show3D(scene);

% Update plot view for better visibility.
xlim([-250 200])
ylim([-150 180])
zlim([0 50])
view([-110 30])
axis equal
hold on

% Create a line plot for the trajectory.
traj = plot3(nan,nan,nan,"Color",[1 1 1],"LineWidth",2);
traj.XDataSource = "position(:,1,1:idx+1)";
traj.YDataSource = "position(:,2,1:idx+1)";
traj.ZDataSource = "position(:,3,1:idx+1)";

% Create a scatter plot for the  point cloud.
colormap("jet")
pt = pointCloud(nan(1,1,3));
scatterplot = scatter3(nan,nan,nan,1,[0.3020 0.7451 0.9333],...
    "Parent",plotFrames.UAV.Lidar);
scatterplot.XDataSource = "reshape(pt.Location(:,:,1),[],1)";
scatterplot.YDataSource = "reshape(pt.Location(:,:,2),[],1)";
scatterplot.ZDataSource = "reshape(pt.Location(:,:,3),[],1)";
scatterplot.CDataSource = "reshape(pt.Location(:,:,3),[],1) - min(reshape(pt.Location(:,:,3),[],1))";

% Start Simulation
setup(scene)
for idx = 0:size(position, 3)-1
    [isupdated,lidarSampleTime, pt] = read(lidar);
    if isupdated
        % Use fast update to move platform visualization frames.
        show3D(scene,"Time",lidarSampleTime,"FastUpdate",true,"Parent",ax);
        % Refresh all plot data and visualize.
        refreshdata
        drawnow limitrate
    end
    % Advance scene simulation time and move platform.
    advance(scene);
    move(plat,[position(:,:,idx+1),zeros(1,6),eul2quat(orientation(:,:,idx+1)),zeros(1,3)])
    % Update all sensors in the scene.
    updateSensors(scene)
end
hold off

Figure contains an axes. The axes contains 15 objects of type patch, scatter, line.

Представлен в R2020b