Motion planning algorithms

The builtin motion service uses one planning algorithm: cBiRRT. This page lists its identifying details, the defaults, and where each tunable is exposed to callers. For how cBiRRT works, its limits, and what to try when it fails, see How motion planning works.

Algorithm

FieldValue
NamecBiRRT (Constrained Bidirectional Rapidly-Exploring Random Tree)
Source coderdk/motionplan/armplanning/cBiRRT.go
Source paperBerenson et al., Manipulation planning on constraint manifolds, 2009
PropertiesSampling-based, bidirectional, probabilistic

Planning defaults

The full default set is documented in Motion service configuration. The planner-relevant entries are:

ParameterDefault
Planning timeout300 seconds
Resolution2.0 (mm or degrees/step)
Max IK solutions100
Smoothing iterations3 passes of sizes 10, 3, 1
Collision buffer1e-8 mm (effectively zero)

Tuning surfaces

Callers override a default in one of two places: persistently in the motion service config, or per call through the extra map on a Move request. The table below shows which tunables live where.

WhereScopeExample tunables
Motion service config (attributes)Persistent, per-servicenum_threads, input_range_override, planner-diagnostic flags
extra map on a Move requestPer-requestcollision_buffer_mm, max_ik_solutions, timeout, smooth_iter

See Motion service configuration for the full list of configuration attributes.

What’s next