How can make dynamic obstacles in map

조회 수: 64 (최근 30일)
mohammed alany
mohammed alany 2023년 2월 7일
답변: Vinayak Choyyan 2023년 2월 13일
If i have 2D path, generated from a map. and I want to animate a robot following this path and some obstacles moves randomly in the is map
  댓글 수: 2
KSSV
KSSV 2023년 2월 7일
Can you show a picture of your path and tell how you want the obstacles to move.
mohammed alany
mohammed alany 2023년 2월 8일
The obstacles can moves in all evironment and i can control the number of moving obstacles

댓글을 달려면 로그인하십시오.

채택된 답변

Vinayak Choyyan
Vinayak Choyyan 2023년 2월 13일
Hello mohammed alany,
As per my understanding, you have a 2D path for a robot. You would like to have N number of obstacles that move randomly in the environment, and you would like to visually see this in action.
Please refer to the demo code below. I have used an ‘occupancyMap’ in this example to showcase the animation as it visually looks the most similar to the example image you have provided. Alternatively, you could also create a ‘robotScenario’ or use ‘dynamicCapsuleList’. In the code below, I have generated N=10 obstacles and moved them all diagonally upwards. You can modify the code to have each obstacle’s location be updated based on your requirement and kinematic constraints. I have set the path of the robot to move from (90,90) to (50,50). The robot is the only one moving diagonally downwards in the example. Do consider increasing timeSteps and decreasing the change in value per timeStep to have a smoother animation. But this will come at the cost of some extra performance.
clc;clear;
%create a list of starting locations for n obstacles
n=10;
timeSteps=20;
obstacleStartLocation=100.*rand(n,2);
obstacleStartLocation=ceil(obstacleStartLocation);
pathX=90:-2:90-(2*(timeSteps-1));
pathY=90:-2:90-(2*(timeSteps-1));
path=[pathX' pathY'];
for i=1:timeSteps
map = occupancyMap(zeros(100,100));%clear map
updateOccupancy(map,obstacleStartLocation,ones(10,1));%add obstacles to map
updateOccupancy(map,path(i,:),1);%add main path point for current time step
inflate(map,0.5);%make point bigger as per size of obstacles
show(map);
pause(0.1);
%update path of other obstacles randomly. I am just moving them
%diagonally upwards in this example. please change it as per your
%requiremnt
for j=1:n
obstacleStartLocation(j,1)=obstacleStartLocation(j,1)+1;
obstacleStartLocation(j,2)=obstacleStartLocation(j,2)+1;
end
end
If you wish to read more about the following, please refer to the following documentation.
If you wish to read more about the functions used in the above code, please refer to these documentations
I hope this helps resolve the issue you were facing.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Robotics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by