Skip to content

Robot API

Anton Deguet edited this page Dec 20, 2023 · 11 revisions



⚠️ This page is obsolete. The latest version can be found on Read the Docs ⚠️


Table of Contents generated with DocToc

This page documents the Robot API. It is not necessary for robots to support all of these commands, but if a command is implemented, it should adhere to this convention for the command name and payload. The API does not require use of the Robot Operating System (ROS), but the equivalent ROS service/topic name and message type are included.

Use Cases

The initial use cases were motivated by the Raven II and da Vinci Research Kit (dVRK), which are telerobotic systems primarily used for research in medical applications. However, it also encompasses teleoperation or cooperative (hands-on) control of other robot systems, including typical industrial robots. It is not intended for mobile robots. Typical use cases include:

  • Teleoperation with or without force feedback, using any input device (leader) to teleoperate any follower robot
    • Teleoperation over high-speed links, for example when leader and follower are controlled from same computer or from computers with high-speed local connection
    • Teleoperation with lower-quality channels, such as over the Internet. These may have lower bandwidth and/or significant latency.
  • Autonomous (CNC-style) motion on the follower robot
  • Virtual fixtures on the leader robot

Robot API Specification

  • General:

    • All payloads will have a standard header that includes at least a timestamp. The timestamp is an absolute time, following the Unix convention of time since January 1, 1970.
  • Robot Motion

    • Query the measured or desired robot position, velocity, or effort
    • Move the robot based on a desired position, velocity, or effort
  • Robot Operating State

    • Query the current state (e.g., is power on, is tool attached)
    • Initiate a state transition (e.g., enable power, disable power, specify tool)
  • Status, warning, error messages

Clone this wiki locally