|
Distortion When Tracking Targets With RoboRealm and Tilted Axis Cam
I've been working on this issue for a long time, but just can't seem to get it fixed. When our Axis camera (model m1013) is mounted on our robot at a 45 degree angle (from the ground, pointing upwards) and our robot turns to the side, the target height (calculated with RING_CORNER data) increases by some small amount of pixels, depending on how far the robot is positioned from the target - usually between 3 and 6 pixels. Although 3 to 6 pixels doesn't sound like much, this heavily affects the way distance from the target is calculated, as our distance function uses the target's height in pixels for the calculation. I've tried many things - the 'radial distortion' module, the 'perspective' module, the 'rotate' module, and the 'spherical unwarp' module (which helped a bit, but still didn't fix the issue completely), but none of them fixed the issue completely. The problem, I've determined, is that the camera is rotated at a 45 degree angle, rather than being perpendicular to the ground. This causes a kind of 'keystone effect' that is very difficult to eliminate completely, and varies in strength based on how far away the robot is from the target. Unfortunately, as the shooting targets are fairly high up in this year's FRC game, positioning the camera perpendicular to the ground would cause the target to be out of the shot unless the robot is very far away. Is there any other way I could try to fix this issue??
Please find attached a zipped folder of filtered field images both at 10 ft and 15 ft from the base of the target, with the robot facing towards the target as well as 25 degrees to either side - these images reveal this distortion effect. Also please find attached several RoboRealm projects in which I have tried to approach this issue.
|