DGMD S-17:
Hand Signal Detection
Project Overview
Project Objective
3
Team Members & Roles
4
Project Goals
5
Develop a recognition system for static gestures: stop, turn right, and turn left
6
1.
Guide robot movement based on the recognized static hand gesture
7
2.
Develop a recognition system for streaming gestures: move forward and move backward + guide movement based on streaming gestures
8
3.
Stretch: Test the final module on all 3 robot models
9
4.
Our Process
10
Phase II - Design & Development
Creating the algorithm needed to achieve goals
2
Phase I - Initial Setup
Setting up the required hardware and software
1
Phase III - Integration
Putting it all together + live demo
3
Phase I:
Initial Setup
Hardware Setup
WAVE = move forward
12
We have 3 different robot models:
Waveshare Jetbot (x2)
Yahboom Jetbot
Sparkfun Jetbot
Hardware: Setbacks/Challenges
13
Software Setup
14
Software: Setbacks/Challenges
15
Determining Hand Gestures
WAVE = move forward
16
The robot was trained to recognize and respond to the following hand gestures...
WAVE = move forward // BOTH ARMS MOVING BACK = move backward
17
LEFT ARM STRAIGHT OUT = turn left // RIGHT ARM STRAIGHT OUT = turn right
18
BOTH ARMS STRAIGHT OUT = stop
19
Phase II:
Design & Development
1. Use a hash table to track the existence of left/right wrist, elbow, shoulder, and neck joints on each frame.
21
Algorithm Design
2. Use Queue to store all the relative joints information for continuous pose tracking.
22
Algorithm Design
3. Check the relative wrist position from neck
23
Left Wrist = [Horizontal, Left]
Right Wrist = [Down, Left]
Left Wrist = [Down, Left]
Right Wrist = [Down, Right]
X = Left
Right
Y = Up
Down
Horizontal
Algorithm Design
4. Convert joints X, Y coordinates to vectors, and calculate the angles of 2D vectors.
24
elbow_to_wrist_vector = (wrist.x - neck.x, wrist.y - neck.y)
elbow_to_shoulder_vector = (shoulder.x - neck.x, shoulder.y - neck.y)
Algorithm Design
5. Analyze the human pose information and detect the gestures every two seconds.
25
Algorithm Design
6. Depending on the gesture detected, operate the robot forward, backward, left, or right.
26
Inputs = [Wrists Up,
Angles between 40 ~ 120 degrees for 8 frames]
Robot Move Forward
Algorithm Design
27
Track wrist/elbow/ shoulder/ neck joints per frame
Store joint info. for cont. pose tracking
Check relative wrist position from neck
Convert (x, y) to vectors & calculate angles
Analyze info. & detect gestures every 2 sec
Operate robot forward/ backward/left/right
Algorithm: Summary
Phase III:
Integration
Learn More:
Our Project Github Repository
https://code.harvard.edu/loc630/DGMD-S-17-Project-Autonomous-Car-and-Hand-Signal-Recognition
29
Video:
Live Demo
31
Final Thoughts
Conclusion
33
Goals Achieved
34
Develop a recognition system for static hand gestures: stop, turn right, and turn left | |
Guide robot movement based on the recognized static hand gesture | |
Develop a recognition system for streaming hand gestures: move forward and backward + guide movement | |
Test the final module on all 3 robot models | |
Limitations
35
Future Areas of Improvement/Exploration
36
Thanks!
Any questions?
You can find us at:
37