Создайте сценарий, чтобы симулировать рейсы беспилотного воздушного транспортного средства (UAV) между набором созданий. Пример демонстрирует обновление положения 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])
Задайте платформу UAV и смонтируйте датчик
Можно задать uavPlatform
в сценарии как несущая ваших моделей датчика и управляют ими через сценарий, чтобы собрать симулированные данные о датчике. Можно сопоставить платформу с различными сетками, такими как fixedwing
, quadrotor
, и cuboid
сетки. Можно задать заданные единицы пользовательской mesh, представленные вершинами и поверхностями. Задайте систему координат для описания движения вашей платформы.
Загрузите полетные данные в рабочую область и создайте quadrotor платформу с помощью системы координат NED. Задайте исходное положение и ориентацию на основе загруженных данных логов рейса. Настройка системы координат тела UAV ориентирует ось X, столь же положительную форварду, ось Y как правильно-положительный, и нисходящая положительная ось z.
Можно принять решение смонтировать различные датчики, такие как insSensor
, gpsSensor
, или uavLidarPointCloudGenerator
Системные объекты к вашему UAV. Смонтируйте генератор облака точек лидара и uavSensor
объект, который содержит модель датчика лидара. Задайте монтирующееся местоположение датчика, который является относительно системы координат тела UAV.
Управляйте платформой UAV вдоль предопределенной траектории и соберите показания датчика облака точек
Переместите UAV вдоль предопределенной траектории и соберите показания датчика лидара по пути. Эти данные могли использоваться, чтобы протестировать основанные на лидаре алгоритмы отображения и локализации.
Предварительно выделите traj
и scatterPlot
линейные графики и затем задают специфичные для графика источники данных. Во время симуляции uavScenario
, используйте обеспеченный plotFrames
выведите от сцены как родительские оси, чтобы визуализировать ваши данные о датчике в правильных координатных системах координат.
Визуализируйте сцену.
Обновите представление графика для лучшей видимости.
Постройте график для траектории. Сначала создайте график с plot3
, затем вручную измените свойства источника данных графика. Это улучшает производительность графического вывода.
Создайте график рассеивания для облака точек. Обновите свойства источника данных снова.
Настройте симуляцию. Затем выполните итерации через положения и покажите сцене каждый раз обновления датчика лидара. Усовершенствуйте сцену, переместите платформу UAV и обновите датчики.