.. _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 `ROS1 bridge `_ or `ROS2 bridge `_ to provide the ROS interface.
* `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 `_
* *cisstMultiTask* interface
* `Optoforce force sensors `_
* `ROS1 `_ and `ROS2 `_ interfaces
* *cisstMultiTask* interface