C++ and Python API
The primary contract between packages is Interfaces — messages, services and actions. Reach for a library API only when you are working inside a package or the interfaces genuinely cannot express what you need.
Client facades
Each service layer ships a client that wraps its interfaces. These are the entry points worth knowing:
Client |
Language |
Wraps |
|---|---|---|
|
C++ / Python |
|
|
C++ / Python |
|
|
C++ |
workcell model queries, TF lookups |
Warning
motion_planning_client currently exists in three implementations with
different method sets, and the Python and C++ surfaces have diverged. Check
which one your package depends on before assuming a method exists.
Consolidating these is planned; until then the interfaces are the reliable
contract.
Foundation libraries
Package |
Provides |
|---|---|
|
Logging for the whole stack — see Log from your code |
|
Shared value types used across package boundaries |
|
Transform helpers over |
|
Low-level utilities; the one package permitted to log directly |
Error codes
Planning and control results carry an error code rather than a bare boolean.
ErrorCodes::ToString renders one for a log line. Note that not every non-zero
code is a failure worth a WARN: codes such as START_AND_GOAL_STATE_TOO_CLOSE
are routine outcomes — the arm is already where it was asked to go — and the
error-code logger routes them to INFO.
Generated documentation
Per-repository Doxygen output is published alongside each repository’s own documentation site. This page covers the surfaces you need to use the stack; the generated reference covers everything else.
Note
Doxygen coverage is uneven — roughly 1066 classes across 559 headers, with inconsistent comment density. Where the generated docs are thin, the interfaces and this site’s guides are the better starting point.