Over the summer of 2022, I had the privilege of working with Dr. Long Wang, Ehsan Nasiri (PhD Student), Thomas Wohlbruck (Undergraduate ME), and other members of the Advanced Robot Manipulators Lab (ARML) to design a platform for a laparoscopic surgery robot.
I presented my final report during the Pinnacle summer research expo.
Despite their technological advancements, most surgical robotics have the following two limitations:
Lack of accurate haptic/tactile feedback
Lack of software-based remote center of motion (RCM)
The goal of this robot platform is to develop a robotic arm capable of generating a force map of the surgery area and to implement a software-based RCM.
The force map will provide new data about the surgery area such as how much force is required to create an incision in a certain position and orientation in space.
A programmable RCM will provide an easier, cheaper, and more accurate method of creating an RCM compared to the mechanical methods used previously.
I assisted in developing the mechatronics for controlling the forceps and the ROS2 package for simulating the robot.
The DaVinci Surgical Bipolar Forceps are controlled by four pulleys at the base of the instrument. These pulleys do not require a ton of force to rotate, so the lab used Dynamixel xl430-w250-t servos with customized 3D printed interfaces to the forceps pulleys. Four servos were used and were connected to an Arduino Mega2560 via a Dynamixel shield. These servos were then attached to the pulleys via another customized 3D printed enclosure attached to the end effector of the xArm7.
I set up each servo individually and designated unique IDs for each servo. I also developed an Arduino script that demonstrated the movement range of the forceps by proceeding through each individual degree of freedom.
For future integration into a ROS2 environment, I developed a procedure for supporting dynamixel motor communication in ROS. Unfortunately, at the time of my research, there were no suitable ROS2 packages that interfaced with Arduino. As such, I created a method of running the rosserial_arduino ROS1 package on the Arduino and bidirectionally communicating the topics to a ROS2 environment by using the ros1_bridge package. I was running ROS Noetic and ROS Foxy.
This procedure involved a hardware setup using a FTDI to interface the Arduino Mega to the user's computer and using the Mega's secondary or tertiary TX and RX pins. This was necessary due to a bug where running the Arduino and Dynamixel through one USB cable would result in no data being transmitted (from what I could gather). By adjusting the default Serial parameter in the ArduinoHardware.h file, I rerouted the Arduino data through the FTDI chip and was able to successfully read topics in a ROS2 environment (such as the servo's angular displacement and velocity). This procedure is now present on the ARML's GitHub due to its importance with other projects.
The xArm7 already has a comprehensive ROS2 Foxy package for simulated and physical control of the arm. I was tasked with integrating the lab's custom end effector into the xArm7 package without causing merge errors with help from primary researcher, Ehsan Nasiri (many thanks to him). At the time of my research, the xArm7 GitHub did not have any support for custom end effectors with kinematics.
With extremely limited experience in ROS prior to this research position, I iteratively navigated each launch file in the xArm7 repository until I had a basic idea of how a simulation (RViz and Gazebo) was generated. I was able to create a duplicate launch file path to source updated URDF and SRDF files for the newly added end effector joints and links. The URDF was generated using the a URDF exporter add-in for SolidWorks and required some manual readjusting.
By analyzing, copying, and adjusting files found in the xArm7 repository, I was able to successfully launch both an RViz and Gazebo simulation of the xArm7 and forceps with full functionality in all joints. Although not the most elegant solution, the copied files prevented any merge issues with the original GitHub.
Although not my major focus, I also assisted in trying to implement the custom kinematics required for a programmable RCM into the xArm7 codebase (the kinematics were developed by Ehsan Nasiri).
With help from members of the ARML, I was successfully able to develop the mechatronics for controlling the DaVinci Surgery Bipolar Forceps and provide a modular solution for integration of Dynamixel servos into a ROS2 environment. I was also successful in generating and controlling an RViz and Gazebo simulation of a customized xArm7 and end effector.
The next steps for this project are integrating the custom kinematics into the GitHub and running an accurate simulation with a programmable RCM in Gazebo. After this step, physical tests with the robot will be required, and then a force sensor can be integrated into the robot in conjunction with the forceps.
I am extremely grateful for this opportunity given by Dr. Long Wang and for the assistane received by him, Ehsan Nasiri, and the rest of the ARML.