+ All Categories
Home > Documents > Multi-Touch Navigation Engine

Multi-Touch Navigation Engine

Date post: 31-Dec-2015
Category:
Upload: beck-weiss
View: 62 times
Download: 0 times
Share this document with a friend
Description:
Multi-Touch Navigation Engine. Presented by Team Extra Touch: Chris Jones Shuopeng Yuan Nathan Wiedeback. Multi-Touch Navigation Engine. Background System Design Accomplishments. Background. AIS offers single-touch Multi-touch is the “cool new thing” iPhone , MacBook MS Surface - PowerPoint PPT Presentation
32
Multi-Touch Navigation Engine Presented by Team Extra Touch: Chris Jones Shuopeng Yuan Nathan Wiedeback
Transcript
Page 1: Multi-Touch Navigation  Engine

Multi-Touch Navigation Engine

Presented by Team Extra Touch:Chris Jones

Shuopeng YuanNathan Wiedeback

Page 2: Multi-Touch Navigation  Engine

Multi-Touch Navigation Engine

• Background• System Design• Accomplishments

2

Page 3: Multi-Touch Navigation  Engine

Background• AIS offers single-touch• Multi-touch is the “cool

new thing”– iPhone, MacBook– MS Surface

• Mitch Butzer had good ideas…

3

Page 4: Multi-Touch Navigation  Engine

4

Project Specifications

•Microcontroller-based•Written in C•2 - 6 independent control channels• Defined at compile time

•Recognize defined patterns• e.g., finger but not palm

Page 5: Multi-Touch Navigation  Engine

5

System Flow

Page 6: Multi-Touch Navigation  Engine

Serial Input

6

Page 7: Multi-Touch Navigation  Engine

Serial Stream Parser•74 byte “packets” from the screen•Processed to get 32 sensor values, etc.

•Subtract the lowest value from each

7

(Little-endian)

Average: 0x488B = 18,571First sensor: 0x4886 = 18,566

Page 8: Multi-Touch Navigation  Engine

Interpolator

8

Page 9: Multi-Touch Navigation  Engine

Interpolator

•Red dots: intersections of sensors (16 x 16)•Green dot `P`: interpolated point

•Set a threshold and discretize at the end•Each pixel -> 1 or 0

9Image source: Wikipedia

Page 10: Multi-Touch Navigation  Engine

Phantom Filter

10

Page 11: Multi-Touch Navigation  Engine

Phantom Filter

11

One touch Two touches Phantom touches (unfiltered)

•Intersections -> phantom touches

•Compare touches to last frame for filtering

Page 12: Multi-Touch Navigation  Engine

Pattern Recognizer

12

Page 13: Multi-Touch Navigation  Engine

Pattern Recognizer: Flowchart

13

Data In : Frame of Data

Resolution: 240 * 180

Page 14: Multi-Touch Navigation  Engine

Blob Classification and Checking Engine

14

Input Example: Resolution 60*20

Page 15: Multi-Touch Navigation  Engine

Blob edge finding algorithm

0 0 0 0 0 1 0 0 00 0 0 0 1 1 0 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 0 1 1 0 00 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0

0 0 0 0 0 1 0 0 00 0 0 0 1 1 0 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 0 1 1 0 00 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0

0 0 0 0 0 1 0 0 00 0 0 0 1 1 0 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 0 0 1 1 0 00 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0

First edge Last edge

Page 16: Multi-Touch Navigation  Engine

16

Blob Classification and Checking EngineInput Example: Resolution 60*20 -- two blobs found

Page 17: Multi-Touch Navigation  Engine

Voronoi Skeleton Algorithm

17

Ideal case Actual case

Page 18: Multi-Touch Navigation  Engine

18

Voronoi Skeleton with Test Data

Page 19: Multi-Touch Navigation  Engine

Slope Algorithm

Linear skeleton should have the same angle at each point.(a1 = a2 = a3 = a4)

19Linear -> accept and find center Nonlinear -> reject

Page 20: Multi-Touch Navigation  Engine

Channel Assignment

20

Page 21: Multi-Touch Navigation  Engine

21

Channel Frames – Overall Look

1 1 1 0 0 0 3 3 3

1 1 1 0 0 0 3 3 3

1 1 1 0 0 0 3 3 3

0 0 0 0 0 0 3 3 3

2 2 2 2 2 0 3 3 3

2 2 2 2 2 0 3 3 3

2 2 2 2 2 0 3 3 3

2 2 2 2 2 0 3 3 3

2 2 2 2 2 0 3 3 3

2 2 2 2 2 0 3 3 3

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

1 1 1 1 0 2 2 2 2

Current Form Potential Form

Page 22: Multi-Touch Navigation  Engine

22

Current Setup Channel Frames

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

1 1 1 1 0 0 0 0 0

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

0 0 0 0 0 2 2 2 2

Channel 1 Frame Channel 2 Frame

Page 23: Multi-Touch Navigation  Engine

Channel Assignment – How it Works

0 0 0 0 0

0 0 1 1 0

1 1 0 1 0

1 1 0 0 0

1 1 0 0 0

Channel 1 Frame0 0 1 1 1

0 0 0 0 1

0 0 0 0 1

0 0 1 1 1

0 0 1 1 1

Channel 2 Frame

Channel 3 Frame1 1 0 0 0

1 1 0 0 0

0 0 1 0 0

0 0 0 0 0

0 0 0 0 0

Output to One Touch per Channel Limiter: Coordinates 3,3 Channel 3

Input: Coordinate Data (3,3) touched

We have a match at Channel 3!

23

Page 24: Multi-Touch Navigation  Engine

24

One Touch per Channel Limiting54 132 1 11

1 2 3 4 5

Channel A – 3 touches5

4 1

3 12 1 1

1

1 2 3 4 5

Channel A -Phase 1 Reduction

Channel A - Phase 2 Reduction5

4 13

2 1 1 1

1

1 2 3 4 5

Page 25: Multi-Touch Navigation  Engine

25

Output Data

X0

Y0

X1

Y1

X2

Y2

X3

Y3

C0

C1

C2

C3

Altered Coordinate Array

Channel Array

Page 26: Multi-Touch Navigation  Engine

Accomplishments

• Translate sensor wires into 16x16 matrix• Interpolate• Recognize finger touches, reject other shapes• Assign to either of two channels

26

Page 27: Multi-Touch Navigation  Engine

Challenges

Challenge• Phantom touches• “[40K] ought to be enough

for anybody!”• Need “tap points” for

intermediate data

Solution• Compare to previous frame• Low resolution (240 x 180 ?)

for proof-of-concept• Make each stage’s data

available at the output

27

Page 28: Multi-Touch Navigation  Engine

Future

• Serial interrupt issues• Phantom filtering implementation

– Would also enable more shapes• Different touchscreen technology?

28

Page 29: Multi-Touch Navigation  Engine

Questions?

Page 30: Multi-Touch Navigation  Engine

Channel Assignment – Text OverviewData In: Center coordinates (X,Y)

Processing:Data gets transformed into a 2d array, and the compared against each channel frame to determine its channel. Channel frames are defined before compile.

Data Out:(X,Y) coordinates with channel data attached.

Details:Aiming for 2 channels initiallyShould be simple to add channels in the final iteration.

Page 31: Multi-Touch Navigation  Engine

Channel Assignment: Flow Chart

31

Page 32: Multi-Touch Navigation  Engine

Summary• Major design: “Proof-of-concept”

– 240 x 180 x 1-bit “color”– Simple phantom filtering– Accept a single finger per channel, reject other cases– Two channels

32


Recommended