-
Notifications
You must be signed in to change notification settings - Fork 0
/
jimmy.html
134 lines (111 loc) · 6.24 KB
/
jimmy.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Sophia Li: Jimmy
</title>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel='stylesheet' href='css/stylesheet.css' type="text/css"/>
<script src="js/jquery-1.7.2.min.js"></script>
</head>
<body>
<div class="content">
<div class="container">
<div class="navbar">
<table class="navtable">
<tr>
<td><a href="index.html">Home</a></td>
<td><a href="resume.html">Resume</a></td>
<td><a href="about.html">About</a></td>
<td><a href="contact.html">Contact</a></td>
<td><a href="http://blog.justsophie.com">Blog</a></td>
</tr>
</table>
</div>
</br>
<h1 style="margin-bottom:0;"><a href="portfolio.html">Portfolio</a>.Jimmy</h1>
<table class="navtable2">
<tr>
<td><a href="underwater.html"><</a></td>
<td><div id="list"><font color="#5cd9fd">LIST</font></div></td>
<td><a href="genecar.html">></a></td>
</tr>
</table>
<div class="proj_list">
<a href="website.html">website; </a>
<a href="edwin.html">edwin; </a>
<a href="pseudos.html">pseudOS; </a>
<a href="pendulum.html">pendulum; </a>
<a href="poe.html">desktop_companion; </a>
<a href="walle.html">wall-e; </a>
<a href="underwater.html">underwater_vision; </a>
<a href="jimmy.html">jimmy; </a>
<a href="genecar.html">genetic_car; </a>
</div>
</br>
> ./intro</br>
<img src='img/jimmy/jimmy_large.jpg' height='250px'>
<!-- <img src='img/edwin/head_large.jpg' height='250px'> --></br>
<a href="https://github.com/srli/jimmy">download source code</a></br>
</br>
> ./stats</br>
Status: Completed May/2015</br>
Languages: Python, C++, Arduino C</br>
Software: OpenCV, NiTE</br>
Hardware: MX-64/MX-106 servos, Microsoft LifeCam,</br>
Kinect, Jimmy frame</br>
Documentation: Complete </br>
</br>
> ./documentation</br>
<div class="text_holder">
Jimmy will always hold a special place in my heart because he is the first robot I've ever worked on, and really the whole reason why I'm a roboticist. Perhaps an unrelated side story-- I was a really shy freshman when my roommate invited me to Robolab tea and cookies on a Friday afternoon. I had no idea that I would be interested in robots, but I thought it might be cool visit. I saw the Jimmy chassis sitting in a corner, and immediately decided that he was my most favorite robot. The professor in charge of the lab, Dave Barret, was really encouraging and totally seemed to believe that I'd be a positive impact on the Jimmy project despite the fact that I knew nothing about Ubuntu or Python... or robots. </br></br>
But hey, college was a place to try new things and throw caution to the wind, right? Dave put me on a team with a bunch of upperclassman, and we worked on getting Jimmy moving. I had inherited a lot of code from a previous team that formed Jimmy's code base. This code was all in C++, and was quite complicated because they wrote custom inverse kinematics functions in an attempt to get Jimmy walking around. </br></br>
So, picture this, super shy and unconfident freshman is suddenly handed thousands of lines of C++ code. The rest of her team says "no pressure, take it slow" but she really wants to figure out how to do things so she can help her team. The result of that goal is why I'm probably such a quick learner and a good problem solver. I reverse-engineered the code, and taught myself C++ in the process. The first result of this was a moving Jimmy!</br>
<iframe src="https://www.youtube.com/embed/q1rl2ikcskc?rel=0&controls=1&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</br></br>
In retrospect, getting to this step wasn't super complicated since it was basically an additional for loop that I added to the code. However, given that I didn't know what a for loop was at this point, nor the difference between compiled and interpreted code, it was a big step forward! The moment Jimmy started moving in response to the code that I wrote was the moment I decided that I loved robots.</br></br>
Ah, but enough sentimentality, what does Jimmy actually do?</br>
Over the course of the semester, we completed several new functions. (I'm so sorry for vertical video, I was an totally oblivious freshman.)</br></br>
New gesture set for use in interaction sequences:</br>
<iframe src="https://www.youtube.com/embed/35-a2l4I4r8?rel=0&controls=1&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</br></br>
Face tracking:</br>
<iframe src="https://www.youtube.com/embed/5bf8vTdKokg?rel=0&controls=1&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</br></br>
Idle motion:</br>
<iframe src="https://www.youtube.com/embed/XiL3Hc6J0Cc?rel=0&controls=1&showinfo=0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></br></br>
Unfortunately, though I would have love to work on Jimmy forever, the 3D printed material used for his chassis simply wasn't strong enough to last. Thus, Jimmy had to be officially retired. However! Even though I've now moved on to other projects, Jimmy will still always remain a reminder that anything is possible if given enough passion and attention.
</br>
</br>
</div>
<div class="text">> </div>
<div class="cursor">|</div>
</br>
</br>
</div>
<!-- <div class="footer">© Sophia Li 2016</div> -->
</div>
<script type="text/javascript">
$(".proj_list").hide();
$(document).ready(function(){
setInterval('cursorAnimate()', 800);
setInterval('$(".proj_list").hide()', 10000);
$("#list").hover(function(){
$(".proj_list").show();
},
function(){
$(this).removeClass("hover");
});
});
function cursorAnimate(){
$('.cursor').animate({
opacity: 0
}, 'medium', 'swing').animate({
opacity: 1
}, 'medium', 'swing');
}
</script>
</body>
</html>