|
16-264 Humanoids |
|
Dancing RS Media |

|
Assignment 1 ¨C Dance Competition
|
|
Assignment Description This assignment requires a creation of a dance contest entry using the Robosapien Media RS. An original choreography was integrated into the Java-powered WowWee RS media robot. Although the RS media robot demonstrated some degree of physical constraints, the robot¡¯s movement capability was utilized to the fullest to produce a creative and entertaining dance routine.
Initial Considerations Ballroom dancing, Dance battle, Incorporation of Martial Arts movements, Hip Pop, Cultural
Project Description Most of the initial work consisted of analyzing the joints and the degrees of freedom of the RS Media robot. The analysis was done through test running the robot and watching various videos of RS Media on both the company website and YouTube. Many personal videos posted by the robot users served as a valuable resource in knowing what can be done and what may be potential difficulties.
We have selected a hip pop style music that is moderately up beat and fast but still accommodating for the movement capability of the RS Media. Due to the lack of flexible joints and degrees of freedom, the ¡°entertainment factor¡± was a concern. To overcome a potential dullness of one robot, two robots were chosen to perform together to perform in unison, act in a mirror image, and other special effects.
The lag time between the commands and the physical execution of the movements sometimes posed a threat to the desired coordination between the two robots, but the problem was resolved by changing the variable for the position in the code. Obtaining the desired coordination and performance of the robots required numerous corrections to the program and countless test and run efforts.
The robots did not use special APIs. Many of the preprogrammed APIs were not suitable for the chosen music. A minor issue, but a hindrance to our progress, was the batteries. The battery capacity ran out rapidly and in many cases caused the robot to slow down and lag. We were more inclined to use the power cord, and therefore focused more on the upper body of the robot. Furthermore, because of the lag time, we decided to play the music from one robot only. A physical lag between two robots did not cause a significant decrease on the performance, but the unsynchronized music proved to be very undesirable.
|
|
Junko Kanero Carnegie Mellon University Cognitive Science Jkanero@andrew.cmu.edu
Seongmin Yang Carnegie Mellon University Mechanical Engineering seongmin@andrew.cmu.edu
Materials Used 2 RS Media robots 12 ¡°D¡± batteries 14 ¡°AA¡± batters Netbeans IDE5.5.1
Music: Hip Pop Remix Provided by Raymond Ejiofor
Assignment Progression 1. Studied movement capabilities 2. Researched YouTube videos 3. Selected music 4. Choreography 5. Java programming 6. Test runs 7. Corrections made 8. Final Choreography filmed |



|
Check out our robots in action! http://www.youtube.com/user/5SouthRA |
|
18 Feb 08: Assignment 2 ¨C Learning |
|
The second assignment explores the concept of machine learning. The assignment asks to give the RS Media a specific task and allow it to engage in a learning process that achieves an optimal result. In this exercise, our RS Media was given the task of stabbing a piece of brownie with a fork. The robot held the fork with its left hand, and attempted to stab the brownie. This task required a coordination between the left shoulder and left arm and the waist.
The ¡°learning¡± happened through a feedback system. An algorithm to adjust its movement by increments was coded, receiving its feedback from the touch senor on its left and right foot. The front touch sensors controlled the incremental changes in the waist and the back touch sensors controlled the incremental changes in the arm. The feedback was continuously given until the desired motion was achieved.
The following is a copy of the algorithm for the feedback system.
|
|
private void move1() { int waist = 25; int arm = 1; // Initialize torso position. humanoid.WAIST_LR_SERVO.moveToPosition(16, 5);
while (true) { // Initial Position. humanoid.ARM_LEFT_SERVO.moveToPosition(0,10); humanoid.SHOULDER_LEFT_SERVO.moveToPosition(1,8); humanoid.waitUntilStop(); try { Thread.sleep(2000); } catch (InterruptedException ex) { }
if (humanoid.TOUCH_LEFT_FOOT_FRONT.isTriggered()) {
// If there is some feedback move the torso. waist = waist + 3; } else if (humanoid.TOUCH_RIGHT_FOOT_FRONT.isTriggered()) { // If there is some feedback move the torso. waist = waist - 3; } else if (humanoid.TOUCH_LEFT_FOOT_BACK.isTriggered()) { // If there is some feedback move the torso. arm = arm + 1; } else if (humanoid.TOUCH_LEFT_FOOT_BACK.isTriggered()) { // If there is some feedback move the torso. arm = arm - 1; } else { // No feedback, task complete. //break; }
if (waist>=31) waist = 0; if (waist<0) waist=31; if (arm>3) arm = 0; if (arm<0) arm = 3;
humanoid.waitUntilStop(); try { Thread.sleep(2000); } catch (InterruptedException ex) { }
humanoid.WAIST_LR_SERVO.moveToPosition(waist, 8); humanoid.waitUntilStop(); humanoid.SHOULDER_LEFT_SERVO.moveToPosition(15,8); humanoid.ARM_LEFT_SERVO.moveToPosition(arm ,8); humanoid.waitUntilStop(); try { Thread.sleep(2000); } catch (InterruptedException ex) { } } }
|
|
The video of the RS Media learning process can found in the following YouTube page. |
|
Initial Considerations 1. Throwing - Even after using varying sizes and the API ¡°throw,¡± it was very difficult to obtain a clear trajectory 2. Bowling - Tested with the API ¡°roll¡± yet it was also very difficult to achieve a steady result. 3. Golf - It requires many more joints to fully demonstrate a golfing movement. The robot will have to follow a very simple motion to hit the ball. The overall idea seemed very dull. |
|
A variable between 0 and 3 was assigned to the arm for its physical orientation. The waist accepts the values between 0 and 32, but our robot did not register the value 32. Overall, the execution of the commands went smoothly. In few instances there were some errors in the execution of the command and required multiple trials. We also ran into few problems with the touch sensors not responding during the execution. |