MATLAB Answers


Mobile robot path planning

Asked by Abinav Shankar on 30 Oct 2019
Latest activity Commented on by Abinav Shankar on 4 Nov 2019
I was trying out the Robotics System Toolbox and the path planning tutorial for mobile robots. I have a few questions in mind that I hope someone would be able to clarify.
  1. How are the nodes positioned according to mobileRobotPRM()? I found it rather random which resulted in different paths every time the program is run.
  2. Which algorithm is used in findPath()? I can't find it in Matlab documentation.
  3. In every iteration findPath() returns a different path for the same map, initial location and goal. It either means it's selecting a random path based on the connected nodes instead of the optimised path or its providing an optimum path but due to the random node generation by mobileRobotPRM(), the path differs everytime.
Is there a way to determine the most optimal path or atleast to get the same path every time the program is run?


Sign in to comment.

1 Answer

Answer by Sai Bhargav Avula on 4 Nov 2019
 Accepted Answer

1. mobileRobotPRM() generates the roadmap, which is a network graph of possible paths in the map based on free and occupied spaces. Your nodes and connections might look different due to the random placement of nodes as it randomly generates nodes and creates connections between these nodes based on the PRM algorithm parameters.
2. findPath uses A* algorithm.
3. Yes, the path generated is optimal, but as said it above the node locations are randomly generated, which can affect your final path between multiple iterations. To address this you can save the random number generation settings using the rng function. An example code is given below
rngState = rng;
prm = mobileRobotPRM(map,100);
startLocation = [2 1];
endLocation = [12 10];
% first iteration
path = findpath(prm,startLocation,endLocation);
% second iteration
path = findpath(prm,startLocation,endLocation);
This would return the same paths in both the iterations
Hope this helps!

  1 Comment

Thanks for the information.
I was testing it with range of values and figured it out.
Also I was able to acheive almost the same route everytime if the entire grid is filled with nodes at the cost of longer processing time.

Sign in to comment.