A humanoid robot is a programmable robot with a body shape, which is built to resemble the structure of the human body. The robots functional purpose is to interact with its surrounding, and for experimental purposes such as displaying the different motions which resemble the actions of humans. Humanoids have a head, torso, legs and arms which were constructed in the forms of mechanical parts. Humanoid robots provide us with a better understanding of the human structure. Very advanced robotics facilities aim to design robots which can perform human tasks such as: washing the dishes, providing assistance to the elderly, and performing dangerous jobs such as firefighting, along with many other tasks. A future can be seen built around these machines which will slowly advance into humanoids with feelings and thoughts in further years (or generations). A new dawn of robotics is displayed in simple design of the 17 DOF robot which was created in this project.
The humanoid robot which was created in this project consists of many mechanical parts. These parts were programmed and designed in the shape of humans. Parts include the use of servos to represent the joints and cardboard/aluminum for the structure (body) of the robot. Other parts include the use of sensors to interact and sense the surroundings, along with an arduino uno and breadboard for which all the connections were made. The arduino uno was programmed to control all the parts (using the arduino software) which guided the robot in moving forward, turning around, and interacting with its surroundings. The budget to build a robot similar to this averages to $100.
Step 1: Gather Materials (GOOD PIC OF ALL MATERIALS WILL BE ADDED WHEN WE GET THE DRIVER)
You will need the following:
- 17 MG995 Servo’s - Stall Torque : 15 kg-cm (208.3 oz-in) at 6V Stall Torque : 13 kg-cm (180.5 oz-in) at 4.8V Operation Voltage : 4.8 - 7.2Volts
- Arduino Uno - Open source control board, used to control the robot. Operating voltage : 5 V / 7-12 V Processor: ATmega328P # of Input/Output Pins: 14
- 2 - 4 Ultrasonic Sensor - Used to sense the surrounding environment of the robot Min Range: 2cm Max Range: 4m HC-SR04
- Male to Male Wires - Used to connect all other parts.
- 16-Channel 12-bit PWM/Servo Driver (PCA9685 for Arduino Raspberry Pi DIY Servo Shield Module) - Gives more connections to the breadboard 16 Channels 12 Bit
- Cardboard - This material was used to frame the body of the humanoid.
- Aluminum - This material was used after the cardboard to frame the body of the robot.
- Battery - 7.2 volts 3000mAh
- Breadboard - Was used to create the circuit from which the robot operated off of.
- Type B Arduino connector cable - Was used to give power to and connect the arduino to the computer.
And the following Tools:
- Screw driver
- Wire Stripper
- Box cutter
- CNC Machine / Laser Cutter
Step 2: Building the Circuit (Simple Circuit Sketch Here)
In order to build the circuit we first need a simple understanding of the parts.
An Arduino Uno is a simple micro controller that we're using to control the servos using code that we developed through the Arduino Coding software. There are locations on the Arduino that intake and output signals and that is how the Servos are controlled.
The next major part is the PWM/Servo Driver the main reason for this part in this project is to allow the Arduino to output more signals to the Servos that we would like to control.
Next we have a servo itself, which has three terminals (PWR,GND, and SGNL) and upon receiving a connection to these terminals the servo will move to its directed point within it's 180 degrees of motion.
Ok now on to the actual building,
1. We began by setting up the connection between the Servo Driver and the Arduino. We can do this by connecting the SDA and SCL pins (on the driver) into the 4 and 5 analog Pins on the Arduino using a male to male wire. This allows the Arduino to communicate to all the Pins on the driver.
2. Next we connect the GND pin from the driver to the breadboard - row and then to the GND pin on the Arduino (You can easily find these pins in the same area as the last) and the VCC pin on the driver to the + row on the breadboard and the 5V input on the Arduino. This step allows the Arduino to communicate the changes in charge with the Driver. We also connected the 7.2V battery to the the +/- inputs on the driver (Feel free to remove this as you wish until the circuit is completely set up).
3. And lastly is the most tedious part, connecting the Servos, to do this connect the yellow signal cables on the servos to the PWM input on the driver. Next connect the Red wire from the Servos to the V+ input and connect the black wire to the GND input (Also make sure to keep the pins from the same servo going to the same line of input on the driver, in case that wasn't obvious). Since the Driver only allows an extension of 16 inputs we need to connect the last servo to the breadboard and the Arduino, connect the red wire to the + row, the black wire to the - row and the yellow wire to the ~9 SGNL input on the Arduino.
4. (Place step of sensors here, hasn't been completed yet)
Step 3: Writing the Code (Insert Full Code Here)
We started off by developing a Pseudo code to get a simple idea of how the code should work, then developed that further into specifics (insert document with advanced Pseudo code).
We used the servo library code and adjusted it to do the following movements:
(WAVE CODE HERE)
(Walking Code Here)
Step 4: Building the Body Out of Cardboard (DWG - AutoCAD)
We designed the body on AutoCAD to save some time later on for when we would CNC/Laser Cut the body out of aluminum. We decided that the best course of action would be to start the body off with cardboard to test it out before the Aluminum body.
Step 5: Connecting the Circuit to the Cardboard Body
The next step is connecting the circuit to the body, you can see where all the servos belong and in what direction they should be pointing, as well as the length of each cutout of the body. Please refer to the DWG for this information. (Place step by step building pics of the body here).
Step 6: Testing the Robot (Running the Simple Actions)
Please test your robot and repeat steps in the case of any errors.
Step 7: Turning the Simple Circuit Into a PCB
Using the Fritzing software we were able to easily make a PCB sketch for the PCB itself. Place steps used to build the PCB board using copper plates and solders etc. (Include PCB drawing here)
Step 8: Building the New Body Out of Aluminum Either CNC’d or Laser Cut
(Include CNC code here)
We used the program V-Cut Pro to design the CNC g-code for the CNC machine/ Laser Cutter (depends on what will be used).
Step 9: Connecting the Circuit to the Aluminum Body
Repeat step 5 to connect the circuit to the new aluminum robot body.
Step 10: Testing the New Body (Running Code Actions)
Congrats your done, test the robot and apply any finishing touches you'd wish to make.