RACHATA! – PATRICIA TRONCOSO RIVEIRA – MARGARET MINSKY
CONTEXT AND SIGNIFICANCE
The previous group project does not really impact or inspire my midterm project as we had a rough idea of what we wanted to do before the group project. My Group project was based on a fictitious story, so it does not really correlate. The artifact we made did not really inspire me, but the research did give me an understanding of interaction, an object that interacts with a person and vice versa. Our project came up after learning about servo motors, we thought of the idea for a laugh, but continued to add more and more elements to the idea of a robot dancing. After listening to some bachata music, we decided to make our robot dance to this genre. I do not believe that our project is that unique, it is a robot that dances. The intentions behind the project are my and my partner’s different backgrounds and how some cultural aspects such as bachata connect us. This robot was made as an homage to our cultural connection despite our different ethnicities and also for entertainment.
CONCEPTION AND DESIGN
At the beginning of the midterm project, we were not sure how to make it interactive, we had some ideas, but we had not settled on anything. We knew that we wanted to make our robot have legs, and we settled on using a servo motor. We used four servo motors; two for the feet and two for the thighs. We also made a body for the robot using Arduino Uno and cardboard. We used cardboard because it is a very accessible material and strong enough for what we needed it to do. We glued the thigh servo motors to the cardboard base and for the feet servos, we glued them to the cardboard ‘shoes’, we had made. The wires were then attached to the Arduino that was glued to the body. We realized that we needed to have several GND and 5V, so we added a proto shield on top of the Arduino that would provide us with the necessary components. We had the most problems with balance, for the majority of the project duration, the robot could not stand on its own, and the fact that it was connected to the computer with the cable, worsened its balance. We bought weights and tested out several places to glue them in order to create counterweights, which successfully worked the majority of the time. In order to make it interactive, we ended up adding an LED that would turn on and off every 10 seconds in order to tell the user when it was their turn to dance with the robot.
FABRICATION AND PRODUCTION
The most significant and difficult part of the project was manipulating the servos to work the way we wanted them to work. The code is quite straightforward, but the servos would act differently than we expected. We had to figure out which angle we wanted to turn the servos, and we also had to consider that the thigh servos were glued to the feet servos, so we had to make sure that the positioning did not disrupt the balance. It consisted of playing around with the angle and positioning of the servos.
By the time it was user testing, the robot was not really interactive, as the most it could do was a few stomps and slides. We had been so fixated on making sure the servos we doing what we wanted them to do, that we did not have time to think about the interactivity. Despite that, the reviews were quite positive. People thought that our project was very entertaining and cute, and they also gave us feedback and ideas on making it interactive. In fact, the interactivity factor of our project was suggested y one of the testers. We decided on the LED that would tell the user when to dance.
After user testing, we focused on refining the positioning of the servos and on the LED. Initially, we were able to make the robot dance in one direction, but after asking for help, we made it dance in the desired way. One of the ways we tried to make the robot dance in the other direction, was by creating a separate loop in which we reversed the code, but that resulted in the robot standing on its toes, like ‘tiptoeing’. Once we had made it dance like we wanted it to, we focused on the LED. We stuck a mini breadboard into the proto shield and connected an LED and a resistor, and then connected it to the Arduino.
Here are some photos and videos of the building process:
CONCLUSIONS
The goal for this project was to create a robot that would dance bachata with the user. The project results do align with the definition of interaction because the robot does interact with the user. The part in which the robot does not align with the definition of interaction is in the fact that as of now, the user cannot really interact with the robot in the sense that the user cannot have direct interaction with the project. The user can dance with the robot, but it cannot change the way it works/dances unless they directly change the code. The interactions with the robot were overall positive, some people understood the point of the robot, and others needed some explanation of what to do with it. If we had more time, we would probably work on giving the robot more dance moves, and interactivity of the robot. We could make some kind of monitor that informs the user better, we could also make it use batteries instead of connecting it to the computer, etc… I have learned that many things can go wrong and that a little bit of help can do wonders. I am really proud of what my partner and I made.
User Testing:
ANNEX
Final code used:
#include Servo rightfoot; Servo rightthigh; Servo leftfoot; Servo leftthigh; int pos; long prevMillis; void setup() { pinMode(13, OUTPUT); rightfoot.attach(9); rightthigh.attach(5); leftfoot.attach(3); leftthigh.attach(11); leftfoot.write(10); leftthigh.write(90); rightthigh.write(100); rightfoot.write(180); Serial.begin(9600); } //rightfoot 100 //leftfoot 70 void loop() { #include Servo rightfoot; Servo rightthigh; Servo leftfoot; Servo leftthigh; int pos; long prevMillis; void setup() { pinMode(13, OUTPUT); rightfoot.attach(9); rightthigh.attach(5); leftfoot.attach(3); leftthigh.attach(11); leftfoot.write(10); leftthigh.write(90); rightthigh.write(100); rightfoot.write(180); Serial.begin(9600); } //rightfoot 100 //leftfoot 70 void loop() { Serial.println(prevMillis); if (millis() prevMillis + 10000 && millis() prevMillis + 20000) { Serial.println("millis"); prevMillis = millis(); } }