# Motion control `DobotCtrl.move()` delegates the following parameters to `DobotTcp.move()`: ```python robot.move(target, motion_mode=None, coord_type=None, path_blend=None, offset=None, pose=None, speed=None, accel=None, decel=None, is_async=True) ``` | Common interface | MG400 command | |---|---| | P + PTP | `MovJ` | | P + LINE | `MovL` | | J + PTP | `JointMovJ` | `is_async=True` maps to `Sync()` を呼ばない; `is_async=False` maps to 移動命令の後に `Sync()` を呼ぶ. This is unrelated to Python async/await. Use `wait_for_complete()` when a nonblocking motion must be followed by a completion wait. ```python # Example: run only after verifying the target and physical safety robot.move([200, 0, 100, 0, 0, 0], coord_type="P", motion_mode="PTP", is_async=False) ``` The example coordinates are not guaranteed safe for a particular installation. `drive()` is partially implemented; consult the implementation and API reference for `rotate()`, `approach()`, and other methods. ## Source-verified details For `is_async=False`, the current `DobotTcp.move()` implementation sends a **separate `Sync()` command** after the motion command. It does not pass DobotStudio Pro's script-level `SYNC` option to TCP/IP `MovJ` / `MovL`. A supplied `pose` is rejected with `False`; `offset` applies to Cartesian (`P`) targets only, not joint (`J`) targets. Independent `decel` handling is not implemented. See the [source-level public-method audit](../reference/method_audit.md).