Introduction: THE RO-BOOTY BOUNCERS DANCE INSTRUCTORS

Do you ever sit down thinking I wish I could I move it, move it and shake my booty? Do you ever wonder why you can't shake it like Shakira or get made fun of your dance moves? If you catch yourself asking these questions then look no further, we have the solution for you!

Introducing the Ro-Booty Bouncers, our very well trained dance instructors you have been looking for. The Ro-Booty Bouncers offer you a unique package of entertainment and learning. These dancing robots are like no other, they have helped thousands of wanna-be dancers with their unique training you'll become a star before you know it or your money back guaranteed.

These Ro-Booty Bouncers are like no other dance instructors, they work hard to teach you the most outstanding dance moves, including; the moonwalk, the shaky shaky waka waka, break dance and much much more. So don't delay get your hands on your own Ro-Booty Bouncers today!

Supplies

Materials for ONE Ro-Booty Bouncer:

1 sheet of 3mm Baltic Birch Ply

1 x Nano Atmega328P CH340 Micro Controller Board

1 x Nano I/O Expansion Board Extension Shield for Arduino Nano

1 x Ultrasound sensor HC-SR04

1 x Passive Buzzer 1PC

4 x Micro servo SG90 9g

1 x USB-A to Mini-USB Cable

6 x Female/Female Dupont Wires

1 X 9V1A Adapter 1PC

BSI Extra thick glue: Maxi-Cure

Exacto-knife

Acrylic paint of any bright colour your heart desires

Step 1: MEET THE INSTRUCTORS

Step 2: LASER CUTTING

Start off by tracing the attached pdf into rhino to laser cutting the parts of the Ro-Booty Bouncers.

In order to cut through 3mm Baltic Birch Plywood, set the laser cutter to a power of 65% and speed 5% to get a clean cut all the way through.

Step 3: SOFTWARE AND CODE

In order to successfully complete the code for the Ro-Booty Bouncers you must download all the libraries from the attached link: https://github.com/OttoDIY/Libraries and copy the libraries into the Arduino libraries folder.

Once you have added the ZIP files to Arduino's library, you can then proceed to develop the code and connect the Robot (Arduino Nano) through a USB-A to Mini-USB Cable to your computer.

The Arduino IDE operates on two forms of codes for this Robots circuitry. The libraries seen below are required for this robot and easy to download on GitHub (extremely important part in order for the code to fully function).

The running code in Arduino is uploaded to the Arduino Nano through the computer port, telling it what to do and how to do it. One of the most important components to add are the void setup and void loop; giving the board the required information.

#include <Otto_sound9.h>

#include <Otto_mouth9.h>

#include <Otto_gestures9.h>

#include <Otto9.h>

#include <Otto9Humanoid.h>

#include <Otto_sound9.h>

#include <Otto_mouth9.h>

#include <Otto_gestures9.h>

#include <Otto9.h>

#include <Otto9Humanoid.h>

#include <Servo.h>

#include <Oscillator.h>

#Include <Otto9.h>

Otto9 Ro-Booty;

// This is Our Robot Ro-Booty Bouncer

byte rightLeg = 3;

byte leftLeg = 2;

byte rightFoot = 5;

byte leftFoot = 4;

byte buzzer = 12;

byte trigPin = 8;

byte echoPin = 9;

bool obstacleDetected = false;

int distance = 0;

//forward declarations void danceParty();

void setup() {

// put your setup code here, to run once:

Ro-Booty.init(leftLeg, rightLeg, leftFoot, rightFoot, false, 0, buzzer, trigPin, echoPin);

Serial.begin(9600);

Serial.println("setup start");

Ro-Booty.home();

//reset servo positions

Serial.println("setup end");

delay(50);

Ro-Booty.walk(1, 1000, 1);

danceParty();

Ro-Booty.walk(1, 1000, 1);

danceParty();

Ro-Booty.walk(1, 1000, 1);

danceParty();

Ro-Booty.walk(1, 1000, 1);

}

void loop() {

// put your main code here, to run repeatedly:

distance = Robo.getDistance();

Serial.println(distance);

if(distance < 100){

Serial.println("I'm dancing");

danceParty();

Serial.println("Done Dancing");

} else {

Ro-Booty.walk(1, 1000, 1);

}

}

void danceParty(){

Ro-Booty.walk(3, 1000, 1);

delay(300);

Ro-Booty.home();

Ro-Booty.moonwalker(5, 800, 25, 1);

// moonwalk it out

Ro-Booty.home();

Ro-Booty.playGesture(OttoLove);

delay(100);

Ro-Booty.moonwalker(3, 800, 25, 1);

// moonwalk it out

Ro-Booty.home();

Ro-Booty.jump(1, 2000);

Ro-Booty.home();

Ro-Booty.moonwalker(3, 800, 25, 1);

// moonwalk it out

Ro-Booty.walk(3, 1000, 1);

delay(200);

Ro-Booty.home();

Ro-Booty.playGesture(OttoVictory);

}

Step 4: ELECTRIC CONNECTION AND CIRCUIT

As seen in the illustrations above, wiring can get very clustered and messy, therefore it is best to solder your wires and tie them together. However, the electric connections throughout the Ro-Booty Bouncer consist mainly of pins, servos and an ultrasound sensor.

- pin 2 on the Nano I/O shield is attached to the Micro servo SG90 9g in the left leg

- pin 3 on the Nano I/O shield is attached to the Micro servo SG90 9g in the right leg

- pin 4 on the Nano I/O shield is attached to the Micro servo SG90 9go within the left foot

- pin 5 on the Nano I/O shield is attached to the Micro servo SG90 9g within the right foot

Wires must be attached through the Female/Female Dupont Wires from pin 2 to pin 5 onto the Arduino Uno. Four Female/Female wires are also used to connect the Ultrasound sensor HC-SR04 to the Nano I/O shield as well as two wires connecting the Passive Buzzer 1PC.

Then connect the Arduino Nano is then connected to the computer and the code is upload.

Step 5: ASSEMBLY

Start off by laying out all that laser cut pieces reorganizing and checking all your parts, making sure you have all the pieces you need for the Ro-Booty Bouncer.

ASSEMBLING HEAD:

Requires the ultra sound sensor, Arduino Nano within the shield connected to all the components. The ultra sound sensor is used in place of the eyes, fitting perfectly into the wholes of the head. Next you place the Arduino Nano attached to the shield directly to the roof of the head.

ASSEMBLING BODY:

Two Micro Servos SG90 9g are placed within their given locations in the Ro-Booty Bouncers body, should click into place.

LEGS AND FEET:

For the Ro-Booty Bouncers legs and feet one Micro Servo SG90 9g should be placed inside each foot, checking to make sure that the servo can rotate at least 90 degrees to either side for both feet.

ATTACH FOOT TO LEGS:

When attaching the feet to their legs it is important to take care of the cables and place them inside the openings on the bottom of the body, between the two legs. Once both feet are in the right position, fix them into place through the Micro Servos SG90 9g.

ATTACH LEGS TO BODY:

In order to connect the Ro-Booty Bouncers legs to his body they must be attached through the centre of the Micro Servos SG90 9g. It is crucial to look over each servo and be sure of their rotations, making sure they turn 90 degrees to either side of the body.

PLACE HEAD ON BODY:

After carefully placing all the wires into the head and body, gently attach the head to the top of the body, securing it with glue.

Step 6: RESULTS

While developing our Ro-Booty Bouncers we learned that perfection comes through imperfection.

The biggest challenge we faced when designing and developing the Ro-Booty Bouncer was; trying to do too much with the robot. We realized that its capabilities and flexibility are limited based on the materials we were using and it was extremely difficult to program solutions or even process speed limitations. These mistakes further magnified when we attempted to troubleshoot the code, creating further complications. In trying to get the Ro-Booty Bouncer to do more than he is capable of we ran into multiple motor related issues leading to battery discharges and failures, which is why we choose to power our robot using 9V1A Adapter 1PC.

Another challenge we faced was misunderstanding its accuracy and repeatability, in which some of the Ro-Booty Bouncers mechanical parts can be repeatable however, the mechanic may or may not be precise. As repeatability is portrayed through the loop setup within the code, the robot is programmed to return accurately to his first movement however, accuracy is demonstrated through precise movements calculated to a point which didn't always work the way we wanted.

Under and also overestimating the robots capabilities to be a controller is also another challenge we came across; underestimating the robots capabilities to be in control of its movements, instead it created a duplication of systems bringing errors upon itself.

Step 7: ENJOY LEARNING YOUR NEW DANCE MOVES

Step 8: INSPIRATION AND CREDITS

INSPIRED BY:

REFERENCE AND CREDITS:

This project was created for an undergraduate Physical Computing Course (ARC385) taking place at the Daniels Faculty of Architecture, Landscape and Design at the university of Toronto.

THANK YOU TO:

HAYDEN SEIXAS FROM ROTMAN COMMERCE FOR NARRATING THE VOICE OVERS.

DOLLAR STORE FOR THE MOUSTACHE.

ALI AKHAVAN, CRISTAN SANTOS AND SANDESH RAJANATHAN FOR PROVIDING THE FILM MAKING PROPS.

AND A BIG THANKS TO OUR PARENTS FOR THE CONSTANT MENTAL SUPPORT :)

GROUP MEMBERS:

ROSE MOHAMMAD

SILYA SARIEDDINE