usb virtual reality hid -...

42
USB Virtual Reality HID by Weston Taylor and Chris Budzynski Advisor: Dr. Malinowski

Upload: hoangquynh

Post on 15-Apr-2018

245 views

Category:

Documents


5 download

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SW Flowcharts

• USB Board