trishume / SmartGaze

WIP Open source IR eye tracker for the Eye Tribe tracker hardware
GNU General Public License v2.0
28 stars 13 forks source link

SmartGaze fails to control the eyetribe on OS X #4

Open kcleung opened 7 years ago

kcleung commented 7 years ago

I am using OS X 10.11 on a 15" Macbook Pro late 2013. I have compiled eyetribe using the instructions in README.md:

OSX or Linux with Make

The executable is bin/SmartGaze, not bib/eyeLike

I have connected the eyetribe to the USB3 port, then run bin/SmartGaze:

wifi-staff-172-24-60-96:bin abc$ ./SmartGaze UVC initialized Device found Device opened DEVICE CONFIGURATION (29ab:00fb/0000000001) --- Status: idle VideoControl: bcdUVC: 0x0100 VideoStreaming(1): bEndpointAddress: 131 Formats: UncompressedFormat(1) bits per pixel: 16 GUID: 5955593200001000800000aa00389b71 default frame: 1 aspect ration: 16x9 interlace flags: 00 copy protect: 00 FrameDescriptor(1) capabilities: 03 size: 1152x1536 bit rate: 35389440-35389440 max frame size: 7077888 default interval: 1/27 interval[0]: 1/27 FrameDescriptor(2) capabilities: 03 size: 1036x1536 bit rate: 95477760-95477760 max frame size: 3182592 default interval: 1/30 interval[0]: 1/30 FrameDescriptor(3) capabilities: 03 size: 768x1024 bit rate: 94371840-94371840 max frame size: 1572864 default interval: 1/60 interval[0]: 1/60 FrameDescriptor(4) capabilities: 03 size: 768x1536 bit rate: 99090432-99090432 max frame size: 2359296 default interval: 1/42 interval[0]: 1/42 FrameDescriptor(5) capabilities: 03 size: 2304x1536 bit rate: 191102976-191102976 max frame size: 7077888 default interval: 1/42 interval[0]: 1/27 FrameDescriptor(6) capabilities: 03 size: 2072x1536 bit rate: 190955520-190955520 max frame size: 6365184 default interval: 1/27 interval[0]: 1/30 FrameDescriptor(7) capabilities: 03 size: 1536x1024 bit rate: 188743680-188743680 max frame size: 3145728 default interval: 1/30 interval[0]: 1/60 FrameDescriptor(8) capabilities: 03 size: 1536x1536 bit rate: 198180864-198180864 max frame size: 4718592 default interval: 1/60 interval[0]: 1/42 END DEVICE CONFIGURATION bmHint: 0000 bFormatIndex: 1 bFrameIndex: 7 dwFrameInterval: 166666 wKeyFrameRate: 0 wPFrameRate: 0 wCompQuality: 0 wCompWindowSize: 0 wDelay: 0 dwMaxVideoFrameSize: 10077696 dwMaxPayloadTransferSize: 49152 bInterfaceNumber: 1 Streaming...

However, the software fails to turn on the LEDs on the eyeTribe, and how can I see the camera output, or gaze prediction coordinates?

I am pretty sure that the OS sees the EyeTribe, as the EyeTribe is reported:

$ ioreg -p IOUSB -w0 -l ........ |
+-o TheEyeTribe@14500000 <class AppleUSBDevice, id 0x1000699f2, registered, matched, active, busy 0 (43 ms), retain 19> { "sessionID" = 2785672002857998 "iManufacturer" = 1 "bNumConfigurations" = 1 "idProduct" = 251 "bcdDevice" = 0 "Bus Power Available" = 900 "USB Address" = 9 "bMaxPacketSize0" = 9 "iProduct" = 2 "iSerialNumber" = 3 "bDeviceClass" = 239 "Built-In" = No "locationID" = 340787200 "bDeviceSubClass" = 2 "bcdUSB" = 768 "USB Product Name" = "TheEyeTribe" "PortNum" = 5 "non-removable" = "no" "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"} "bDeviceProtocol" = 1 "IOUserClientClass" = "IOUSBDeviceUserClientV2" "IOPowerManagement" = {"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=65536,"MaxPowerState"=4,"DriverPowerState"=3} "Device Speed" = 3 "USB Vendor Name" = "Leopard Imaging" "idVendor" = 10667 "IOGeneralInterest" = "IOCommand is not serializable" "USB Serial Number" = "0000000001" "IOClassNameOverride" = "IOUSBDevice" }

trishume commented 7 years ago

I'm not sure I have any idea why it doesn't work. Does it ever pop up a window for showing the stream? If it does and the window is black, can you try aiming the eye tribe outside to see if it is just black because there is no IR and it is actually displaying the feed.

Also, do you happen to know when you last updated the EyeTribe SDK and perhaps thus the firmware on your device? Are you using the newer larger/longer fancier version that Eye Tribe released? Maybe your device has an older or newer protocol version than mine somehow.

Given that it is an issue I can't reproduce relating to hardware that I don't know the cause of, I'm afraid I won't be much help. I can maybe guide you through debugging it and answer any questions you might have though.

kcleung commented 7 years ago

The model number of the eyetribe development kit is ET1000 and the batch is "2014-10".

I have just installed the EyeTribe SDK last week, but when I tried to use the UI, it freezes my macbook :(

kcleung commented 7 years ago

When I run the Eyetracker server from the SDK, the terminal says:


The EYE TRIBE TRACKER Server


Version: 0.9.77

Settings applied: TCP port: 6555 Connections: local only Framerate: 30

Initializing the Eye Tribe Server The Eye Tribe Tracker firmware revision is 293 Accessing Tracker device

The Eye Tribe Tracker stands ready!

[08:09:09.940] INF: Default calibration profile loaded!

So the firmware revision is 293, and the SDK version is 0.9.77

Also when I run YOUR SmartGaze, do I have to uninstall the Eyetribe SDK first? Or does SmartGaze mean to run with the Eyetribe SDK? These things are not clearly spelt out in README.md

trishume commented 7 years ago

Interesting, that's the same SDK version and firmware I have on mine.

So the way it works is that SmartGaze doesn't need the SDK to be present to run, and I think it won't work if the Eye Tribe server is also running. However, the server in the SDK does send some fancy commands that I don't, which might be configuration that needs to be uploaded only once. So it is possible that you need to get the eye tracker working at least once with their software before mine will work, that's just a theory though. It also might be that the same issue that is stopping the SDK from working is stopping SmartGaze.

I've had weird issues where the SDK/official app randomly doesn't work before, and often a combination of restarting and unplugging the tracker will work.