主要内容

uavScenario

生成无人机仿真场景

    描述

    uavScenario对象生成一个由静态网格、无人机平台和三维环境中的传感器组成的仿真场景。

    创建

    现场= uavScenario创建一个带有默认属性值的空UAV场景。默认的惯性框架是东北向下(NED)和东北向上(ENU)框架。

    现场= uavScenario (名称,值配置一个uavScenario对象,其属性使用一个或多个名称,值对参数。的名字属性名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称-值对参数Name1, Value1,…,的家.任何未指定的属性都接受默认值。

    使用此语法,可以指定UpdateRate,StopTime,HistoryBufferSize,ReferenceLocation,MaxNumFrames属性。属性的其他属性不能指定uavScenario对象,它们是只读的。

    属性

    全部展开

    模拟更新速率,指定为以Hz为单位的正标量。使用时场景的步长推进对象函数等于更新速率的倒数。

    例子:2

    数据类型:

    模拟的停止时间,指定为非负标量。一个场景在到达停止时间时停止前进。

    例子:60.0

    数据类型:

    场景中存储的最大步骤数,指定为大于1的正整数。此属性确定场景中存储的平台姿态的最大帧数。如果模拟步骤的数量超过此属性的值,则该场景仅存储最新的步骤。

    例子:60

    数据类型:

    大地坐标的场景原点,指定为形式为[纬度经度高度].纬度经度为以度数表示的大地坐标。高度为WGS84基准椭球面的高度,单位为米。

    数据类型:

    场景中的最大帧数,指定为正整数。添加到场景中的惯性框架、平台和传感器的组合数量必须小于或等于这个属性的值。

    例子:15

    数据类型:

    此属性是只读的。

    当前模拟时间,指定为非负标量。

    数据类型:

    此属性是只读的。

    指示场景是否正在运行,指定为真正的.场景模拟启动后,将一直运行到停止时间。

    数据类型:逻辑

    此属性是只读的。

    场景中所有帧之间的转换信息,指定为transformTree对象。此属性包含与场景相关的惯性、平台和传感器帧之间的转换信息。

    数据类型:对象

    此属性是只读的。

    场景中惯性系的名称,指定为弦向量。

    数据类型:字符串

    此属性是只读的。

    在无人机平台场景中,指定为阵列uavPlatform对象。

    对象的功能

    设置 准备无人机模拟场景
    addCustomTerrain 添加自定义地形数据
    addMesh 为无人机场景添加新的静态网格
    addInertialFrame 在无人机场景中定义新的惯性框架
    推进 一步推进无人机场景仿真
    updateSensors 更新无人机场景下的传感器读数
    removeCustomTerrain 删除自定义地形数据
    重新启动 无人机场景复位仿真
    显示 2-D可视化无人机场景
    show3D 3-D可视化无人机场景
    terrainHeight 返回无人机场景中的地形高度

    例子

    全部折叠

    创建一个UAV场景并设置其本地原点。

    现场= uavScenario (“UpdateRate”, 200,“StopTime”,2,“ReferenceLocation”, 46岁,42岁,0);

    加上一个惯性系地图的场景。

    scene.addInertialFrame (“ENU表示”,“地图”trvec2tform ((1 0 0)));

    在场景中添加一个地面网格和两个圆柱形障碍物网格。

    scene.addMesh (“多边形”{[-100 0;100 0;100 100;-100 100],[-5 0]},[0.3 0.3 0.3]);scene.addMesh (“气缸”, {[20 10 10],[0 30]}, [0 10]);scene.addMesh (“气缸”, {[46 42 5],[0 20]}, [0 1 0],“UseLatLon”,真正的);

    在场景中创建一个具有指定路径点轨迹的无人机平台。定义无人机平台的网格。

    traj = waypointTrajectory (“锚点”, [0 -20 -5;20 -20 5;20 0 5),“TimeOfArrival”[0 1 2]);uavPlat = uavPlatform (“无人机”场景,“轨迹”, traj);updateMesh (uavPlat“quadrotor”, {4}, [1 0 0],eul2tform([0 0 pi]));addGeoFence (uavPlat“多边形”{[-50 0;50 0;50 50;-50年50],[0 100]},真的,“ReferenceFrame”,“ENU表示”);

    在无人机平台的前面安装一个INS传感器。

    insModel = insSensor ();ins = uavSensor (“英寸”uavPlat insModel,“MountingLocation”, 4 0 0);

    在3d中想象场景。

    ax = show3D(现场);轴(ax,“平等”);

    模拟的场景。

    设置(现场);推进(场景)更新传感器读数updateSensors(现场);%设想场景show3D(场景,“父”ax,“FastUpdate”,真正的);drawnowlimitrate结束

    这个例子展示了如何添加地形和自定义建筑网格到无人机场景。

    加上地形表面

    根据地形高程数据添加地形表面n39_w106_3arc_v2.dt1DTED文件。

    addCustomTerrain (“CustomTerrain”,“n39_w106_3arc_v2.dt1”);场景= uavScenario (“ReferenceLocation”, [39.5 -105.5 0]);addMesh(场景中,“地形”, {“CustomTerrain”, [-200 200], [-200 200]}, [0.6 0.6 0.6]);show3D(场景);

    图中包含一个轴对象。axis对象包含一个patch类型的对象。

    增加建筑

    添加一对使用顶点和多边形网格的自定义建筑网格到场景中。使用terrainHeight函数获取每个建筑基地的地面高度。

    建筑物中心= [-50,-50;100 100);buildingHeights = [30 100];[-25 -25;-25 50;50 50;50 -25];idx = 1:size(buildingCenters,1) buildingVertices = buildingBoundary+buildingCenters(idx,:);buildingBase = min (terrainHeight(场景,buildingVertices (: 1), buildingVertices (:, 2)));addMesh(场景中,“多边形”, {buildingVertices, buildingBase+[0 buildingHeights(idx)]}, [0.3922 0.8314 0.0745]);结束show3D(场景);视图(15 [0])

    图中包含一个轴对象。axis对象包含3个patch类型的对象。

    
                        

    删除自定义地形

    移除导入的自定义地形。

    removeCustomTerrain (“CustomTerrain”
    介绍了R2020b