Wiimotes and Robots David Lippman Pierce College Ft
Wiimotes and Robots David Lippman Pierce College Ft Steilacoom
“Real World” n n n What do we mean by this? Capturing data for analysis is cool, but Can we solve a problem, and see it in action?
Wiimotes Can connect over Bluetooth to computer n 3 -axis accelerometer n Infrared camera with blob detection (4 pts) n
Interacting with the Wiimote n Low Level ¨ Wiiuse / Wiiuse. J (C / Java) ¨ Wiimotelib (C#) n High Level ¨ Glove. PIE
Problem #1 Prereq: Algebra Problem: Wiimote returns dot values in the range x: 0 -1023, y: 0 -767 Glove. PIE maps mouse position to a 0 -1 scale in the x and y How do we map Wiimote position to a mouse position?
Prob #1 Soln n Wiimote pointing left puts dots on the right, so need to invert x. Don’t need to invert y since Mouse. y measures down from the top of the screen Mouse. x = 1 - wiimote. dot 1 x/1023 n Mouse. y = wiimote. dot 1 y/767 n
Problem #2 Prereq: Trig Problem: Wiimote returns dot values in the range x: 0 -1023, y: 0 -767, roll Glove. PIE maps mouse position to a 0 -1 scale in the x and y How do we map Wiimote position to a mouse position, compensating for roll?
Prob #2 Soln Angle = asin(Wiimote. gx/1) or use atan 2 n Angle is off horiz n Find xcamera, ycamera n Convert to polar n Adjust for roll angle n Convert back to Cartesian, map to mouse n
Problem #3 Prereq: Algebra Problem: How do we determine 3 D position of Wiimote in space? (using triangles) (Assume no roll for simplicity)
Prob #3 Soln Calculate distance between dots Distance from camera = 264/dot dist Dist at 1 m = 0. 1 mreal / 132 pxcamera X position: 4 m 200 px = 200*0. 1/132 = 0. 1515 m 1 m
Problem #4 Prereq: Trig Problem: How do we determine 3 D position of Wiimote in space? (using trig) (Assume no roll for simplicity) Could we have done this with 2 Wiimotes and one dot?
Prob #4 Soln n n Camera FOV = about 45 degrees Pixels/degree = 1024/45 = 22. 8 4 m 1 m 200 px → 8. 8 deg
How different? actual x Dist (m) Distance determination: X-location determination: Pixel x Dot separation (pixels) Relative difference
Johnny Lee's Youtube Video
Problem #5 Prereq: Linear Algebra Problem: Mark 4 points on a projected plane (projector image) that correspond to 4 points of a unit square (screen coordinates). Find the transformation that maps points on the projected plane to the unit square. v y u x
Prob #5 Soln Homogenous Coordinates: v y u x
Using 4 corner points, this gives: Reduces further using unit square for (u, v) Solve using Gaussian Elimination. To map back to (u, v), find inverse of the mapping matrix.
Problem #6 Prereq: Integral Calculus / Diff. Eq n Problem: Use the accelerometer readings to estimate distance the Wiimote moves. n
Prob #6 Soln Simplistic approach: s 0 = 0, v 0 = 0. Step: Δt =. 05 sec Loop: vn = vn-1 +. 05 a sn = sn-1 +. 05 vn However, accelerometers are very noisy, so this is not very accurate. In fact, it’s so horrible I’m not even going to show it!
Arduino Computer on a chip n 14 digital I/O, w/ 6 pseudo analog out n 6 analog inputs n 16 KB storage n 1 KB RAM n Serial over USB n Open hardware n Open software
Problem #7 Prereq: Algebra Problem: Create a car backup alarm using distance sensor and LED light. Distance sensor can detect time (in microseconds) that a sound takes to echo back.
Prob #7 Soln dist = rate*time rate = experimentally determined, or speed of sound converted to appropriate units blink delay proportional to distance Does direct proportionality look good? Should it be quadratic? Logarithmic?
Problem #8 Prereq: Algebra Problem: Map Nunchuck joystick data (values -105 to 105) to PWM values (500 to 2500) for the Servos
Prob #8 Soln Joystick Servo -105 2500 -105 500
Problem #9 Prereq: Trig Problem: Use the Pan/Tilt laser pointer to draw a circle
Prob #9 Soln Use parametric equations: t=0 Loop: x = cos(t) y = sin(t) map (x, y) to Servos t = t +. 1 delay(20)
Problem #10 Prereq: Pre-algebra Problem: In a robot with differential drive, each wheel can turn at a different rate. If the wheels are 10 cm apart and the outside wheel turns at full speed, at what fraction of full speed will the inside wheel need to turn to drive a circle with inner radius 50 cm?
Prob #10 Soln Cinside = 2π(50) cm Coutside = 2π(50+10) cm Speedinside = (2π(50) cm)/unit time 10 cm 50 cm Speedoutside = (2π(50+10) cm)/unit time Ratio of speeds = 50 / (50 + 10) = 5/6
Problem #11 Prereq: Trig Problem: Ballistics trajectories. Experimentally determine initial velocity, then adjust launch angle to hit a target. Have a class competition to see who can come closest!
Prob #11 Soln
Advanced ideas Kalman filters n Gesture recognition (hidden Markov model) n Augmented Reality n
Playtime Wii Quizzer n Wii Buzzer n
Correlation doesn't imply causation, but it does waggle its eyebrows suggestively and gesture furtively while mouthing 'look over there'.
- Slides: 39