Motion Control
Capability
Section titled “Capability”Run target trajectories, streaming servo control, managed drag, teaching, and replay.
Applicable Products
Section titled “Applicable Products”Available for supported 21 DOF products. Motion on PB1, PT1, DB1, and DT1 is unverified.
Check the product support matrix
Quick Example
Section titled “Quick Example”Run these fragments with a connected hand. Python runs inside an async function; C++ requires revo3/revo3.hpp, iostream, vector, chrono, and stdexcept; handle SdkError at the application boundary.
state = await hand.state.snapshot()target = list(state.positions_deg)handle = await hand.motion.move_to(target, duration=1.0)result = await handle.wait(timeout=3.0)print(result)const auto state = hand.state().snapshot();const auto layout = hand.joint_layout();if (!layout) throw std::runtime_error("Joint layout is unavailable");std::vector<float> target( state.motors.positions_deg, state.motors.positions_deg + layout->joint_count);auto handle = hand.motion().move_to(target, std::chrono::seconds(1));const auto result = handle.wait(std::chrono::seconds(3));Parameters and Returns
Section titled “Parameters and Returns”| Operation | Parameters | Returns |
|---|---|---|
| Motion.move_to(target, duration) | Target angles (degrees); duration (Python seconds / C++ duration) | OperationHandle |
| OperationHandle.wait(timeout) | Wait limit (Python seconds / C++ duration) | OperationState |
Find full signatures, defaults, units, and Python / C++ differences by operation:
Errors and Limits
Section titled “Errors and Limits”A trajectory and ServoSession cannot control the same Hand concurrently; conflicts return ControlConflict. A wait timeout or Indeterminate result does not prove motion has stopped. Read actual state before recovery.
Errors, Timeouts, and Retries · Language Binding Differences