Previous
Orientation Vectors
Most users do not need to understand the planning algorithm. You define frames,
obstacles, and constraints, then call Move. The planner handles the rest.
This page is useful when:
Viam’s motion service uses cBiRRT (Constrained Bidirectional Rapidly-Exploring Random Tree), based on Berenson et al. 2009. This is the only planning algorithm in the builtin motion service. There is no configuration option to select a different algorithm.
cBiRRT grows two search trees simultaneously: one from the start configuration and one from the goal configuration. At each iteration, the algorithm:
The bidirectional approach is significantly faster than growing a single tree, because both trees converge toward the middle simultaneously.
The planner accepts configuration through the motion service config and through per-request options. Most users do not need to change these.
These are set in the motion service configuration:
| Field | Type | Default | Description |
|---|---|---|---|
num_threads | int | (system default) | Number of threads for parallel planning |
log_file_path | string | (none) | Path to write planning logs |
log_planner_errors | bool | false | Log planning errors |
log_slow_plan_threshold_ms | int | (none) | Log plans that take longer than this |
These defaults are compiled into the builtin motion service:
| Parameter | Default | Description |
|---|---|---|
| Timeout | 300 seconds | Maximum time to search for a path |
| Resolution | 2.0 | Constraint-checking granularity (mm or degrees per step) |
| Max IK solutions | 100 | Maximum inverse kinematics solutions to seed the search |
| Smoothing iterations | 30 | Post-planning path smoothing passes |
| Collision buffer | 150 mm | Clearance around obstacles |
If the planner returns an error (“no path found” or similar), consider:
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!