Skip to content

Cuberkk/RMIS_force_sensor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Source Force Sensor for Robot-assisted Minimally Invasive Surgery Research

This repo contains the CAD and ECAD files needed to construct the force sensor as described in the our paper.

It is organized in the following manner:

CAD Folder

  • Single Force Sensor Assembly - (large_needle_driver_plus_mounting.sldasm)
  • Dual Force Sensor on Tool Assembly (Cadiere_Forceps.sldasm)
  • Calibration Assembly (calibration_setup.sldasm)

The most basic assembly which contains the important components to build the force sensor is found in the Single Force Sensor Assembly. The Calibration Assembly contains the designs for two fixtures that are meant to be mounted on to 3-axis translating stages. Please adapt these shapes to your own calibration set up or build your own.

If you use this for your research or other work, please cite our paper

Z. Chua and A.M. Okamura “A modular 3-degree-of-freedom force sensor for robot-assisted minimally invasive surgery research,” arXiv:2211.05428 [cs.RO], 2022.

@misc{chua2022modular, title={A Modular 3-Degree-of-Freedom Force Sensor for Robot-assisted Minimally Invasive Surgery Research}, author={Zonghe Chua and Allison M. Okamura}, year={2022}, eprint={2211.05428}, archivePrefix={arXiv}, primaryClass={cs.RO} }

Single Force Sensor Assembly Model

Single Force Sensor Assembly

Dual Force Sensor on Tool Assembly Mode

Dual Sensor Assembly

Calibration Assembly (shown without translation stages)

Calibration Assembly

ECAD Folder ( contains sch and brd files as well as BOM)

- Force sensor board (ALPS2)
- Amplifier circuit (amplifier_board)
- component library (Parts.lbr)

Arduino Folder

- Arduino to ROS or Arduino GUI using Serial (force_sensor_ROS_interface)

The Arduino code requires installing the ROSserial library and the basic linear algebra library. It will send the force values in the local frame of the sensor to ROS as topics. When used in DEBUG mode it will print the amplified sensor output values to serial.

ROS Folder

- script to resolve forces into robot frame (compute_pose.py)

This ROS script will compute the estimated gripper pose in the robot base frame and resolve the force measurements from each sensor frame into this base frame. To correctly compute the forces the min_angle variable should be defined in the compute_jaws_pose function. This must be set so that the script can adjust the reported gripper angle appropriately when is grasp an object. It was developed for dVRK 1.7.

Making your Own Force Sensor

To make the force sensor you will need the following components on hand.

Sensor Assembly
Item Qty Part Number Vendor Vendor Part Number Comment
36 AWG wire 3 4733 Adafruit 4854733
Molex female connectors 2 22552101 Mouser 53822552101
Molex header pins 10 16020074 Mouser 53816020074LP
M2x3 screws 2 91801A550 McMaster Carr 91801A550
M1.2x3 screws 4 91430A153 McMaster Carr 91430A153 Alternate component from actual design
M1.2x8 screws 4 91800A085 McMaster Carr 91800A085 Alternate component from actual design
1DoF force sensors 8 HSFPAR003A Mouser 688-HSFPAR003A
Kapton tape 1 Amazon Any roll is fine
Sensor Array PCB 2 Osh Park
Jaw attachment 1 Protolabs Machined in aluminum
Base 1 Protolabs 3D printed in aluminum
Sensing plate and rod 1 Protolabs Machined in stainless steel
Strain relief bracket 1 3D printed in Objet Verowhite
Wire clamp 1 3D printed in Objet Verowhite

Soldering the sensor PCB

To solder the circuit PCB, you will need to perform surface mount soldering of the ALPS sensors. We recommend using a heat plate such as this one sold by Adafruit. When the solder paste has been liquified, you can place the sensors in the orientation shown below using tweezers. Take note of the alignment dots. DO NOT USE ADDITIONAL FLUX. This will damage the sensing nibs.

pcb layout

To ensure that the sensor is mounted flush to the surface of the PCB, you can lightly press the sensor into the board. You might notice some solder paste get pushed out. You can scrape those off once the all the sensors are firmly mounted on the board after cooling off.

Cut your desired length of 36 AWG wires. Strip off a length of 2mm very carefully with wire cutters. Coat the exposed bare wire with solder paste. Securely fix the PCB in place, and then solder the wire onto the contact pads.

Label each wire with tape and a marker. Carefully twist the wires coming off the board together while using your finger as a strain reliever. Strip and crimp the Molex terminals onto the other end of the wires and insert them into their housing. The PA-20 crimper is a good generic crimper to use.

A good tutorial for how to crimp wires can be found here.

Assembling a Sensor

To help you visualize the method for putting the sensor together, please watch the YouTube video at this link:

Instruction Video

Assembling the Amplifier Board

The amplifier board requires the following components. Each board supports a single sensor assembly.

Amplifier Board
Item Qty Part Number Vendor Vendor Part Number
Instrumentation amplifier 8 AD623ANZ
Molex male header 3 10897102 Mouser 53810897102
Murata capacitor 1uF 8 GRM033R61A104ME15D Mouser 81GRM033R61A104ME5D
KEMET tantalum capacitor 10uF 8 T489A106K010ATA2K2 Mouser 80T489A106K10ATA2K2
YAGEO 5K ohm resistor 8 RT1206BRD075KL Mouser 603RT1206BRD075KL
Vishay 25K ohm trimmer 8 T93YB253KT20 Mouser 72T93YB25K
PCB 2 Oshpark
2 Pos, 5mm Pitch Terminal Blk 1 TB001-500-02BE DigiKey 102-6134-ND

Layout the components for the amplifier board according to the schematic below and solder them on in a reflow oven (or if you are really skilled you can hand solder).

amplifier board

Connecting the Amplifier Board

The connection diagrams are shown in the image below. Once you connect your sensors to the board and to a microcontroller or oscilloscope, you should be able to read the voltage output of each of the ALPs sensors. You can use the provided Arduino sketch in DEBUG mode to read the amplified sensor values. You might need to modify the sketch to read from different analog inputs depending on how you have made your connections.

Once connected you should inspect the readings while adjusting the preloading of each sensor by tightening or loosening the four screws that compress the sensor arrays into the sensing plate. You will want the sensors to respond almost immediately to any force without any deadzone. You may need to shim the contact surfaces of the sensor plate to get good results.

The potentiometers can be used to adjust the reference voltage level of each amplifier chip. This sets the baseline voltage for zero force.

Sensor Calibration

calibration rig

Once you are done, you can follow the methods in our paper to calibrate the sensor using a reference force sensor. We have provided an example of a calibration jig that uses 2 of these (translational) stages mounted on an acrylic base. Our jig was designed for an ATI Nano17 to act as the reference force sensor.

We are currently working on releasing a calibration program that can read the sensor outputs from the microcontroller via serial and reference force data from an ATI Nano17 through a NIDAQ data acquisition card. This will make it easier to perform calibration by allowing one to record all 8 sensor values and the reference force in a near-simultaneous manner. It will also allow for dynamic calibrations.

Note: 2 calibrated sensors will be needed to fully instrument a single tool.

Force measurements in ROS

Once you have 2 calibrated sensors that are mounted on the large needle driver endowrist tool, you can perform resolved force measurements for that tool in ROS. First you will need to update the calibration matrices for both sensors assemblies in the provided Arduino sketch. The sketch will open a ROS node via serial to publish the sensor values. The provided ROS script will resolve the sensor values into a grip force and a resultant force based on the estimated pose of the tool as measured from the dVRK joint encoders.

Tips for Manufacturing

Manufacturers

We have you Protolabs for manufacturing the metal components of the force sensor design. Specifically the base is best manufactured using 3D printing with aluminum, while the sensing plate and the gripper jaw can be machined in aluminum.

The optional strain relief can be 3D printed using a high-resolution 3D printer. We have tested the Objet30 in Vero White.

For the PCBs we have used OSHPARK to manufacture the bare boards.

Wiring tips

For the for sensor PCB leads, we recommend using 36ga wire. We last purchased them from Adafruit in single rolls.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 66.7%
  • C++ 33.3%