(17.7 MB PowerPoint)

advertisement
eyeCU Eye Tracking System



A wearable device
(glasses) with a
mounted camera
Images of the eye
are captured with a
digital camera
Images are
processed, and
mouse movement
commands are sent
to the computer to
control the cursor
Camera
Camera
Control
Image Data
Processing
Module
Wireless Data
Transfer
Host
Computer

Primary:
 Locate the pupil, assign it to one of four quadrants, send
movement commands to the computer, move the cursor
 Transfer the images from the Beagle Bone to the computer
via Ethernet
 Design 4 custom PCBs: camera board, power board,
interface board, and MSP430 board
Secondary:
 Support the eye tracker interface with computer
applications
 Display images that the camera captures on the computer
with overlays that indicate how the images are being
processed
 Refine algorithm to support a variety of users
 Interactive calibration
 Tertiary:
 DSP algorithm appropriate for a variety of lighting
conditions
 Develop point of sight control


Key Points
 IRB approval is a lengthy and rigorous process
 IR LEDs can inflict damage
 Due to potential hazard IR poses: probability of
IRB approval = 0%
 Completely Dropped IR illumination from project

Coded in Python

Uses the Windows API to get and set cursor position

Receives commands indicating the direction of movement
 R = (1,0), L = (-1,0), U = (0,1), D = (0,-1), S = (0,0)

Cursor position = (Previous cursor position) +
(Speed)(Command Vector)

For point of sight control, pupil coordinates are received
and mapped to screen coordinates.

Input: video of moving eye

Output: coordinates of pupil centroid, cursor
movement command

Current datasets are taken on a webcam with the IR
filter removed for enhanced contrast
A: aspect ratio for current region D: set of properly sized regions
C: set of connected regions
Si: pixel count for region i
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command

Reference Pupil Area: 554

Current Threshold = 34

Number of pixels in connected
region:
 Eyebrow: 2416
 Pupil area: 1044
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command
• Q: Queue of vectors
containing points
• p: current point
• D: matrix containing
locations and labels
of connected regions
Start
Q=(p0)
Pop item
from Q, call
it p
No
Write label
to D(p),
increment
region size
Add dark,
unprocessed
neighbors of
p to Q
Animation from Wikipedia’s flood fill algorithm
page
Q empty?
Yes
End

Reference Pupil Number
of pixels: 554

Current Threshold =34

Number of pixels in
connected
region:
 Eyebrow: 2416
 Pupil area: 1044
 Hair area: 48

Automated method for changing the threshold value for
each frame to accurately detect the pupil.

Adjust the threshold to find a connected region that meets
the following requirement.
 𝑆𝑖 ≈ 𝑅 (Discrepancy is the deciding factor on which
direction to change threshold value).

The change in the threshold value is decreased after each
iteration (idea of convergence).

Maximum of n adaptations. If pupil can not be detected
before maximum is reached, identify user as blinking.

Reference Pupil Area: 554

Current Threshold =31

Number of pixels
in connected region:
 Eyebrow 1: 564
 Eyebrow 2: 196
 Pupil area: 512
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command

Aspect ratio: vertical length/horizontal length of the
connected region.

Assumption: aspect ratio of the pupil must be
approximately one.

Adjust the threshold until:
 a:
0.5 < 𝐴𝑖 < 2
OR
 b: We have reached the maximum threshold adaptations,
indicating that the user is blinking.

Eyebrow Aspect Ratio = 0.49

Pupil Aspect Ratio = 1.07
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command

Use statistics to get rid of unwanted aberrations.

Scan the region horizontally, compute number of
pixels in each row.

Find mean and standard deviation of the pixel count.

Eliminate the row of pixels that fall outside of a certain
number of standard deviations of the mean.

Repeat the process for a vertical scan.
30
25
Number of Pixels
20
15
10
5
0
450
460
470
480
490
Discarded Columns
Kept Columns
500
510
X Position
520
530
540
550
Start
Threshold
C=
{Connected
Regions}
D={Ci|
0.8R < Si <
1.2R}
Compute
Aspect Ratio
Yes
Is D
empty?
No
Yes
Output Blink
Compute
Centroid
Yes
No
Max
adaptations?
Remove
Tails
0.5 < A < 2
No
End
Output
Command
Center
Right
Left
Up
Down
Blinking

Several parameters in the image processing algorithm,
such as initial threshold, are best set manually.

We propose to allow for interactive calibration, in which the
user will be able to modify algorithm parameters via a GUI
on the computer.

Video from the camera will be transferred via Ethernet to
the computer so that the user can view the effect of these
parameters in real time and choose suitable values.

Values obtained in calibration
 Initial threshold
 Processing region
 Reference points (center, corners)
CURRENT STATUS


Cursor movement
implemented in Python
Initial pupil detection
completed in MATLAB
NEXT STEP





Develop drivers to
facilitate the transfer of
command codes from the
Beagle Bone to the
computer.
Port Matlab code to C
Optimize algorithm
Test algorithm on Beagle
Bone
Experiment with different
lighting conditions
NO OS
OS (LINUX)
TI StarterWare
 Provides abstraction
layer
 Faster (no OS overhead)
 More control
 Use with CCS5
 Possibility of needing to
write additional board
level drivers


Linux as backup
 Several available
modules
 Additional overhead
 Less control
 Need Linux utilities to
compile software
http://www.ti.com/tool/starterware-sitara
Power
ARM Cortex A8
10X2
Header
0
2
9
1
C1_DOUT7
C1_DVSS
C1_IOVSS
C1_DVSS
8
1
7
1
C1_DCLK
C1_DOUT6
6
1
5
1
C1_HD
C1_DOUT5
F
u
1
F
u
1
F
u
1
4
1
3
1
C1_VD
C1_DOUT4
Semi
Cap
Semi
Cap
Semi
Cap
2
1
1
1
C1_VDSS
C1_IOVDD
5
C
C
4
C
C
3
C
C
0
1
9
C1_DVDD
C1_IOVSS
8
7
C1_SDA
C1_DOUT3
6
5
C1_SCL
C1_DOUT2
4
3
C1_RST1
C1_DOUT1
C1_DVDD
C1_IOVDD
C1_PVDD
2
1
C1_PVDD
C1_DOUT0
PC1
C1_DVSS
TCM8230MD_1
D
V
IOVSS
C1_VD
8
5
1
C1_IOVSS
OPEN
D
H
DVSS
C1_HD
9
7
C1_DVSS
Res3
3
C
R
K
L
C
D
RESET
C1_DVSS
C1_DVSS
C1_DCLK
0
1
3
7
T
U
O
D
SDA
C1_DOUT7
0
2
5
C1_SDA
F
u
1
F
p
2
3
F
p
2
3
F
u
1
6
T
U
O
D
SCL
C1_DOUT6
9
1
4
C1_SCL
Semi
Cap
Semi
Cap
Semi
Cap
Semi
Cap
5
T
U
O
D
C1_DOUT5
8
1
2
C
C
1
C
C
6
C
C
4
T
U
O
D
0
C1_DVSS
C1_DVSS
C1_DVSS
C1_DOUT4
7
1
3
T
U
O
D
Res3
7
C
C
24.54MHz
C1_DOUT3
4
1
2
T
U
O
D
SN74LVC1404
C1_DOUT2
3
1
C1_RST1
L
A
T
X
2
C
R
1
T
U
O
D
C1_DOUT1
2
1
F
p
0
3
D
N
G
XIN
0
T
U
O
D
K
L
C
T
X
E
4
3
2
1
C1_DOUT0
1
1
2
C1_CLK
0
0
5
Semi
Cap
K
0
1
T
U
O
X
1
C
Y
2
Res3
8
C
C
K
1
Res3
A
IOVDD
6
6
1
C1_IOVDD
4
C
R
Res3
1
C
R
Y
L
R
T
C
D
D
V
D
PVDD
2.2M
5
1
C1_DVDD
6
1
C1_PVDD
S
C
R
Res3
1
C
U
OSCOUT
C
C
V
C1_CLK
7
8
C1_PVDD
F
C
R
2
C
U
C1_PVDD
Oscillator driver
Camera
Header to daughterboard
MOSFET-N
3
D
Q
SDA
C_SDA
FIFO Buffer
D
N
10X2
Header
Res3
Res3
VCC-2.8
4
D
R
3
D
R
8
1
0
2
7
1
9
1
C_DOUT7
MOSFET-N
C_DCLK
C_DOUT6
D
N
G
D
N
G
6
1
5
1
1
D
Q
C_HD
C_DOUT5
VCC-3.3
4
1
3
1
C_VD
C_DOUT4
Cam_RST
C_RST
2
1
1
1
C_VDSS
C_IOVDD
IDT72V241L10PF
0
1
9
MOSFET-N
C_DVDD
C_IOVSS
8
7
D
N
C_SDA
C_DOUT3
6
5
E
G
S
R
5
9
\RS
O
2
D
Q
C_SCL
C_DOUT2
5
2
SCL
4
3
C_RST
C_DOUT1
VCC-2.8
D
N
G
2
1
WEN1
\WEN1
C_PVDD
C_DOUT0
4
2
WCLK
PD3
3
2
C_sDCLK
k
2
k
2
WEN2/LD
WEN2
2
2
SN74LVCH16T245
Res3
Res3
F
F
1
1
F
F
VCC-2.8
2
D
R
1
D
R
1OE
F
E
0
1
F
E
2
VCC-1.5
K
L
C
R
N
VCC-2.8
8
K
L
C
R
D
N
G
E
R
9
3
5
4
\REN2
D
N
G
D
N
G
2OE
8
4
5
2
7
4
3
VCC-3.3
VCC-2.8
1
N
E
R
\REN1
D
N
G
2DIR
2DIR
6
8
2
4
2
PAE
D
N
G
1DIR
1DIR
5
6
1
\EF
E
8
D
R
4
8
Q
8
D
7
1
9
2
C_DATA4
4
Q
4
D
5
6
1
E
L
F
2
C_DATA5
5
Q
5
D
0
2
2B5
2A5
D
VCC-3.3
8
1
8
2
2
2
2B6
2A6
9
2
C_DOUT5
2
C_DATA6
6
Q
6
D
2B7
2A7
7
2
C_DOUT6
D
C_DATA7
9
1
7
2
3
2
0
7
Q
7
D
2B8
2A8
6
2
C_DOUT7
2
6
2
F
D
N
G
0
1
D
N
G
E
Res3
3
PAF
5
1
D
N
G
E
PAF
D
N
G
L
4
PAE
1
2
1
I2C Shifter
G
k
2
k
2
VCC-2.8
C_SCL
6
1
0
3
9
1
0
3
C_DOUT4
C_DATA3
3
Q
3
D
2B4
2A4
Res3
5
1
1
3
7
1
2
3
C_DOUT3
\FF
C_DATA2
2
Q
2
D
2B3
2A3
F
F
4
1
2
3
6
1
3
3
C_DOUT2
7
D
R
C_DATA1
1
Q
1
D
2B2
2A2
3
1
1
4
1
5
3
C_DOUT1
C_DATA0
0
Q
0
D
2B1
2A1
2
1
2
3
1
6
3
C_DOUT0
F
F
D
N
G
D
N
G
C
C
V
1B8
1A8
VCC-3.3
1
2
2
1
7
3
1B7
1A7
2
D
U
1
1
8
3
1B6
1A6
5
6
1
2
D
E
L
9
0
4
F
u
1
F
u
1
1B5
1A5
Res3
VCC-3.3
8
1
4
D
N
G
Semi
Cap
Semi
Cap
\PAE
1B4
1A4
PAE
6
3
4
2
D
C
1
D
C
6
D
R
C_VerticalSync
1B3
1A3
5
4
4
C_VD
C_HorizontalSync
1B2
1A2
3
6
4
C_HD
F
u
1
PAE
1B1
1A1
C_sDCLK
2
7
4
C_DCLK
Semi
Cap
VCC-3.3
VCC-2.8
VCC-3.3
3
D
C
1
5
6
L
2
D
E
B
C
C
B
C
C
V
V
8
1
Res3
7
\PAF
PAF
VCC-3.3
5
D
R
A
C
C
V
Level Shifter
2
4
A
C
C
V
1
3
PAF
1
D
U
VCC-3.3
VCC-2.8
VCC-3.3
Indicator LEDs
Connector to camera
D
N
G
XBee
Connectors to Beagle Bone
0
6
6
G
Res3
LED_Blink
RD10
D
N
G
D
N
6
D
D
2
D
E
L
2x23
Header
D
N
G
D
N
G
D
D
N
G
D
4
4
6
6
4
5
4
4
4
3
4
4
3
4
5
D
4
D
N
G
D
N
G
D
D
N
G
\EF
2
4
1
4
2
4
1
4
0
4
9
3
0
4
9
3
2x23
Header
F
u
1
8
3
7
3
8
3
7
3
Semi
Cap
6
3
5
6
3
5
C
D
E
2
5
D
D
4
3
L
4
D
4
3
3
3
3
6
3
4
4
4
3
6
4
3
4
4
3
4
5
3
4
5
4
\FF
4
K
L
C
R
2
3
1
3
2
4
1
4
C_VerticalSync
2
3
1
3
2
4
1
4
0
3
9
2
0
4
9
3
0
3
9
2
0
4
9
3
8
2
7
2
8
3
7
3
8
2
7
2
8
3
7
3
D
N
G
6
2
5
2
6
3
5
3
VCC-3.3
x
R
6
2
5
2
6
3
5
3
5
6
1
4
2
3
2
4
3
3
3
x
T
4
2
3
2
4
3
3
3
Res3
2
2
1
2
2
3
1
3
XBee
2
2
1
2
2
3
1
3
9
D
R
0
2
9
1
0
3
9
2
0
2
9
1
0
3
9
2
ON/SLEEP
3
T
U
O
D
DIN/CONFIG
4
1
3
1
2
3
x
T
4
1
3
1
2
1
1
1
C_DATA5
2
1
1
1
2
2
V
0
1
9
1DIR
0
2
9
1
x
R
C
6
1
5
1
C_DATA1
4
2
2
2
1
2
1
2
C
6
1
5
1
C_HorizontalSync
\PAF
6
2
4
2
3
2
3
2
\PAE
D
1
0
1
SDA
8
1
7
1
SCL
8
2
6
2
5
2
5
2
C_DATA4
N
G
8
1
7
1
8
2
7
2
7
2
C_DATA0
1
0
1
9
0
2
9
1
D
N
G
D
N
G
SYS_5V
8
7
SYS_5V
2DIR
8
1
7
1
\REN1
3
D
U
8
7
8
1
7
1
VDD_5V
6
5
VDD_5V
\REN2
6
1
5
1
\WEN1
6
5
6
1
5
1
VDD_3V3EXP
4
3
VDD_3V3EXP
WEN2
4
1
3
1
4
3
4
1
3
1
2
1
\RS
2
1
1
1
VCC-3.3
2
1
2
1
1
1
Cam_RST
0
1
9
PD2
0
1
9
D
N
G
D
N
G
8
7
LED_Blink
8
7
C_DATA3
6
5
C_DATA2
6
5
C_DATA7
4
3
C_DATA6
4
3
2
1
2
1
VCC-3.3
VCC-3.3
PD1
G
N
D
G
N
D
G
N
D
1
6
5
1
6
5
L
E
D
2
L
E
D
2
Res3
Res3
1
6
5
L
E
D
2
RP4
RP5
Res3
VDD_5V
VCC-1.5
VCC-2.8
1.5V
2.8V
RP3
5
V
G
N
D
G
N
D
G
N
D
G
N
D
TLV1117
1
0
0
p
F
Semi
Cap
1
1
0
u
F
1
0
0
u
F
1
K
CP4
Semi
Cap
Semi
Cap
Res3
ADJ/GND
CP1
CP2
RP2
1
0
0
u
F
Semi
Cap
TLV1117
CP5
1
OUTPUT
4
VDD_5V
INPUT
3
1
0
u
F
ADJ/GND
OUTPUT
1
K
2
Semi
Cap
Res3
UP1
VCC-1.5
CP3
RP1
1N4002
Diode
OUTPUT
4
VDD_5V
INPUT
3
OUTPUT
DP1
2
UP2
VCC-2.8
1N4002
Diode
Linear Regulators
DP2
Power
FIFO Buffer
I2C
XBee
XBee
Comment
Description
Designator
Footprint
LibRef
LED2
Typical RED, GREEN,
YELLOW, AMBER GaAs LED 1.5V, 2.8V, 5V, DD5, DD6, EF, FF, PAE, PAF
DIODE1608 LED2
Cap Semi
Capacitor (Semiconductor SIM CC1, CC2, CC3, CC4, CC5, CC6, CC7, CC8, CD1, CD2, CD3, CD4,
Model)
CP1, CP2, CP3, CP4, CP5
CAPC1608
L
Cap Semi
Quantity Source
9 Digikey
17 Digikey
1 Amp General Purpose
Diode 1N4002 Rectifier
DP1, DP2
DIO10.46- Diode
5.3x2.8
1N4002
Header 10X2
Header, 10-Pin, Dual row
PC1, PD3
HDR2X10
Header
10X2
Samtec
2 samples
Header 2x23
Header 2x23
PD1, PD2
HDR2X23
Header
2x23
Samtec
2 samples
MOSFET-N
N-Channel MOSFET
QD1, QD2, QD3
SOT95P24 MOSFET0-3N
N
Resistor
RC1, RC2, RC3, RC4, RCF, RCS, RD1, RD2, RD3, RD4, RD5, RD6,
RD7, RD8, RD9, RD10, RP1, RP2, RP3, RP4, RP5
RESC1608
L
Res3
TCM8230MD_ VGA CAMERA MODULE
1
640x480
UC1
TCM8230M TCM8230
D
MD_1
1 Sparkfun
SN74LVC1404 Oscillator driver.
UC2
SN74LVC1 SN74LVC
404
1404
TI
1 samples
SN74LVCH16T 16-bit bus transceiver with
245
voltage regulation.
UD1
SN74LVCH SN74LVC
16T245
H16T245
TI
1 samples
IDT72V241L10
PF
36K (4K x 9) FIFO Buffer
UD2
IDT72V241 IDT72V24
L10PF
1L10PF
1 Digikey
XBee
XBee wireless
transmitter/reveiver
UD3
XBee
XBee
1 Sparkfun
TLV1117
Linear Regulator
UP1, UP2
TLV1117DCY
TLV1117
TI
2 samples
XTAL
Crystal Oscillator
YC1
BCYW2/D3.1
XTAL
1 Digikey
Res3
2 Digikey
3 Digikey
21 Digikey
CURRENT STATUS

Daughterboard
NEXT STEPS

 Daughterboard populated
 Schematic and layout
and tested working
 Revision of daughterboard
underway
 MSP430 host controller
board populated
 Testing underway
finished
 Board on order from
Advanced Circuits

Beagle Bone
 2 development boards on-
hand

MSP430
 Not yet started
Milestone 1:

Milestone 2:
 Integrate battery power
 Final revisions of boards
done
 TCM8230MD CMOS Camera
 Ideal for a wearable device
 640 x 480 Pixel Resolution (VGA)
 30 FPS
 Externally clocked by 24.5MHz
clock
 Data Output: RGB 5:6:5
 Camera Control: I2C
▪ 0-2.8V
▪ SCL Max Frequency 400kHz

Signal Integrity
CURRENT STATUS



Learned Stellaris
development board
architecture
Interfacing camera to
Stellaris development
board through I2C
Learning about Beagle
Bone architecture
NEXT STEP




MSP430 board design
and layout
Interfacing the camera to
the Beagle Bone
Test camera to Beagle
Bone interface
Getting LCD screen
functional
5V
3.3V
LiFePO4
Battery
6.6V
Power Supply
(4 Buck
Converters)
2.8V
1.5V
Processing
Module
6.6V
6.6V
LiFePO4
Battery
6.6V
TPS6214x
TPS6214x
TPS6214x
5V
3.3V
Beagle
Bone
XBee
2.8V
Camera
6.6V
TPS6214x
1.5V

LiFePO4
 6.6V and 2.3Ah

4 Buck Converters
 Texas Instruments
TPS6214x
 4 Voltage Rails
▪ 5V
▪ 3.3V
▪ 2.8V
▪ 1.5V

XBEE
 Series 1 (802.15.4)

Purpose
 Relay cursor commands
from Beagle Bone to
MSP430 Host Controller
 Send algorithm
parameters from
MSP430 Host Controller
to Beagle Bone
CURRENT STATUS


Wireless and MSP430
 Working with MSP430
development board
 Integrating an FTDI
breakout board from
Sparkfun with the
development board
Power
 Power design finished
and components on
order
NEXT STEPS


Wireless and MSP430
 Test USB interfacing
with MSP430
 Integrate XBEE with
development board
Power
 Test proof of concept
for power design
 Design PCB for power

Software
 Get code to compile on Beagle Bone
 Be able to dump data via Ethernet from the Stellaris to
the host computer
 Port Matlab to C

Hardware
 Get XBEE wireless running
 Get pictures off the camera placed into the correct
memory
 PCBs populated and tested
 Have Beagle Bone up and running with as many
drivers as possible
 Integration between XBEE and computer

Software
 Have Beagle Bone generating cursor
commands
 Optimization of code

Hardware
 Camera operational
 Have necessary Beagle Bone drivers
operational
 Have wireless operational
 Possibly have a battery recharging circuit




Duck Hunt
Integration of full system
Documentation
User manual
Section
Component
Quantity
Cost (each)
Cost to Team
Extended cost
Source
Wireless
XBee
2
11.75
11.75
23.5 Sparkfun.com
USB XBee Explorer
1
24.95
24.95
24.95 Sparkfun.com
XBee Breakout Board
2
2.95
2.95
5.9 Sparkfun.com
Processing
0
Beagle Bone Evaluation Board
2
89
Mechanical
0
0 Capstone
0
Lens-less Glasses
1
5.99
Camera
5.99
5.99
0
640x480 CMOS Camera
5
Test Cameras
3 Donated
FTDI to USB
1
9.99
9.95
49.75 Sparkfun.com
0 Capstone
10
Manufacturing
10
10 Sparkfun.com
0
PCB Fabrications (2 at 4 layer)
3
66
66
198 4pcb.com (Advanced Circuits)
PCB Fabrications (2 at 4 layer, 2
image)
3
112
112
336 4pcb.com (Advanced Circuits)
9.95
1
2
25
40
2
Poster
1
55
55
Shipping, miscellanous parts
1
200
200
Components
LCD Screen
Hardware Buffer
Daughterboard components
0 Adafruit.com
25
50 Digikey.com
0 Digikey.com
Presentation
55 ITLL
Misc.
Total Cost
200
959.09
Tasks
Armeen
Taeb
Nick
Bertrand
Computer
Applications
S
P
Lighting
P
S
DSP
P
S
Code Optimization
S
P
Arielle
Blum
Mike
Mozingo
Khashi
Xiong
Camera Module
P
Wireless
Communication
S
P
Physical Setup
S
P
Firmware/Drivers
P
S
S
Power
S
P
PCB Layout
P
S
Mascot/Cheerleader
Bruce
Chen
P,S,T
Download