8
First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Embed Size (px)

Citation preview

Page 1: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

First Person POV RC Car

Using WiFi-Direct P2P video streaming and BluetoothBy Shane Langhans

Page 2: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans
Page 3: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Control Unit

• Supplies GUI to user• 4-Tasks:

1. Read changes to Sensor.TYPE_GYROSCOPE2. Scale/map/confine them to byte commands• -90 < Throttle < 90• -90 < Steering Angle < 90

3. Send them to Mobile Unit via WiFi Direct4. Display incoming Camera Preview frames from

Mobile Unit

Page 4: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Control Unit continued• Rotation Data is gathered using Sensor.TYPE_GYROSCOPE and integrated to track the

current angles of rotation around the X and Y axes.• Rotating around Y controls Throttle, while rotating around Z controls Steering angle.• The sensor data is then scaled and mapped to one byte for each the Throttle level and

Steering angle then confined to the limits shown below before being sent out via WiFi Direct to the Mobile Unit.

-90<Throttle<90

-90<Steering<90

Page 5: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Mobile Unit

• Strapped to RC car• 3 tasks:

1. Continuously stream Camera Preview frames out to Control Unit via WiFi Direct

2. Receive Throttle and Steering commands (1 byte each) from Control Unit via WiFi Direct

3. Relay those 2 bytes to the Arduino via Bluetooth Thread

Page 6: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Arduino

• 2 Tasks:– Receive Throttle and Steering commands from

Mobile Unit via Bluetooth– Implement them as PWM signals to the Motor ESC

and the Steering Servo on RC Car• Arduino’s servo library gives 20ms period pulses with a

1-2ms pulse width. This will work to control both the ESC and the steering servo.

Page 7: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

New Challenges

• Working with gyroscope data– Done. Surprisingly simple

• WiFi Direct– Establishing communication socket– Tx/Rx data (camera frames and control

commands)• Securely Fastening the Mobile Unit– Stable camera– It’s my phone and I don’t want the screen to crack

Page 8: First Person POV RC Car Using WiFi-Direct P2P video streaming and Bluetooth By Shane Langhans

Previous Experience to Utilize

• Me:– Bluetooth communication socket between Android

and Arduino– Arduino PWM controls– Camera Preview (hw #2)

• Others:– Found similar projects, but their results were

disappointing• ie, poor control interface led to poor driving performance