uavPlatform

Платформа UAV для датчиков в сценарии

Описание

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

Создание

Описание

platform = uavPlatform(name,scenario) создает платформу с указанным именем name и добавляет его в сценарий в виде uavScenario объект. Задайте аргумент имени как строковый скаляр. Аргумент имени устанавливает 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

Начальное положение платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialPosition' и вектор из формы [x y z]. Только задайте эту пару "имя-значение", не задав свойство Trajectory.

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

Начальная ориентация платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialOrientation' и вектор из формы [w x y z], представление кватерниона. Только задайте эту пару "имя-значение", не задав свойство Trajectory.

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

Начальная скорость платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialVelocity' и вектор из формы [vx vy vz]. Только задайте эту пару "имя-значение", не задав свойство Trajectory.

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

Начальное ускорение платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialAcceleration' и вектор из формы [ax ay az]. Только задайте эту пару "имя-значение", не задав свойство Trajectory.

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

Начальная скорость вращения платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialAngularVelocity' и трехэлементный вектор из формы [x y z]. Величина вектора задает угловую скорость в радианах в секунду. xyz - координаты задают ось по часовой стрелке вращения. Только задайте эту пару "имя-значение", не задав свойство Trajectory.

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

Траектория для движения платформы UAV в виде waypointTrajectory объект. По умолчанию платформа принята, чтобы быть стационарной и в начале координат. Чтобы переместить платформу в каждый шаг симуляции сценария, используйте move объектная функция.

Примечание

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

Система координат для вычисления движения платформы UAV в виде строкового скаляра, который совпадает с любой системой координат в uavScenario. Все движение платформы вычисляется относительно этой инерционной системы координат.

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

Свойства

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

Идентификатор для платформы UAV в виде строкового скаляра или вектора символов.

Пример: "uav1"

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

Траектория для движения платформы UAV в виде waypointTrajectory объект. По умолчанию объект принимает, что платформа является стационарной и в начале координат сценария. Чтобы переместить платформу в каждый шаг симуляции сценария, используйте move объектная функция.

Примечание

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

Система координат для вычисления движения платформы UAV в виде строкового скаляра или вектора символов, который совпадает с любой системой координат в uavScenario. Объект вычисляет все движение платформы относительно этой инерционной системы координат.

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

Тело платформы UAV сцепляется в виде extendedObjectMesh объект. Mesh тела описывает 3-D модель платформы в целях визуализации.

Цвет сетки тела платформы UAV, когда отображено в сценарии в виде триплета RGB.

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

Преобразуйте между телом платформы UAV и системой координат mesh в виде гомогенной матрицы преобразования 4 на 4, которая сопоставляет точки в системе координат mesh платформы к точкам в системе координат тела.

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

Датчики монтируются на платформе UAV в виде массива uavSensor объекты.

Ограничения геозабора для платформы UAV в виде массива структур с этими полями:

  • GeometryextendedObjectMesh объект, представляющий трехмерное пространство для геозабора в системе координат сценария.

  • Permission — Логический скаляр, который указывает, разрешена ли платформа в геозаборе (true) или не разрешенный (false).

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

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

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

Примеры

свернуть все

Создайте сценарий, чтобы симулировать рейсы беспилотной антенны vechicle (UAV) между набором созданий. Пример demonstates обновление UAV позирует в симуляциях разомкнутого контура. Используйте сценарий UAV, чтобы визуализировать рейс UAV и сгенерировать симулированные показания датчика облака точек.

Введение

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

Создайте сценарий с сетками создания многоугольника

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.

Задайте платформу UAV и смонтируйте датчик

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

Загрузите полетные данные в рабочую область и создайте quadrotor платформу с помощью системы координат NED. Задайте исходное положение и ориентацию на основе загруженных данных логов рейса. Настройка системы координат тела UAV ориентирует ось 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 Системные объекты к вашему UAV. Смонтируйте генератор облака точек лидара и uavSensor объект, который содержит модель датчика лидара. Задайте монтирующееся местоположение датчика, который является относительно системы координат тела UAV.

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

Управляйте платформой UAV вдоль предопределенной траектории и соберите показания датчика облака точек

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

Предварительно выделите 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