.. _Introduction: ############ Introduction ############ ************ What is CRTK ************ CRTK (Collaborative Robotics Toolkit) is primarily a convention for command names and payloads used in robotics. It is not necessary for robots to support all the CRTK commands, but if a command is implemented, it should adhere to this convention for the command name and payload. The API does not require any specific programming language nor middleware. As such the Robot Operating System (ROS) is not required, but the equivalent ROS service/topic name and message type are included since it is our primary development environment. ********* 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 ***************** Supported devices ***************** This is a non-exhaustive list of devices with CRTK interfaces. The devices with a *cisstMultiTask* interface rely on the `ROS bridge `_ to provide the ROS1 or ROS2 interface. In many cases, it is necessary to use the development branch (devel). * `Raven II `_ * ROS1 interface * `dVRK (da Vinci Research Kit) `_ * `ROS1 `_ and `ROS2 `_ interfaces as well as Python and Matlab clients * *cisstMultiTask* interface * `ForceDimension haptic devices (and Novint Falcon) `_ * ROS1 and ROS2 interfaces as well as Python client * *cisstMultiTask* interface * `SensablePhantom haptic devices (aka GeoMagic or 3DS Touch) `_ * ROS1 and ROS2 interfaces as well as Python client * *cisstMultiTask* interface * `Universal Robot (UR) `_ * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * `Northern Digital Inc tracking devices (NDI) `_. Current implementation supports devices using a serial port or USB interface (Polaris, Aurora...) * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * `Atracsys tracking devices `_ * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * `ATI force sensors `_. Current implementation supports force sensors with Ethernet interface. * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * `Optoforce force sensors `_ * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * Custom robots using `Galil controller interface `_ * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * Custom robots using `Copley controller interface `_ * ROS1 and ROS2 interfaces * *cisstMultiTask* interface * `Asynchronous Multi-Body Framework (AMBF) simulator `_ * ROS1 and ROS2 interfaces via `AMBF CRTK plugin `_ (see ros1 and ros2 branches)