Home - alberto-rota/dVRK GitHub Wiki
This guide was made and is maintained by Alberto Rota. Contributes, issues and corrections are welcome at Alberto's email.
- Table of Contents
- The daVinci robot
- Lab configuration, nomenclature and network connectivity
- Teleoperation with the daVinci
- STEVE: The VR simulator with haptic guidance
The daVinci is the most widely used robot in the healthcare industry for keyhole surgery. It is commercialized by the US-based company Intuitive Surgical Inc.. For research purposes, Intuitive collaborated with Johns Hopkins University (JHU) to create the dVRK Framework (da Vinci Research Kit) to make the hardware of the robot accessible to universities and research centers. The daVinci robot at NEARLab-MRS embeds such framework.
The robot is composed of:
- A Patient Cart, which equips the actuated arms and is positioned next to the patient
- A Surgeon Cart, which equips the manipulators and accomodates the surgeon
- A Controller Cart (or Vision Cart), which equips the controllers and the camera system
The Patient Cart mounts 2 actuated robotic arms named Patient-Side Manipulators (PSMs) and one Endoscope Camera Manipulator (ECM). Their motion is determined from the pose of the manipulator at the surgeon cart. Looking at the robot in a frontal view (as in the figure):
- The left arm is PSM1: it is controlled by the left manipulator
- The right arm is PSM2: it is controlled by the right manipulator
- The center arm is the ECM: it is controlled by both manipulators and pressing the CAMERA pedal
- An additional non-powered arm, PSM3, is mounted on the robot but at the moment is not actuated

Each arm is mounted on a kinematic mechanism that determines the position and orientation of its base and, therefore of its RCM. This kinematic chain is composed of Set-Up Joints (SUJs) and it is not actuated. It is moved manually before each operation.
NOTE: Unless it is absolutely necessary, DO NOT MOVE THE SET UP JOINTS. Their calibration is manual and takes a long time!
The SUJs determine the pose of the PSM and ECM remote center of motion. The actuation occurs only on the joints of the PSM and ECM and never on the SUJs.

When teleoperating, the surgeon is seated at the Surgeon Cart, which is equipped with 2 Master-Tool Manipulators (MTMs) and a High-Resolution Stereo Viewer (HRSV) composed of two oculars. The motion of each MTM is converted to kinematic commands for the PSMs. The ECM motion can also be controlled by moving the two MTMs simultaneously while pressing the CAMERA pedal. The left and right feeds from the stereo endoscope camera are sent separately to the right and left HRSV oculars: this feature allows the surgeon to view the surgical field in 3D.
The CLUTCH pedals is pressed to reposition the MTMs. When it is held down, the motion of the MTMs will be free but the PSMs will not move. This is useful to reposition the MTMs in case of collision with the patient or the environment or when the edge of the range of motion is reached.

The daVinci room of NEARLab-Medical Robotics is equipped with the following devices:
- 1 Patient Cart equipped with 2 functional PSMs (PSM1 and PSM2), 1 non functional PSM (PSM3), and 1 functional ECM
- 1 Surgeon Cart equipped with 2 functional MTMs (MTMR and MTML), and one HRSV pair
- 1 Controller Cart
- 1 Windows PC (named
WIN) for computation-heavy tasks - 1 Ubuntu PC (named
dVRK) for controlling robot - 1 Ubuntu PC (named
GRU) handling the ROS framework

IP addresses of the computers are fixed and are the following:
-
GRU: 192.168.1.1 -
dVRK: 192.198.1.2 -
WIN: 192.168.1.3
If you connect to the local network via Ethernet, your IP address will be assigned automatically by the router and it will be static.
Check your IP address by running ifconfig in a terminal (Linux) or ipconfig in a command prompt (Windows).
To send/recieve messages to/from the robot, like joint positions, teleoperation commands, you need to be connected to the local network (wired only for secutiry reasons) via an Ethernet cable. An Ethernet access point is available between GRU and dVRK; Ethernet cables are available around the room. If your computer does not have an Ethernet port, you can use a USB Ethernet adapter
Ethernet Adapter โ ๐ Amazon link
A ROS framework is the most important layer of communication in the daVinci room. Download ROS Noetic to access this framework: ROS is necessary if you need to get the robot data on your computer, including the camera feeds
NOTE: ROS works only on Linux
- If you have a Windows PC: Install WSL, a command-line only Linux environment which runs inside windows,
- If you have a Mac: Youโll need to install a Virtual Machine, this video may help you
- If you have Linux PC: Make sure itโs 20.04 (Focal)
ROS Noetic โ ๐ Download link
The daVinci room is equipped with a ROS network that handles the communication between all the computer and the interfaces.
To start up the ROS network, run the ROSMASTER node on GRU: open a terminal and run
roscore
If you open the terminal inside a python virtual environment and (base) is displayed before the terminal prompt, you have to deactivate the virtual environment by running the command cda before running roscore.
Check that the output is correct and that the ROS_MASTER_URI variable is set to http://192.168.1.1:11311/
To check if a computer is connected to the ROS network, run rostopic list in a terminal. If the computer is connected, you will see a long list of topics, most starting with /dvrk/....
If you are not connected to the network, you will see an error message like ERROR: Unable to communicate with master!. In that case, some troubleshooting tips are:
-
Check that the computer is properly connected to the local network via Ethernet cable (Ethernet cables become "loose" over time, and they may disconnect by themselves)
-
Check that on your computer, the
ROS_MASTER_URIvariable is set tohttp://192.168.1.1/11311/. Do this by runningecho $ROS_MASTER_URIin a terminal. IfROS_MASTER_URIis not correct, runexport ROS_MASTER_URI=http://192.168.1.1/11311/ -
Check that on your computer, the
ROS_IPvariable is set to the IP of your own computer. Do this by runningecho $ROS_IPin a terminal and compare it with the output ofifconfig(by now I assume that you are using Ubuntu or WSL). IfROS_IPis not correct, obtain your IP and then runexport ROS_IP=<your IP>
The guide of using the daVinci for teleoperation is at this page
STEVE: The VR simulator with haptic guidance
The guide of using STEVE, the daVinci VR simulator is at this page