-
Notifications
You must be signed in to change notification settings - Fork 110
Code Index
This index contains a list of all available and default modules. A short description and mention of particular properties/parameters should render an overview and allow for convenient creation of new planners. For implementation details and full list of parameters see source code.
Modules by Type
- Trajectory Generators
- Segment Selectors
- Generator Updaters
- Trajectory Evaluators
- Cost Computers
- Value Computers
- Next Selectors
- Evaluator Updaters
- Sensor Models
- Back Trackers
ROS nodes
Module | Description |
---|---|
Uniform | Expand selected segments with local motion primitives by uniformly sampling the control space, i.e. yaw-rate, ascent/descent angles. |
RandomLinear | Expand selected segments by sampling linear trajectories. Can sample yaws, planar or spherical. |
MavTrajectoryGeneration | Utilizes the mav_trajectory_generation library to create smooth polynomial trajectories. Currently mostly proof of concept, samples random target points as goal selection. |
RRT | Extend the trajectory tree by randomly sampling the allowed space and connecting to the closest existing segment. Can crop partially infeasible trajectories to encourage exploration of boundaries. Uses nanoflann for knn search. |
RRTStar | Based on the RRT generator. Furthermore allows attaching new segments to nearby highest value segments instead of closest ones, rewiring of existing trajectories to increase their value and rewiring of children of the root segment when they are not selected to keep their respective branches alive. |
FeasibleRRT, FeasibleRRTStar | Implementations of the RRT and RRTStar generator, that use the mav_trajectory_generation library to create trajectories with smooth derivatives. |
Module | Description |
---|---|
GreedySelector | Selects the segment with the highest value in the trajectory tree. Can discriminate between the full tree and leaves only. |
RandomWeighted | Select segments at random, weighted with their values. The probability of a segment being selected is computed as P(x) = 1/Z value(x)^factor . Can add extra probability for leaves, uniform probabilities to guarantee non-zero probability for all segments and exclude already expanded segments. |
Module | Description |
---|---|
GeneratorUpdateNothing | Default generator updater. Does not perform further actions. |
GeneratorResetTree | Discard all current segments and start building the trajectory tree from scratch. |
RecheckCollision | Remove all trajectory segments that are no longer collision free. |
Module | Description |
---|---|
NaiveEvaluator | Based on the SimulatedSensorEvaluator. Counts the number of unknown voxels visible by a simulated sensor model. |
FrontierEvaluator | Based on the SimulatedSensorEvaluator. Counts the number of frontier voxels (unknown voxels which are next to occupied voxels) visible by a simulated sensor model. |
VoxelTypeEvaluator | Based on the SimulatedSensorEvaluator. Assign custom gains for all voxels visible by a simulated sensor model. Can discriminate between occupied, free or unknown voxels, within or outside the target bounding volume. |
SimpleYawPlanningEvaluator | Samples different orientations by assigning different constant yaws to each trajectory segment. Then uses another evaluator to determine the best orientation and keep it. |
VoxelWeightEvaluator | Based on the SimulatedSensorEvaluator. Utilizes the TSDF voxel weights to estimate the impact a sensor view has on already existing surfaces, combined with a gain for unknown free-space or frontier voxels. |
Module | Description |
---|---|
SegmentTime | Assigns the execution time of a segment to its cost. |
SegmentLength | Use the length of each segment as its cost. |
Module | Description |
---|---|
LinearValue | Compute the value of a segment as linear combination of its gain and cost. Value = a * Gain - b * Cost . |
ExponentialDiscount | Discount the gain with an exponential term of the form Value = Gain * exp(-Cost/scale) . Can accumulate all gains and costs or only consider a single segment. |
AccumulateValue | Accumulate value by adding the value to the value of the parent node. Uses another value computer to evaluate the single segments. |
RelativeGain | Computes the value as the fraction of gain and cost Value = Gain / Cost . Can accumulate all gains and costs or only consider a single segment. |
Module | Description |
---|---|
ImmediateBest | Select the child of the root that has the highest value of all children of the root. |
SubsequentBest | Select the child of the root that has the overall highest value segment in its sub-tree. |
Module | Description |
---|---|
UpdateNothing | Default evaluator updater. Does not perform any further actions. |
ResetTree | Clear all segments from the trajectory tree and start from scratch. |
UpdateAll | Recompute gain and/or cost and/or value for all segments from scratch. All combinations of the three are possible. |
PruneByValue | Remove all segments from the tree that don't match the minimum value. The minimum can be specified in absolute or relative terms. Can check segments individually or also consider their sub-tree. |
UpdatePeriodic | Only periodically call a follow-up updater to update the tree. Periodicity can be specified in number of calls or in wait time between updates. |
SimulatedSensorUpdater | Updater specific for simulated sensor evaluators. Recomputes the gain of the visible voxels (as they were when the gain was first computed) without ray casting again. Concretely, for the NaiveEvaluator all still unknown voxels are counted, for the Frontier unknown voxels currently next to occupied voxels are counted and for the VoxelType all voxels are reevaluated. |
YawPlanningUpdateAdapter | Updater specific for yaw planning evaluators. Allows a follow-up updater to update the gain stored in the currently best orientation. Does not change that orientation. |
YawPlanningUpdater | Updater specific for yaw planning evaluators. Uses a follow-up updater to update all orientations and select the new best one. |
Module | Description |
---|---|
SimpleRayCaster | Camera model, where the resolution is down-sampled to 1 voxel size at maximum range. Then a ray is cast through every pixel to determine the visible voxels. Timed at 98 +/- 30 ms for a 5m range camera and 10cm voxel size. |
IterativeRayCaster | Like the simple ray caster, except that rays start being cast at the range where the distance between two rays reaches a voxel size. This should reduce the number of redundant rays at short distances. Timed at 42 +/- 20 ms for a 5m range camera and 10cm voxel size. |
Module | Description |
---|---|
RotateInPlace | When no feasible trajectories can be found, start rotating in place until a feasible trajectory is found. |
RotateReverse | Like RoateInPlace, except that executed trajectories are stored on a stack. After a fixed number of rotations, if still no feasible trajectory is found the last executed segment is reversed. |
FeasibleRotateReverse | Like RotateReverse, but uses the mav_trajectory_generation library to generate trajectories with smooth derivatives. |
The planner node runs the main loop and houses the other modules (todo: specify more, img)
The planner node has 5 parameters, which can be used to set the behavior of the main loop (expansion/execution policy):
- max_new_segments: Limit the number of segments that are expanded between execution steps to this number (e.g. to keep the tree small for reduced update costs).
- min_new_segments: Continue expanding until this amount of segments is added to the tree .
- max_new_tries: Limit the number of expansion tries to guarantee the planner continues at some point.
- min_new_tries: This minimum amount of expansions must be attempted before continuing with segment execution.
- min_new_value: Continue expanding until there is at least one segment in the tree that exceeds this minimum value.
The planner will execute the next segment once the end point is reached and all additional conditions are satisfied. Parameters that are set to 0.0 will be ignored. Default for all parameters is 0.0.
The hierarchy of the conditions is as follows:
-
max_new_tries
: After this number of expansion tries, execution of the next segment is forced regardless of any other conditions. -
min_new_segments
,min_new_tries
,min_new_value
: Execution only continues when all these conditions are met. -
max_new_segments
: If the maximum number of new segments is found and themin_new_value
condition is met, no further segments will be expanded (i.e. the planner goes to sleep until the current segment is finished).
Whenever a condition is set, setting max_new_tries
is recommended to prevent the planner from getting stuck when no new segments can be found.
This node manages correct simulation setup and records raw data into a newly generated folder.
This node manages evaluation of the raw data created by the eval_data_node.
This node is a c++ encapsulation for evaluation of the saved voxblox maps and is called by the eval_plotting_node during evaluation.
Produces a random walk pose offset to model state estimation uncertainty.
Planner Structure
Planner Design Framework
Running and Evaluating a Simulated Experiment
Code Index