|
In this project I fabricated a precise positioning fixture and implemented a target-tracking algorithm, which were used to empirically verify a geometric parallax model of depth perception. The resulting paper, "Active vision during coordinated head/eye movements in a humanoid robot", was accepted for publication in the journal IEEE Transactions on Robotics.
The goal of the experiment was to reproduce the geometry of a person tracking one object while turning their head, and determine whether the change in apparent position of a second object could be used to determine depth, in agreement with a geometric model.
To test this, a camera was mounted on two pan/tilt units with offset axes, one simulating the movement of the neck, and one simulating the eye's movement. The targets were LEDs mounted on a long aluminum bar.
I developed a simple algorithm to fixate the camera on the LED -- it found the brightest point in the image, then compared that to the calculated center of the camera's sensor. The error between those was used to instruct the stepper motors how far to move, then the calculation was done again. I implemented this algorithm in LabView.
Because of the geometry involved, we quickly determined that the rotation of
both neck and "eye" (camera) needed to be controlled precisely. The
lab's pan/tilt units were of high mechanical quality, but their proprietary
stepper drives could not achieve the required precision. To address this, I
reverse-engineered the pan/tilt unit's power harness to isolate the stepper
motor connections, and then drove the motors directly using the lab's National
Instruments motion controllers at 1/256 micro-stepping.
To accurately locate the LEDs relative to the camera, I started by designing and
machining the plate shown below to locate the pan-tilt units to the bar holding
the LEDs in a precise way. The pan-tilt unit is pressed against the upper left
of the large pocket before its mounting screws are tightened, and the aluminum
bar holding the LEDs fits precisely into the narrower slot at the top of the
part and butts against the pan-tilt. I then fabricated precise blocks to hold
the LEDs in known positions on the aluminum beam, which was graduated in
millimeters of distance from the neck pivot point. This allowed the researchers
to position the cameras and LEDs in a repeatable way to perform multiple
trials.
There were numerous other refinements made as we iterated the experimental setup:
With these changes, our apparatus became sensitive enough to detect a slight curvature in the aluminum beam upon which the LEDs were mounted. At its highest level of refinement, using one camera and only 5° of neck rotation, the apparatus could ascertain the distance to an LED within 50mm, even at 1000 mm away.
This was deemed accurate enough to support the geometric model, and the resulting paper was accepted for publication in the journal IEEE Transactions on Robotics.