Skip to content


Repository files navigation


This SAW component contains code for interfacing with the da Vinci medical robot using the research API (Intuitive Surgical Inc, It compiles on Windows and Linux. It requires the binaries for the ISI Research API as well as a da Vinci robot with the research API activated. You must have a research agreement in place with ISI for these requirements.

The ros folder contains code for a ROS node that interfaces with the sawIntuitiveDaVinci component and publishes the 3D transformations of each arm and setup joints as well as the joint states (position, velocity and effort) and some console events (foot pedals). It also broadcasts transformations for tf2. To build the ROS node, make sure you use catkin build.

If needed, one can also add OpenIGTLink support using sawOpenIGTLink with a few simple configuration files.




If you are using this package on Linux with ROS, please download the code using the .rosinstall file in this repository and then compile using catkin build (NOT catkin_make). The process is very similar to the compilation for the dVRK code: but for wstool, use:

wstool merge

Running the examples

Main example

The main example provided is sawIntuitiveDaVinciConsoleQt. You need to make sure your computer is on the same subnet as the da Vinci, i.e. you should be able to ping This example can be compiled on Linux or Windows.


Please read the section above to make sure you can communicate with the da Vinci. The ROS node is isi_console and can be found in the package isi_ros:

rosrun isi_ros isi_console

The topic names are based on the arm names:

rostopic list

You can also visualize the tf2 output using:

rosrun tf2_tools
evince frames.pdf


You will need to compile sawOpenIGTLink first: This should work on both Linux and Windows.

Then you can start streaming data from the da Vinci using IGTL using a couple of configuration files, one to load the sawOpenIGTLink component (manager-igtl.json) and one to configure the IGTL bridge (igtl-isi.json). Both files can be found in the share folder.

To start any of the examples with the IGTL bridge, use the -m command line option (this option works with both example programs, sawIntuitiveDaVinciConsoleQt and isi_ros/isi_console:

sawIntuitiveDaVinciConsoleQt -m manager-igtl.json

To display all the data being streamed, you can use the following application (provided along sawOpenIGTLink):

igtl_receive localhost 18944

If you start the same application with a dummy device name, it will listen for a bit and list the devices it received data for. For example:

igtl_receive localhost 18944 doesnotexist

will report:


Then you can select a specific device using:

igtl_receive localhost 18944 PSM1/measured_cp

will report something like:

Device name: PSM1/measured_cp
Time stamp: 26.185951038
Receiving TRANSFORM data type.
-0.76992, -0.337651, 0.541492, -0.0135498
0.401987, -0.915644, 0.000608893, 0.00900606
0.495609, 0.218142, 0.840705, 0.058111
0, 0, 0, 1