Generators

Generators#

How the planning layer’s candidates come about: the generator samples new viewpoints around the existing ones, connects them with edges and keeps the graph valid as the map grows. Keys: Generator and GraphGenerator Keys, RRAG, RRT, RRTStar; classes: Generators, built-in generators.

Every shipped generator is a GraphGenerator that owns its graph or tree. It adds one node cluster per expansion round, moves the start node when the robot arrives (setNewStartNode()) and cuts an edge at the replanning horizon (insertIntermediateNode()). Each cycle RRAG re-checks the nodes, edges and missing connections where the map region updated since the last cycle meets the robot’s body bounds (RobotModel::getBodyBounds()), and all of them for a robot without bounds; the trees re-check only their edges and prune the subtrees behind those that fail. Positions, orientations and edges come from the robot model.

Sampling Rule#

RRAG, RRT and RRTStar sample the same way. A position closer than min_edge_length to its nearest node is rejected, and one farther than max_edge_length is moved to min_edge_length from that node, so new positions land in an annulus around the existing ones (shipped 1.5 to 3.0 m; 1.0 to 2.0 m with task:=points). An expansion round makes at most sample_max_tries (shipped 1000) attempts.

RRAG#

The rapidly-exploring random annulus graph, the generator of the graph planners nbs, dbs, spt and tsp. At each sampled position it builds a node cluster: one node per orientation the robot model offers (num_orientation_candidates evenly spaced yaws for the in-tree robots). Rotation edges join neighboring orientations of a cluster, and translation edges join clusters within max_edge_length of each other. translation_adjacency picks the orientation pair a translation edge joins: the pair best aligned with the chord between the two positions (straight_line, default), with the planned trajectory’s end directions (path_heading), or every pair bracketing those directions as the robot model decides (path_heading_cell; the in-tree robots return one pair).

RRT and RRTStar#

Trees grown from the robot, the generators of the rrt and rrtstar baselines (the paper’s RRAT and RRAT*). Each sample becomes one tree node whose parent is its nearest node; the planner config wraps the task evaluator in SimpleYawPlanningEvaluator, which picks each node’s yaw. RRTStar also gives each new node the cheapest parent within max_edge_length, rewires the nodes around it through it where that is cheaper, and rewires the tree again whenever it reroots. A tree’s path planner is TreeBestValue, which rejects a graph generator such as RRAG.