How can I convert a surface plot to an Occupancy map 3D?
17 views (last 30 days)
Show older comments
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.
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;
Sandip Kumar on 9 Jun 2021
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);
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
Find more on Mobile Robot Algorithm Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!