MATLAB Answers

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

2 ビュー (過去 30 日間)
Shubham Kalpande
Shubham Kalpande 2021 年 6 月 8 日
回答済み: Sandip Kumar 2021 年 6 月 9 日
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.

回答 (2 件)

darova 2021 年 6 月 8 日
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;
  2 件のコメント
Shubham Kalpande
Shubham Kalpande 2021 年 6 月 8 日
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


Sandip Kumar
Sandip Kumar 2021 年 6 月 9 日
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);
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





Community Treasure Hunt

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

Start Hunting!

Translated by