First, the GP2D12 sensor internally uses modulated (pulsed) IrED. It is important to use a low ESR (equivalent series resistance) resistor to decouple the power supply. Without such a decoupling resistor placed close to the sensor, the main regulated supply can see enough fluctuation to trigger a reset.
The GP2D12 sensor is not calibrated. In other words, different GP2D12 sensors produce slightly different voltages for objects at the same distance. An application must be provision to calibrate the sensors.
One of the main drawback of the GP2D12 sensor is the long sampling time. Although most inexpensive ADCs need a little bit of time to perform successive approximation, it is the sensor itself that contributes most to the sampling time. The GP2D12 sensor only updates the output every 20ms or so. This means for 20ms, the output voltage remains the same. Worse yet, there is no external line to indicate when the output voltage is updated.
This means in software, a robot never knows whether it is reading a freshly updated output, or an output that is just about to be updated. This means the value acquired by the robot can be up to about 40ms old! A moderately fast robot at 300mm/s moves about 12mm in 40ms. This lag also introduces problems for error correction because the information used to determine correction action can be up to 40ms old.
There is little you can do about this. You can, at your own risk, try to hack the sensor so you can tell at least when it starts to sample. This helps to reduce the lag to 20ms. You can also adjust your error correction method to perform smaller corrections, or perform corrections at intervals longer than 100ms. For linear uncertainly, you can reduce the speed when you know you are close to a cell in which you need to stop.