Платформа UAV для датчиков в сценарии
uavPlatform
объект представляет платформу беспилотного воздушного транспортного средства (UAV) в данном сценарии UAV. Используйте платформу, чтобы задать и отследить траекторию объекта в сценарии. Чтобы симулировать показания датчика для платформы, смонтируйте датчики как gpsSensor
, insSensor
, или uavLidarPointCloudGenerator
объекты с набором uavSensor
объекты. Добавьте mesh тела для использования визуализации updateMesh
. Установите использование ограничений геозонирования addGeoFence
и проверяйте те пределы использование checkPermission
.
создайте платформу с заданным platform
= uavPlatform(name
,scenario
)name
и добавляет его в данный сценарий как uavScenario
.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе. Можно задать свойства как пары "имя-значение" также. Например, platform
= uavPlatform(name
,scenario
,Name,Value
)'StartTime',10
устанавливает начальное время для траектории платформы к 10 секундам.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'StartTime',10
устанавливает начальное время траектории платформы к 10 секундам.StartTime
— Начальное время траектории платформы
(значение по умолчанию) | скаляр в секундахНачальное время траектории платформы в виде разделенной запятой пары, состоящей из 'StartTime'
и скаляр в секундах.
Типы данных: double
InitialPosition
— Начальное положение платформы для UAV
(значение по умолчанию) | вектор из формы [x y z]
Начальное положение платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialPosition'
и вектор из формы [x y z]
. Только задайте эту пару "имя-значение", не задав свойство Trajectory.
Типы данных: double
InitialOrientation
— Начальная ориентация платформы для UAV
(значение по умолчанию) | вектор из формы [w x y z]
Начальная ориентация платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialOrientation'
и вектор из формы [w x y z]
, представление кватерниона. Только задайте эту пару "имя-значение", не задав свойство Trajectory.
Типы данных: double
InitialVelocity
— Начальная скорость платформы для UAV
(значение по умолчанию) | вектор из формы [vx vy vz]
Начальная скорость платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialVelocity'
и вектор из формы [vx vy vz]
. Только задайте эту пару "имя-значение", не задав свойство Trajectory.
Типы данных: double
InitialAcceleration
— Начальное ускорение платформы для UAV
(значение по умолчанию) | вектор из формы [ax ay az]
Начальное ускорение платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialAcceleration'
и вектор из формы [ax ay az]
. Только задайте эту пару "имя-значение", не задав свойство Trajectory.
Типы данных: double
InitialAngularVelocity
— Начальная скорость вращения платформы для UAV
(значение по умолчанию) | трехэлементный вектор из формы [x y z]
| векторНачальная скорость вращения платформы для UAV в виде разделенной запятой пары, состоящей из 'InitialAngularVelocity'
и трехэлементный вектор из формы [x y z]
. Величина вектора задает угловую скорость в радианах в секунду. xyz - координаты задают ось по часовой стрелке вращения. Только задайте эту пару "имя-значение", не задав свойство Trajectory.
Типы данных: double
Trajectory
— Траектория для движения платформы UAV[]
(значение по умолчанию) | waypointTrajectory
объектТраектория для движения платформы UAV в виде waypointTrajectory
объект. По умолчанию платформа принята, чтобы быть стационарной и в начале координат. Чтобы переместить платформу в каждый шаг симуляции сценария, используйте move
объектная функция.
Примечание
uavPlatform
объект должен задать тот же ReferenceFrame
свойство как заданный waypointTrajectory
объект.
ReferenceFrame
— Система координат для вычисления движения платформы UAVСистема координат для вычисления движения платформы UAV в виде строкового скаляра, который совпадает с любой системой координат в uavScenario
. Все движение платформы вычисляется относительно этой инерционной системы координат.
Типы данных: string
Name
— Идентификатор для платформы UAVИдентификатор для платформы UAV в виде строкового скаляра или вектора символов.
Пример: "uav1"
Типы данных: string
| char
Trajectory
— Траектория для движения платформы UAV[]
(значение по умолчанию) | waypointTrajectory
объектТраектория для движения платформы UAV в виде waypointTrajectory
объект. По умолчанию объект принимает, что платформа является стационарной и в начале координат сценария. Чтобы переместить платформу в каждый шаг симуляции сценария, используйте move
объектная функция.
Примечание
uavPlatform
объект должен задать тот же ReferenceFrame
свойство как заданный waypointTrajectory
объект.
ReferenceFrame
— Система координат для вычисления движения платформы UAVСистема координат для вычисления движения платформы UAV в виде строкового скаляра или вектора символов, который совпадает с любой системой координат в uavScenario
. Объект вычисляет все движение платформы относительно этой инерционной системы координат.
Типы данных: string
| char
Mesh
— Mesh тела платформы UAVextendedObjectMesh
объектТело платформы UAV сцепляется в виде extendedObjectMesh
объект. Mesh тела описывает 3-D модель платформы в целях визуализации.
MeshColor
— Цвет сетки тела платформы UAVЦвет сетки тела платформы UAV, когда отображено в сценарии в виде триплета RGB.
Типы данных: double
MeshTransform
— Преобразуйте между телом платформы UAV и системой координат meshПреобразуйте между телом платформы UAV и системой координат mesh в виде гомогенной матрицы преобразования 4 на 4, которая сопоставляет точки в системе координат mesh платформы к точкам в системе координат тела.
Типы данных: double
Sensors
— Датчики смонтированы на платформе UAVuavSensor
объектыДатчики монтируются на платформе UAV в виде массива uavSensor
объекты.
GeoFences
— Ограничения геозабора для платформы UAVОграничения геозабора для платформы UAV в виде массива структур с этими полями:
Geometry
— extendedObjectMesh
объект, представляющий трехмерное пространство для геозабора в системе координат сценария.
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])
Задайте платформу 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
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.