# Motion service API

The motion service exposes the methods below for planning and executing component motion. Most methods are implemented only by module-based motion services. The builtin service supports `Move`, `DoCommand`, and `GetStatus`, and nothing else.

| Method Name | Description |
| --- | --- |
| [`Move`](https://docs.viam.com/reference/apis/services/motion/#move) | The `Move` method is the primary way to move multiple components, or to move any object to any other location. |
| [`MoveOnMap`](https://docs.viam.com/reference/apis/services/motion/#moveonmap) | Move a base component to a destination pose on a SLAM map. |
| [`MoveOnGlobe`](https://docs.viam.com/reference/apis/services/motion/#moveonglobe) | Move a base component to a destination GPS point, represented in geographic notation _(latitude, longitude)_. |
| [`GetPose`](https://docs.viam.com/reference/apis/services/motion/#getpose) | `GetPose` gets the location and orientation of a component within the frame system. |
| [`StopPlan`](https://docs.viam.com/reference/apis/services/motion/#stopplan) | Stop a base component being moved by an in progress `MoveOnGlobe` or `MoveOnMap` call. |
| [`ListPlanStatuses`](https://docs.viam.com/reference/apis/services/motion/#listplanstatuses) | Returns the statuses of plans created by `MoveOnGlobe` or `MoveOnMap` calls that meet at least one of the following conditions since the motion service initialized: - the plan’s status is in progress - the plan’s status changed state within the last 24 hours All repeated fields are in chronological order. |
| [`GetPlan`](https://docs.viam.com/reference/apis/services/motion/#getplan) | By default, returns the plan history of the most recent `MoveOnGlobe` or `MoveOnMap` call to move a base component. |
| [`Reconfigure`](https://docs.viam.com/reference/apis/services/motion/#reconfigure) | Reconfigure this resource. |
| [`FromRobot`](https://docs.viam.com/reference/apis/services/motion/#fromrobot) | Get the resource from the provided machine. |
| [`DoCommand`](https://docs.viam.com/reference/apis/services/motion/#docommand) | Execute model-specific commands that are not otherwise defined by the service API. |
| [`GetResourceName`](https://docs.viam.com/reference/apis/services/motion/#getresourcename) | Get the `ResourceName` for this instance of the motion service. |
| [`Close`](https://docs.viam.com/reference/apis/services/motion/#close) | Safely shut down the resource and prevent further use. |

For full method signatures, parameters, and code examples, see the [auto-generated motion API reference](https://docs.viam.com/reference/apis/services/motion/).

## Method overview

### Move

Plans and executes a motion to a destination pose. This is the primary method for arm and gantry planning.

Key parameters:

- `component_name`: the arm or gantry to move
- `destination`: a `PoseInFrame` specifying the target pose and reference frame
- `world_state`: optional obstacles and transforms
- `constraints`: optional linear, orientation, or collision constraints

### GetPose (deprecated)

Returns a component’s pose. Deprecated in favor of the robot service’s `GetPose`. Python callers still use this motion-service method today; see the [Frame system API reference](https://docs.viam.com/motion-planning/reference/frame-system-api/).

### DoCommand

Sends arbitrary commands. The builtin motion service supports `"plan"`, `"execute"`, and `"executeCheckStart"` commands.

### GetStatus

Returns generic resource status for the motion service. Useful for liveness checks.
