Pressure reading are affected by the temperature of the sensor. The factory calibration coefficients on the device are designed for the diaphragm's performance in air, not cast under rubber (which has a different coefficient of thermal expansion).
This page explains work to date on how to compensate this, and will be updated as work progresses.
Quoting from this paper
A highly linear correlation was found over the range of 20-26 degrees Celsius. The manufacture provides a temperature compensation algorithm using the on-board temperature sensor, but it is not accurate for sensors cast in rubber, probably due to the differences in thermal expansion coefficients.
Variation in pressure output (shown as the mean of the values) as a function of temperature for different rubber thicknesses, and values from a calibrated sensor without rubber for reference. Lines are best fits (r2 > 0.99)
To enable temperature reporting on the Arduino interface, set line 52 in the takktile_arduino.ino file to 'true'
Takkfast reports temperature in the standard get data raw command, and the ros drivers publish it as a field in the 'raw' stream
The most significant drift takes place during the initial powering of the sensors, and can last a few minutes. Therefore, it is suggested to let the sensors "warm up" before sampling the data.
To compensate for the drift a few approaches can be taken:
a) Recalibrate before use.
The sensor output is quite stable in the course of minutes. Therefore, it is possible to recalibrate the values when it is relevant. For example, if the sensors are embedded in a robotic hand, calibrate the values of the tactile sensors each time before operating the hand.
b) Correlate with other sensors
If a number of sensors are embedded in an array, then they drift quite systematically. An algorithm can be developed to average the sensors output and as such recalibrate during the operation.
c) Compensation algorithm
The sensor output variation is linear with respect to temperatures in between 20-26 deg Celcius. Therefore it should be possible to record the sensor values over a range of temperatures at a given pressure, and perform a linear fit to create a compensation algorithm.
These approaches are currently being developed and their efficiency is being assessed. Please let us know if you have implemented any of the above, and we will be happy to verify its performance, and spread the word about it !
Contact us: here