Motion planning
Your robot arm needs to move from one position to another without colliding with the table, the walls, or itself. Computing a collision-free path through 3D space means reasoning about the arm’s kinematic model, the workspace geometry, and any constraints on how the arm should move.
Viam’s motion service handles this for you. You describe the spatial layout of your workspace (the frame system) and any obstacles, then tell the arm where to go. The planner finds a safe path and executes it.
This section covers motion planning for arms, gantries, and other kinematic chains. For GPS-based autonomous navigation with mobile bases, see Navigation.
Start here
New to Viam’s motion service? Work through a short quickstart that uses fake components so you can run it on any machine:
How it works
Motion planning in Viam connects several pieces:
Frame system: a coordinate tree that tracks where every component is in space. The frame system lets you specify target positions in any frame and translates between them automatically.
Kinematic model: a description of the arm’s joints and links that tells the planner what configurations are physically possible.
Obstacles: geometry (boxes, spheres, capsules) that define regions the arm must avoid.
Constraints: rules about how the arm should move between poses, such as keeping the end effector on a straight line or maintaining its orientation.
Motion service: takes the frame system, kinematic model, obstacles, and constraints and computes a collision-free path from the current pose to the target.
Topic subsections
Other how-tos
Concept pages
Reference
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!