On noise, parameter identification, and Jacobian estimation
Apparently, noise benefits system identification. Measurement noise, however, if more than a couple of pixels, ruins the Jacobian estimation. It's not rocket science, it's all obvious. But after artificial generation of all of the visual-motor experiments and verifying the correctness of the Jacobian initialization method, I can sleep better at night. The wrong estimation of the visual-motor Jacobian was only due to the visual tracking noise and one faulty recorded data.
For the MATLAB simulations that verified the above, I calibrated the camera (COSMICAR 6mm Lens, PointGrey Dragonfly Express Firewire Camera) with the Camera Calibration Toolbox. Then I created a camera and placed it on the WAM arm model that I'd created earlier using the Robotics Toolbox and guessed the 3D coordinates of the feature points that I placed on a virtual wall in the simulations. Since the joint angle readings from the WAM arm are very accurate, I used the exact same readings and projected the feature points on the camera image at the new camera poses. I noticed that when using a few data points, adding a zero-mean Gaussian noise with a very small variance reduces the error in the estimation of the next joint value. When I increased the variance, the estimation became erroneous, as expected. For example, the results were reliable when the standard deviation of the noise was in the order of 0.05, but when the standard deviation was 1.5, then the estimation error was very large.
To avoid the unavoidable measurement noise, I'd filter the visual tracking results every 4-5 readings. Before filtering, the system tracks at 100 Hz, and I guess I can sacrifice some bandwidth for now (the system still works in 20-25 Hz).