usb virtual reality hid -...
TRANSCRIPT
![Page 1: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/1.jpg)
USB Virtual Reality HID
by
Weston Taylor and Chris Budzynski
Advisor: Dr. Malinowski
![Page 2: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/2.jpg)
• Project Summary• Analysis• Block Diagram• Hardware• Inertial Sensors• Position Calculation• USB• Results• Questions
===Agenda
![Page 3: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/3.jpg)
Project Summary
• Purpose: To create a USB HID that translates user movements into on-screen actions to provide a realistic interactive platform for PC games and other virtual environments.
• Why?: To show that low-cost MEMS inertial sensors capable of providing accurate position data for a complex interactive experience.
![Page 4: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/4.jpg)
Previous Work
• MetaMersion Immersive Gaming System
![Page 5: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/5.jpg)
Goals
• List of project goals:
– Translate sensor readings into a 3-D position
– Send 3-D position to PC using USB (gamepad)
– Use low-cost 8-bit embedded systems
– Embedded programming = C language
– Wireless communication between subsystems
![Page 6: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/6.jpg)
Analysis
• Stationary INS (Inertial Navigation System)
– No Linear Movement
– Only Angular Movement (Pitch, Yaw)
– Gyroscopes measure angular velocity
![Page 7: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/7.jpg)
Analysis
• Gyroscopes
– Measure °/sec
– 1 integration to get position (absolute angle)
• Frames of Reference
– Mathematical Transformations (Trig Functions)
– Yaw Dependent on Pitch
• Cosine Lookup Table
![Page 8: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/8.jpg)
System Specs
• System Requirements
– Hardware
• 300-400 °/second do not want saturation
• Temperature Range 0°C to 40°C
– Software
• Position calculation every 10ms– Human Reaction Time (100ms)
– Monitor Refresh Rate = 60 Hz (16.7ms)
![Page 9: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/9.jpg)
Hardware
• System Diagram
Handheld Device
Human
Movement
Analog DataAnalog Data
Analog DataI2C Data
Serial Data
USB Device
Analog DataSerial Data
Wireless
ZigBee
(Send Position)
Personal
Computer
USB
Communication
(Send Position)
C8051F120
5DOF
Compass
ZigBee
ZigBee
PIC18F14K50
![Page 10: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/10.jpg)
Software
• HL Software Flowchart HID Software (Handheld Device)
Send
Position
To USB
Board
Human
Movement
Sensor Data
Collect Sensor
and Switch
Data
USB Board Software (PIC18F)
Receive
Position
Host
Personal
Computer
Translate
Position to
USB Protocol
Take Derivative
for Direct Input
Monitor/
Headset
Put Data in
USB Buffers
USB ISR (Slave):
Wait for
‘Send’
Request
Wait
Re
ce
ive
d
Send USB
Data
Calculate
Pitch
Calculate
Yaw
![Page 11: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/11.jpg)
Hardware
• IMU 5 DOF
– 2-axis gyroscope = 500 °/sec
– 2-axis accelerometer = ±3g
– Analog Outputs
• Electronic Compass
– HMC6352
– I2C Interface
![Page 12: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/12.jpg)
Hardware
• Inertial Board - Silicon Labs C8051F120
– 8-bit processor 98MHz
– 12-bit A/D
![Page 13: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/13.jpg)
Hardware
• Wireless ZigBee - XBee 1mW Chip Antenna – UART to ZigBee Conversion
– 2.4 GHz
– Range = 300ft
– Baud = 9600 bits/sec
– Transparent Mode
• Problem– Interference with analog
![Page 14: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/14.jpg)
Hardware
• USB Board – Microchip LPC USB Dev. Kit• PIC18F14K50 8-bit, 48MHz
![Page 15: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/15.jpg)
Parts List
• Parts List Table:
Equipment Part Description Quantity ≈ Cost SupplierPersonal Computer With USB and Half-Life 2 1 $0.00 Personal Laptop
USB Board Microchip LPC USB Dev. Kit 1 $60.00 www.microchip.comMain Board SiLabs C8051F120 Dev. Kit 1 $99.00 In LabGyro + Accelerometer IMU 5 Degrees of Freedom SEN-00741 1 $100.00 www.sparkfun.com
Electronic CompassCompass Module - HMC6352 SEN-07915 1 $60.00 www.sparkfun.com
Level Converter Logic Level Converter BOB-08745 1 $2.00 www.sparkfun.comWireless / ZigBee XBee 1mW Chip Antenna WRL-08664 2 $25.00 www.sparkfun.com
Total Price: $346.00
![Page 16: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/16.jpg)
Schematic
• Inertial Board Schematic
![Page 17: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/17.jpg)
Schematic
• USB Board Schematic
![Page 18: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/18.jpg)
Inertial Sensors
• Inertial Sensor Inherent Problems
– High Frequency Noise
– Scale Factor Variations
– Offset causes Drift (significant)
![Page 19: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/19.jpg)
Noise
• Problem High Frequency Noise
• Solution LPF
– Gyroscopes 80Hz
– Accelerometers 500Hz
![Page 20: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/20.jpg)
Scale Factors
• Problem Scale Factor Variations
– Datasheet = not exact
– + and – directions different
– Accumulated error = drift
• Solution Feedback
![Page 21: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/21.jpg)
Offset
• Problem Offset, zero-rate voltage– Causes drift from integration
• Solution – Calibration routine = 1024 sample average
– Adaptive zero-rate voltage
– Window filter
– Feedback
![Page 22: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/22.jpg)
Sensor Data
• HyperTerminal (.txt) MATLAB
• Raw A/D Data
0 1 2 3 4 5 6 7 8 9 101950
1951
1952
1953
1954
1955
1956
1957
1958
Time (s)
A/D
ste
ps
Raw Data
![Page 23: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/23.jpg)
Sensor Data
• Data after calibration and adaptive zero-rate
0 1 2 3 4 5 6 7 8 9 10
-3
-2
-1
0
1
2
3
Time (s)
A/D
ste
ps
After Moving Average
![Page 24: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/24.jpg)
Sensor Data
• Data after window filter no drift at rest
– 2 A/D steps = ±1.6mV ±0.8°/sec
0 1 2 3 4 5 6 7 8 9 10
-3
-2
-1
0
1
2
3
Time (s)
A/D
ste
ps
After Window Filter
![Page 25: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/25.jpg)
Position
– Basics• Gyroscopes measure °/sec
• A/D reads steps
• Find conversion factor (°/sec)/step
• Want an absolute angle in degrees (°)
– Calculation• / Position = ∫ [A/D steps] [(°/sec)/step] dt
• / Position = ∫ [°/sec] dt
• / Position = #°
![Page 26: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/26.jpg)
Position
• Software – Conversion Factors / Constants
– Conversion from A/D Value to °/s:
– Summation As Approximation of Integration
– ∆T = 1/200Hz = 0.005 so Position Approx. is:• Angular Position = Previous Position + (Current ADC/496)
![Page 27: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/27.jpg)
Code
• Integration Summation
– Backward Rectangular Rule
kT-T kT
![Page 28: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/28.jpg)
Code
• Window Filter
• Adaptive Zero-Rate Offset
– Only runs inside Window Filter
![Page 29: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/29.jpg)
Feedback
• Integration of error Drift
– Open Loop System
• Feedback
– Pitch Drift Correction (accelerometer)
– Yaw Drift Correction (electronic compass)
![Page 30: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/30.jpg)
USB
• USB Basics
– Master / Slave Polling (choose interval)
– Human Interface Device (HID)
• Mouse + Keyboard or Gamepad
• Flexible Report Descriptor
– Our Report Descriptor
• Rx – Rotation around x-axis Pitch
• Ry – Rotation around y-axis Yaw
• Buttons (6)
![Page 31: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/31.jpg)
USB
• Silicon Labs C8051F340 = USB Dev. Kit
– Mouse and Keyboard Working
– Gamepad Error Code 10
![Page 32: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/32.jpg)
USB
• Microchip LPC USB Dev. Kit
– Gamepad working in one week
![Page 33: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/33.jpg)
USB
• Problems
– Direct Input
• Cannot actually send absolute position
• Absolute # of units / axis Translate to angle
• Needs derivative = send Δ position
– Multiple software layers / interpretations
Embedded
USB Software
Windows
DriverDirect Input Video Game
![Page 34: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/34.jpg)
Results
• MEMS = good / accurate position• Software limitations
– No absolute position– No software feedback
![Page 35: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/35.jpg)
Results
• Future Suggestions– Write own Windows driver
– Patch to game Direct Input
– Step pad / Buttons for spatial movement
![Page 36: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/36.jpg)
Video
![Page 37: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/37.jpg)
References
[1] Silicon Labs, C8051F34x Data Sheet,https://www.silabs.com/products/mcu/usb/Pages/C8051F34x.aspx
[2] Wikipedia, Inertial Navigation System,http://en.wikipedia.org/wiki/Inertial_navigation_system
[3] GeneSys Engineering Department, Inertial Sensors and Systems An Introduction,http://www.genesys-offenburg.de/genesyse.htm
[4] D. Schertz, EE565 Fall 07 Lectures Notes 20 – 24, Bradley University
[5] Device Class Definition for Human Interface Device (HID) Version 1.11http://www.usb.org/developers/hidpage/
[6] HID Usage Tables Version 1.12http://www.usb.org/developers/hidpage/
![Page 38: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/38.jpg)
Questions
![Page 39: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/39.jpg)
Test Platform
• Yaw = 0° – 360° Rotation
• Pitch = 0° – 180° Rotation
![Page 40: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/40.jpg)
SW Flowcharts
• void main(void)
![Page 41: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/41.jpg)
SW Flowcharts
• ADC0 Interrupt
![Page 42: USB Virtual Reality HID - cegt201.bradley.educegt201.bradley.edu/projects/proj2009/usbhid/USB_HID_Final_Pres.pdf · USB Virtual Reality HID by ... USB Board Microchip LPC USB Dev](https://reader031.vdocuments.mx/reader031/viewer/2022021505/5ad33b137f8b9a482c8d5f03/html5/thumbnails/42.jpg)
SW Flowcharts
• USB Board