Owning Palette: Path Planning VIs
Requires: Robotics Module
Plans a dynamic path through a map to the goal you specify. The first time this VI runs, the VI returns an initial path to a goal node within the map you specify in the Initialize AD* VI.
Use this VI in a loop with shift registers to update the path references through the map in each iteration. This VI searches the map for updates and then updates the path accordingly the next time the VI runs.
|overhaul, when TRUE, ends the current planning session and begins a new session. Refer to the Details section for information on when to begin a new path planning session.|
|Anytime D* in is a reference to an AD* object from the Initialize AD* VI.|
|current reference specifies the current position of the robot within the map. If this VI operates on a directed graph map or occupancy grid map, you can use the Get Node Reference VI or Get Cell Reference VI, respectively, to generate this LabVIEW class object.|
|new goal reference specifies a new position to which the robot should navigate within the map. If this VI operates on a directed graph map or occupancy grid map, you can use the Get Node Reference VI or Get Cell Reference VI, respectively, to generate this LabVIEW class object.|
|error in describes error conditions that occur before this node runs. This input provides standard error in functionality.|
|epsilon is a number greater than or equal to 1 that specifies the level of optimality for the path. If epsilon is 1, this VI plans an optimal, or least-cost path. If epsilon is greater than 1, this VI returns the path faster, but the path is optimal for the value of epsilon, where path cost ≤ epsilon * n and where n is the cost of the optimal path.
In the Initialize AD* VI, you can choose to set epsilon manually. If you do not control the value manually, the AD* VI sets epsilon equal to 5 the first time the VI runs and decreases the value by 1 each time the VI runs until epsilon is 1 and the VI returns an optimal path.
|Anytime D* out is the object this VI uses to update path references.|
|path references is an array of references to points on the map along the path this VI calculates. If no valid path exists is TRUE, LabVIEW returns a partial path. Otherwise, path references contains a complete path to the goal node.
You can use a partial path to direct a mobile robot to a point in the map that is nearer to the goal than the current position of the robot.
|no valid path exists is TRUE if the path references do not end at the goal node.|
|error out contains error information. This output provides standard error out functionality.|
|path cost is the cost of traversing the path references. path cost returns Inf if no possible path exists or the map changes significantly.|
This VI uses an Anytime D* (AD*) algorithm to calculate a sub-optimal path quickly and then update the path in subsequent executions until the VI plans an optimal path. Also, this VI can run while the robot application processes input data from sensors so that this VI can reflect changes to the robot environment in subsequent paths to the goal node.
This VI uses information from previous iterations to calculate paths. Therefore, if you specify a new goal reference within the map, this VI automatically ends the current the path planning session and plans a new initial path. If the map changes significantly, use the overhaul input to reset the path planning session manually. Resetting the session is more efficient than allowing the VI to replan the path from previous calculations that are invalid after the map changes.
LabVIEW locks maps while this VI plans paths through them. While a map is locked, LabVIEW queues any updates to the map and applies them when this VI finishes planning a path.
|Note The following resource offers useful background information about the algorithm discussed in this documentation. This resource is provided for general informational purposes only and is not affiliated, sponsored, or endorsed by National Instruments. The content of this resource is not a representation of, may not correspond to, and does not imply current or future functionality in the Robotics Module or any other National Instruments product.|
Likhachev, Maxim, Dave Ferguson, Geoff Gordon, Anthony Stentz, and Sebastian Thrun. "Anytime Search in Dynamic Graphs," Artificial Intelligence Journal (AIJ) 172, no. 14 (September 2008): 1613–1643.
Refer to the Anytime D Star on an Occupancy Grid.lvproj in the labview\examples\robotics\Path Planning\ADstar\ADstar on Occupancy Grid directory for an example of using the AD* VI.