website; edwin; pseudOS; pendulum; desktop_companion; wall-e; underwater_vision; jimmy; genetic_car;> ./intro download source code > ./stats Status: Completed May/2015 Languages: Python, C++, Arduino C Software: OpenCV, NiTE Hardware: MX-64/MX-106 servos, Microsoft LifeCam, Kinect, Jimmy frame Documentation: Complete > ./documentation
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. 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. 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! 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. Ah, but enough sentimentality, what does Jimmy actually do? Over the course of the semester, we completed several new functions. (I'm so sorry for vertical video, I was an totally oblivious freshman.) New gesture set for use in interaction sequences: Face tracking: Idle motion: 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.