Since past week test wasn’t done properly I had to redo it this week. During this week’s test one of the LMS151 was constantly detecting the ball with a bigger radius than the actual ball radius, sometimes by a difference of 7 cm. The Sick LMS151 laser sensors have an error of 1 cm, so measurement error alone cannot explain the large radius difference. Another possibility is the laser measuring a non-plane section of the ball, because the ground floor is inclined, and the ball being an imperfect sphere, an ellipsoid. Like on the previous test, I recorded all data to a rosbag to process and analyse later.
Meanwhile, before data analyses, I finally found the error with solvePnP, it was caused by a wrong sign when calculating the ball centre on the image – I was subtracting the ball radius to a variable instead of summing. Consequently, the ball centre was wrong by two times its radius (its diameter), which is about 95 to 99 cm.
The first test results showed that the error discussed above increased with increasing distance from the ball to the LMS151 lasers. The increase in error made ball detection unreliable as you can see on the images bellow, however next week I am going to limit the calibration to the first 15 grid points to avoid large radius errors.
- Red arrow -> reference Sick LMS151;
- Yellow arrow -> Sick LD-MRS400001;
- Orange arrow -> Sick LMS151;
- Green arrow -> Camera position calculated with rigid transformation;
- Light Green arrow -> Camera position with solvePnP;
- Light Blue arrow -> Camera position with solvePnPRanscac.