![]() |
Implementation of the Visibility PRM via ISU's MSL
...and creating more acronyms in the process
ComS 476 Final Project - Spring 2001
Jacob Laack and Mark O'Brien
|
![]() |
Instead of choosing to connect every new node to the existing graph, like with the traditional PRM, the PRMVis checks every new node's "field of vision." A node that cannot see any other node from its current position, assumes the role of a "guard." Any node that can see two guards is connected to those guards and becomes a "connector." Nodes that can't serve either of these roles are discarded. Our planner constructs a roadmap by finding a new node (free of collision), promoting or discarding it, and repeating this process until discarding a number of consecutive nodes equal to the number in the NumNodes field from the PlanCtrl window of the MSL. (whew)
Our approach/implentation closely follows that of the original PRM. The real diffences between it and the PRMVis appear during the construction of the roadmap. After about a week of coming up with different ideas for classifying our nodes, we found an algorithm in a paper (provided by the prof.) that modeled our ideas in a much more formal way. The algorithm builds a roadmap by storing new guard nodes in components and new connectors in a list. When two guard components are connected, they are merged and the involved edges are added to the roadmap.
In the ideal case, at the end of the construction phase, a single guard component should remain containing guard nodes able to observe the entire "free space" of the world and are connected via connector nodes. Large open areas within the free space are easily covered by a single guard but narrow passages or the need for complex translations/rotations can break the PRMVis as well as our implentation. In this respect, our implentation can solve most of the example problems we have thrown at it unless they require some precise motion for it to succeed. A maze-style world is nice as long as the shape fits easily down the hallway while problems requiring a ring wiggled off a bent pole are still out of reach.
There are a couple ways of "tweaking" our implentation. Changing the NumNodes property in the PlanCtrl window will enhance the stubborness of the planner. The more failures allowed, the better chance at placing a guard in a much needed spot. Also, if the first press of the "Construct" button fails to construct a working roadmap, repeated clicks of the same button will result in further attempts to add-on to the previous roadmap.
![]() |
![]() |
![]() |
Screenshots
From the above examples, it's easy to tell that the PRMVis creates much "cleaner" roadmaps than the traditional PRM.
The links below provide access to our implentation of the PRMVis planner, the
executable used to link it to the MSL, and our custom made examples used to
test our planner.
Planner Files
Custom Examples This page is stored in a WinZip file: PRMVis.zip