Handguiding of Robot Arm for Use in Surgery
Skills: Controller Design, URScript programming
I worked on this project as a research officer at the SUTD-CGH lab from September to December 2022. The aim of the project was to use the Universal Robots UR10e robot arm to assist surgeons in performing PCNL surgery for kidney stone removal. This process was meant to be semi-automated and involves the doctor moving the robot arm to the patient's abdomen and using scanning the kidney using an ultrasound scanner.
The problem I had to solve was that there was a lot of resistance felt when moving the robot arm with all the motors off, this makes moving the robot to a specific position from its home position challenging. Thus, I had to find a way to reduce the resistance felt when hand guiding the robot.
To achieve this, I used the Optoforce 6DoF force-torque sensor and implemented a proportional controller on the robot arm such that the force-torque measured by the sensor would be proportional to the linear and rotational velocity of the end effector. I used different proportionality constants (Kf, Kt) for the linear and rotational movement.
[fx, fy, fz] = Kf × [vx, vy, vz]
[tx, ty, tz] = Kt × [ωx, ωy, ωz]
The speed command in the Universal Robots programming script operates in the robot arm’s base frame, while the force-torque sensor reads the values in the effector frame. Thus, I had to transform the measured FT values from the end effector frame to the base frame using the inverse of the rotation matrix from the base frame to the end effector frame.


Rotational movement of robot arm
Translational movement of robot arm