Main Content

show3D

Visualize UAV scenario in 3-D

Since R2020b

    Description

    [ax,plottedFrames] = show3D(scene) visualizes latest states of the platforms and sensors in the UAV scenario scene along with all static meshes. The function also returns the axes on which the scene is plotted and the frames on which each object is plotted.

    example

    [ax,plottedFrames] = show3D(scene,time) visualizes the UAV scenario at the specified time.

    [ax,plottedFrames] = show3D(___,Name,Value) specifies additional options using Name-Value pairs. Enclose each Name in quotes.

    Examples

    collapse all

    Create a UAV scenario and set its local origin.

    scene = uavScenario("UpdateRate",200,"StopTime",2,"ReferenceLocation",[46, 42, 0]); 

    Add an inertial frame called MAP to the scenario.

    scene.addInertialFrame("ENU","MAP",trvec2tform([1 0 0])); 

    Add one ground mesh and two cylindrical obstacle meshes to the scenario.

    scene.addMesh("Polygon", {[-100 0; 100 0; 100 100; -100 100],[-5 0]},[0.3 0.3 0.3]);
    scene.addMesh("Cylinder", {[20 10 10],[0 30]}, [0 1 0]); 
    scene.addMesh("Cylinder", {[46 42 5],[0 20]}, [0 1 0], "UseLatLon", true); 

    Create a UAV platform with a specified waypoint trajectory in the scenario. Define the mesh for the UAV platform.

    traj = waypointTrajectory("Waypoints", [0 -20 -5; 20 -20 -5; 20 0 -5],"TimeOfArrival",[0 1 2]); 
    uavPlat = uavPlatform("UAV",scene,"Trajectory",traj); 
    updateMesh(uavPlat,"quadrotor", {4}, [1 0 0],eul2tform([0 0 pi])); 
    addGeoFence(uavPlat,"Polygon", {[-50 0; 50 0; 50 50; -50 50],[0 100]},true,"ReferenceFrame","ENU"); 

    Attach an INS sensor to the front of the UAV platform.

    insModel = insSensor(); 
    ins = uavSensor("INS",uavPlat,insModel,"MountingLocation",[4 0 0]); 

    Visualize the scenario in 3-D.

    ax = show3D(scene); 
    axis(ax,"equal"); 

    Simulate the scenario.

    setup(scene); 
    while advance(scene) 
        % Update sensor readings 
        updateSensors(scene); 
    
        % Visualize the scenario 
        show3D(scene,"Parent",ax,"FastUpdate",true); 
        drawnow limitrate 
    end 

    Figure contains an axes object. The axes object with xlabel East (m), ylabel North (m) contains 4 objects of type patch.

    Input Arguments

    collapse all

    UAV scenario, specified as a uavScenario object.

    Time stamp at which to show the scenario, specified as a nonnegative scalar. The time stamp must already be saved in the scenario. To change the number of saved time stamps, use the HistoryBufferSize property of the uavScenario object, scene.

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

    Example: ax = show3D(scene,"FastUpdate",true)

    Parent axes for plotting, specified as an axes object or a uiaxes object.

    Enable updating from previous map, specified as true or false. When specified as true, the function plots the map via a lightweight update to the previous map in the figure. When specified as false, the function plots the whole scene on the figure every time.

    Output Arguments

    collapse all

    Axes on which the scenario is plotted, returned as an axes object or a uiaxes object.

    Plotted frame information, returned as a structure of hgtransform objects. The structure has two types of field names:

    • Inertial frame names — The corresponding field value is a hgtransform object which contains the transform information from the ego frame to the ENU frame.

    • UAV platform names — The corresponding field value is a structure which contains the hgtransform information for all frames defined on the platform.

    Version History

    Introduced in R2020b