Skip to content

The exposure settings, they do nothing. PS3Eye tracking only works in low lighting. #150

@cboulay

Description

@cboulay

In OSX, pushing the globe against the iSight camera automatically lowers its exposure, so that works.

When using the PS3Eye in Windows or OSX, tracking only works in low-light conditions. I think many people get this problem. See #141

in psmove_tracker_new_with_camera(int camera), there is a call to psmove_tracker_set_exposure(tracker, Exposure_LOW);

In psmove_tracker_set_exposure(PSMoveTracker *tracker, enum PSMoveTracker_Exposure exposure), target_luminance is set depending on the exposure input, with Exposure_LOW yielding target_luminance = 0;

Then it calls
tracker->exposure = psmove_tracker_adapt_to_light(tracker, target_luminance);

That function has an algorithm to adapt the exposure setting to yield the target_luminance. When target_luminance==0, it immediately returns with minimum_exposure: 2051;

Then
camera_control_set_parameters(tracker->cc, 0, 0, 0, tracker->exposure, 0, 0xffff, 0xffff, 0xffff, -1, -1);

For reference, here's the function declaration.
camera_control_set_parameters(CameraControl* cc, int autoE, int autoG, int autoWB, int exposure, int gain, int wbRed, int wbGreen, int wbBlue, int contrast, int brightness)

That function is platform specific. In Windows, using the PSEYE, it sets a registry key with these values, then restarts camera capture with openCV. This calls cvCreateCameraCapture( cameraID );

As far as I can tell, this function does not care what's in the registry.

In OSX, we just get a warning: psmove_WARNING("Unimplemented: Setting of PS3EYEDriver parameters\n");

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions