MATLAB Answers

How can I convert a surface plot to an Occupancy map 3D?

4 views (last 30 days)
Shubham Kalpande
Shubham Kalpande on 8 Jun 2021
Answered: Sandip Kumar on 9 Jun 2021
I want to simulate flight of an UAV on a terrain and I plan to use the UAV toolbox for path planning. But it requires the terrain information in form of an Occupancy map. I am not sure how to create it given a surface plot. I have tried one logical implementation but I am having trouble in getting a more better representation. Is there any way I can set the occupancy of the entire ground plane to 1? I want to represent the hilly terrain. I have managed to mark out only the top layer.

Answers (2)

darova
darova on 8 Jun 2021
What about isosurface?
[x,y,z] = peaks(20);
z = (z-min(z(:)))/(max(z(:))-min(z(:)))*19; % scale values inbetween [1 .. 19]
z = round(z)+1; % round (to get indices)
A = zeros(20,20,20);
for i = 1:20
for j = 1:20
k = z(i,j);
A(i,j,k) = 1;
end
end
isosurface(A,0.01)
  2 Comments
Shubham Kalpande
Shubham Kalpande on 8 Jun 2021
I dont think this will work. The path planner of UAV toolbox accepts only occupancy map as the input for plannning a path in the terrain

Sign in to comment.


Sandip Kumar
Sandip Kumar on 9 Jun 2021
Hi Subham
Using the code from Surface plots and using it in occupancyMap3D can be done in this fashion.
Define some surface plot data
delta = 0.1;
[X,Y] = meshgrid(1:delta:10,1:delta:20);
Z = sin(X) + cos(Y);
surf(X,Y,Z)
Use the data to populate your occpancyMap3D
pts3d = [X(:) Y(:) Z(:)];
% Create an empty occupancy map in 3d with the same resolution
map = occupancyMap3D(1/delta);
% Set the corresponding 3d points to represent occupancy
setOccupancy(map, pts3d, ones(size(pts3d,1), 1));
% See the map now
show(map)

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!