Introduction: Halley: Ambassador Robot 001

Here is a quick description:

A 2.6 foot remote-operated humanoid robot designed to be capable of emulating human communication.

Here is a longer description:

Ambassador Robot No. 001, also known as Halley, is a 2.6-foot humanoid automaton built for the sole purpose of exploring what it means to be human from a non-human perspective. The primary means of achieving this is through human-robot interaction, where the robot, Halley, emulates as many human functions as possible while interfacing with another person. In order to connect with the idea of being human, a humanoid shape of respectable size is deemed necessary, along with an array of face-to-face communication techniques. A speaker, camera, and microphone satisfies the need for basic sensory input and output. Gestures, such as raising hands to ask questions, are supported by Halley's movable arms and legs. Finally, and perhaps most importantly, the ability to express emotions will be achieved through the clever use of an Android phone as a face. The ultimate goal for this project is to have Halley take the place of a student in a classroom.

Notes:

This is a very advanced project and assumes knowledge of laser cutting, 3D printing, usage of a machine shop, soldering electronics, and a variety of other things. The expected time to finish this project is a couple months working on and off, and a couple weeks working full time. The expected cost for this project is roughly 500-800 USD. I would not advise beginners to do this project!

Step 1: Parts You Will Need:

(Images above are a small sample of the parts you will need for this project.)

Specific Parts:

Common Parts:

  • Solder
  • Superglue
  • 3D Printer filament
  • Velcro Hook and Loop Tape
  • lots of assorted wires
  • assorted Molex pins/connectors
  • assorted breakaway headers
  • S/S FHSCS 2-56x3/8 screws
  • S/S FHSCS 2-56x1/2 screws
  • S/S MS NUT 2-56 nuts
  • S/S/ F/W .093x.250 washers
  • S/S FHSCS 4-40x1/2 screws
  • S/S FHSCS 4-40x5/8 screws
  • 4-40 MS NUT S/S nuts
  • F/4 S/S .125x.280 washers
  • 6-32 5/8 SHCS S/S screw
  • 6-32 Nylok Nut S/S nut
  • F/W S/S .156x.312 washers

Step 2: Tools You Will Need:

(Images above are a small sample of the tools you will need for this project.)

Hardware tools:

  • 3D Printer
  • Laser Cutter
  • Shop Drill
  • Hand Drill
  • File
  • Soldering Tool
  • Solder Helping Hands
  • Solder Sucker
  • Solder Fan
  • Goggles
  • Wire stripper/clipper
  • Crimper tool
  • Assorted screwdrivers
  • Assorted hex keys

Software tools:

Step 3: Overview:

(Images above are rendered images of the robot you will be building.)

Before we begin, I would like to go over a brief overview of the steps required to build this robot.

HARDWARE

  1. 3D Printing.
  2. Laser Cutting.
  3. Assembling the Head.
  4. Assembling the Arms.
  5. Assembling the Legs.
  6. Assembling the Torso.
  7. Attaching the parts together.
  8. Assembling the Backpack.
  9. Creating the Electronics.
  10. Attaching the Backpack.

SOFTWARE

  1. Arduino
  2. Unity3D
  3. Android Phone Face.

I have provided all the necessary files to build this robot in this GitHub repository: https://github.com/johnchoi313/Halley-Ambassador-Robot-001

You will reference and use the files in this repository throughout the building of this project. For all assembly steps, it will be extremely helpful to look at the actual CAD model to see exactly how the parts are going to mesh. The Rhino CAD file should be located in the CAD folder, labeled "Halley Render.3dm", or here in the GitHub repository: https://github.com/johnchoi313/Halley-Ambassador-Robot-001/tree/master/Halley%20CAD

Note that if you do not have Rhino3D, or prefer to use another CAD application such as Solidworks, I have provided files named "Halley_Robot" in OBJ, STL and STP formats, which can be imported directly to most 3D softwares. They are located in the same folder.

Step 4: 3D Printing

Use a 3D printer to create the hands, feet, torso supports and backpack connector.

If you have a MakerBot printer, print the following .thing files, located in the Halley CAD folder.

  1. foot.thing (2x)
  2. left_hand.thing
  3. right_hand.thing
  4. body_support.thing
  5. Backpack_velcro.thing

If you are using some other 3D printer, import the following files and print them. They are located in the same folder.

  1. foot.stl (2x)
  2. left_hand.stl
  3. right_hand.stl
  4. body_support.stl
  5. Backpack_velcro.stl

Note: If you do not know how to use a 3D printer, I recommend looking up the documentation for the specific model you are using. As I stated earlier, this project is very advanced and assumes knowledge in a lot of things, including 3D printing.

Step 5: Laser Cutting Acrylic

You should have 4 sheets of 1/8 inch acrylic for this step, of which three are 12x24 and one is 12x12 (in inches).

Laser cut these templates, located in the Halley CAD folder:

  1. Halley_black.dxf (12x24)
  2. Halley_clear.dxf (12x24)
  3. Halley_white.dxf (12x24)
  4. Halley_head.dxf (12x12)

Although the colors you use do not matter, I recommend using 3 different colors, where Halley_head and Halley_white have the same colors. You can also look at the main CAD render to get an idea of how the colors will mesh together.

Optionally, you can also engrave patterns on the laser cut pieces for that extra design aesthetic. Just in case you wanted to engrave the same patterns as I did on mine, you can import the following raster images in your laser engraving software:

  1. HalleyName.png
  2. roboclub.png
  3. FRFAF.png
  4. author.png
  5. usflag.png

Step 6: Assemble the Head.

Now that we have the parts we will need, we can now begin assembly. The head is a good starting point, since it houses a good variety of electronics. Once you understand how to assemble one part, assembling the rest should be relatively straightforward. Because of this, I will describe assembly of the head in great detail while being less detailed for the other parts. Again, I highly recommend you look at the actual CAD model in Rhino while assembling the robot, located in the Halley CAD folder.

Begin by collecting the necessary pieces for the head, which include:

  1. 1x servomotors
  2. AUVIO Speaker
  3. Phone (this will be detachable)
  4. All the associated acrylic pieces.
  5. Assorted screws, washers and nuts.

I would start by building the lower "jaw" of the robot, where the speaker is housed. Insert batteries into the speaker, and make sure it works. Use the size 40 screws to fasten pieces together, along with the respective nuts and washers. Note that the speaker wire should dangle outside of the hole on the acrylic piece that holds it in place, and there is a hole for the button on the side acrylic. Fasten this to the front face plate.

Now build the neck of the robot. This should have 1 servomotor for pitch. Use the large size 36 screws and the Nylok nut for the actual joint. Fasten this to the lower plate on the head. After you have completed this step, connect the rest of the head together. At this point, you should be able to insert the Android phone into the head (the head is designed so that you can easily insert and remove the phone).

General Assembly Tips (for all parts):

  • Depending on where you ordered the acrylic and how it was laser cut, it may be too tight or too loose. If it's too tight, rake off the side of the acrylic until it fits snug. If it's too loose, tightening the screws should take care of most of it. (Although I don't advise this with parts that need to be frequently removed or moved, a small amount of superglue can also help tighten loose areas.)
  • Be careful when handling acrylic! Due to its physical properties, acrylic tends to shatter upon impact, so a drop from 3 feet on concrete might render the acrylic piece unusable.
  • Carefully consider the order in which you are going to add the screws. Because of the shape of certain parts, doing some parts first might make it harder to do other parts later.
  • Most servos come with servo attachments, which are used to mount to other pieces. The screws will not fit on the servo horns or the acrylic pieces that connects to the servo horn, so use a shop drill or a hand drill to make those holes larger.
  • Before attaching servos, make sure they are oriented correctly. This can be done by attaching servos at their max/min positions on their respective joints.
  • Although this project was planned very carefully, you are almost guaranteed to have "unforeseen difficulties." Because of this, it is a good idea to have a variety of shop tools along with the 3D printer in case you need to improvise.

Step 7: Assemble the Arms.

In the same fashion as the head, you will now assemble 2 arms.

Begin by collecting the necessary parts for the arm, which include: (per arm)

  1. 4x servomotors.
  2. 3D printed hand.
  3. Associated acrylic pieces.
  4. Assorted screws, washers and nuts.

There are three main sub-parts to consider per arm: the lower arm, the upper arm, and the shoulder. Attach the servo horns to their respective acrylic pieces (a drill may be needed to make the screws fit). Assemble the lower arm and the upper arm (2x servomotors) and connect them with the associated screws. Then assemble the shoulder (2x servos). Connect the shoulder to the rest of the arm. You should now have a 4 degree-of-freedom arm. Note that because the hand is 3D printed and is fixed; it will not be able to grab things and is purely aesthetic.

Assemble the other arm in the exact same way. (Because the 3D printed hands are mirrored, make sure you have the hands on the correct arms!)

Step 8: Assemble the Legs.

In the same fashion as the arms, you will now assemble 2 legs.

Begin by collecting the necessary parts for the leg, which include: (per leg)

  1. 4x servomotors.
  2. 3D printed foot.
  3. Associated acrylic pieces.
  4. Assorted screws, washers and nuts.

There are 2 main sub-parts per leg: the lower leg and the upper leg. Again, begin by attaching the servo horns to their respective acrylic pieces. Assemble the lower leg with the 3D printed foot (2x servos). Then assemble the upper leg (2x servos). Attach the lower leg to the upper leg. Take care to make sure the servos are properly oriented before attaching the joints together. Note that because the robot is made out of acrylic and the fact that the servos are not strong enough, the robot is very unlikely to be able to walk.

Step 9: Assemble the Torso.

Now that we have completed the appendages, we can now build the center of the robot: the torso.

As usual, begin by collecting the necessary parts, which are:

  1. 3D Printed Body support
  2. Associated acrylic pieces.
  3. Assorted screws, washers, and nuts.

We will be building the lower torso during this step, as the upper torso will be done while attaching the arms. Fasten the 3 servomotors onto the torso acrylic pieces. The single servo on the front is for upper chest movement, and the other two servos on the bottom are for attaching the legs. Attach the 3D printed body supports in the middle of the lower torso as shown in the diagram, and fasten them with screws (some holes will need to be drilled). Finish the rest of the lower torso as shown in the CAD model.

After this step, we will be attaching the various body parts together to form the humanoid robot.

Step 10: Attaching the Body Parts Together.

At this point, much of the work assembling the body has been completed, and we may now start attaching the various parts together. There are 3 phases of attachment we must consider, which are attaching the legs, attaching the arms, and finally attaching the head.

Attaching the Legs:

We begin by attaching the legs to the torso. Note that you will have to assemble the intermediary part between the torso and the leg before making the attachment. It will probably be easier to attach the leg while the robot is laying down on your work space. At this point, you should also attach the upper chest pieces to the lower torso.

Attaching the Arms:

Just like you attached the legs to the torso, now attach the arms. Again, they will probably be easier to attach while the robot is laying down.

Attaching the Head:

Finally, attach the head to the upper chest torso.

After the completion of this step, you should have a robot that looks truly humanoid.

Step 11: Assembling the Backpack.

The final piece is the backpack. The backpack houses all of the necessary electronics and control mechanics for interfacing with the robot. It is also where the main power is routed.

Begin by collecting the necessary pieces:

  1. 7 port USB hub
  2. Associated acrylic pieces.
  3. Assorted screws, washers and nuts.

There are 3 layers to consider with the backpack: the front, the middle and the back. Start with the back and work your way upwards from there. The USB hub should fit tightly between the back and the middle plates. The Arduino Mega and the perf board will sit on the middle plate so that the electronics are clearly visible through the top plate.

Although the USB hub is optional, it allows for powering additional electronics mounted on the robot, such as webcams or Raspberry Pis if you choose to expand upon this project.

Step 12: Creating the Electronics.

The idea of the electronics is simple - what we need to do is hookup 21 servomotors to the Arduino Mega.

If you've had any experience with RC servomotors, you'll know there are 3 pins for each servo: red/orange for voltage input, black/brown for ground, and white/yellow for signal. Because 21 servomotors will drive a lot of current, we will need a separate power source (in this case the 5V 10A Adapter from Adafruit). Thus, we will need to connect 5V from the adapter to every servo's voltage input pin, connect every servo's ground pin to the adapter's ground, and also hookup every servo signal pin to the Arduino Mega. Note that the servos should be wired in parallel, and the Arduino Mega grounded to the adapter.

There are many ways to solder the described electronics onto the perf board. I have provided a schematic for the wiring I ended up using. Since we are dealing with a large number of wires, I would advise soldering one step at a time. First, solder the breakaway headers onto the board. Then solder the white wires. And then the black wires. And finally the red wires. You can check that you did the soldering correctly by using a multimeter on various areas, one spot at a time.

When have completed soldering the necessary components onto the perf board, we can screw both the perf board and the Arduino Mega onto the middle plate of the backpack. The power from the 5V 10A adapter is routed through the 5.5x2.1 barrel jack adapter through heavy gauge wire to an optional power switch back to the perf board.

To actually connect the signal pins from the perf board to the Arduino Mega, I used crimped rainbow cables, although regular solid core wires should work fine as well.

Additional Tips while creating the electronics:

  1. Always use a fan to blow the fumes away. It is not advised to breathe the fumes that come from soldering.
  2. Be careful to make sure you do not accidentally "bleed" solder onto unintentional areas! This will make certain portions of the electronics useless at best and it will cause a short circuit at worst.
  3. If you do happen to make a mistake, use a solder sucker or an equivalent solder removal device.
  4. If you choose to do a different wiring from my schematic, plan out exactly how you plan to solder the components beforehand. You'll save countless hours of needless confusion and space on the perf board.
  5. If you wish, you can make a printed circuit board and order it online instead. If you choose to do this, you will have to design the PCB yourself.

Step 13: Attaching the Backpack.

This is the final step in completing the necessary hardware for this project. In other words, you will have a fully functional 2.6-ft humanoid robot after attaching the backpack (minus the software).

Begin by collecting the necessary parts:

  1. 3D Printed backpack connector
  2. Hook and Loop Velcro
  3. Superglue.

Superglue the 3D printed backpack connector onto the back plate of the chest. When glue has dried, attach strips of fuzzy loop Velcro onto the top of the connector, and attach equally-sized strips of hook Velcro on the back plate of the backpack. Now attach the backpack onto the back chest plate of the robot via the Velcro on the 3D printed connector.

Congratulations! You now have a fully functional and ready to use humanoid robot for use in animatronic animation research. Feel free to pat yourself on the back. The next steps will be setting up the software to control this robot, which you are free to use and expand upon. (You can also develop your own system to control this robot if you wish.)

Step 14: Arduino.

If you wish to use the software setup I have provided, you will first need to upload the Arduino code onto the Arduino Mega.

Open the Halley_Arduino.ino file located in the Halley_Arduino folder. Plug your Arduino onto your computer with your USB A to B cable. Go to Tools and change Board to Arduino Mega 2560 or Mega ADK. Go to Tools and change Serial Port to the name of the Arduino (on Windows, this is usually COM #, and on OSX, this is usually /dev/tty.usbmodem#). Now upload the code by pressing the Arrow shaped button on the upper left corner of the Arduino IDE window. Your Arduino's LED will blink a couple times while uploading the code, and the IDE will state "Done uploading" if the sketch has been successfully uploaded onto the Arduino Mega.

Basically what this code does is that the Arduino will continually wait for incoming strings in the format "Pos1:Pos2:Pos3:Pos4:Pos5:Pos6:Pos7:Pos8:Pos9:Pos10:Pos11", where every Pos corresponds to a servo along with its position as an integer ranging from 0 to 180. Once the Arduino parses the data, it will update every servo's position if it changed. Note that there are only 11 servos being controlled because code to control for the legs has not been written yet.

Step 15: Graphical Visualizer With Unity3D.

This is the Graphical Visualizer created with Unity3D to display a real time simulation of the robot while sending serial data to the Arduino for every servo position on the upper half of the robot. Although Unity is designed to make video games, it serves our purpose very well as a robot controller. Note that you do not need the Pro version for this project - the Free version should work just fine.

To begin, fire up Unity and open the project folder labeled "Halley Robot". This can be done by going to File->Open project and selecting the folder "Halley Robot". Then open up the scene titled "Halley_Robot". This can be done by going to the project pane and clicking on the Unity icon titled "Halley_Robot". Now, select the object labeled "Arduino Joint Control". In the Inspector, you should a plethora of settings. Change the one that says "Port" to the name of your Arduino serial port (on Windows, only ports ranging from COM1 to COM9 seem to work. On OSX, use the full name of the port, which is something like "/dev/tty.usbmodem#"). At this point, you should be able to press the Play button (shaped like a triangle on the upper middle part of the Unity window) to begin the running the simulation. If you do not see any glaring red errors, you should be able to fully control the robot at this point. Note that you will need your Arduino connected to run this program.

Here are controls I have set up:

  • Press M to toggle mouse tracking. If enabled, the robot's head will follow the position of the mouse.
  • Press any number from 0 to 5 on the Numpad on the right of your keyboard to control the arm positions. You can add more positions by modifying the "Pose Control" object in the hierarchy.
  • Type in the text box in the upper left corner of the simulation window and press Speak to make the robot talk. This is actually powered by Google Translate for the text-to-speech function, so you will need an internet connection for this to work.
  • Press any number from 0 to 6 on the upper portion of your keyboard to control the face. We will cover how to setup the Android phone to reflect the face in the simulation in the next step.

Note: If you are unfamiliar with how to use Unity, I recommend learning the basics here: http://unity3d.com/learn/tutorials/projects/roll-a-ball. While this explains the basics on how to use Unity, it really only scratches the surface on what Unity is capable of. If you are interested in learning more about Unity (or anything else for that matter), I would highly recommend spending a lot of time developing small projects on your own and gradually accumulating knowledge as you go along.

Step 16: Android Phone Face.

(Images above are just some of the faces the Android phone is capable of expressing.)

Although this part is optional, getting the Android phone face to be controlled in real time with the Graphical Visualizer will add a finishing magical touch to the robot. Note that this step is also expected to be the trickiest part of the software to setup correctly.

Follow the steps outlined in the link below to install Android SDK for your machine and get it working with Unity: http://docs.unity3d.com/Manual/android-sdksetup.ht...

Once the above step has been completed, you should be able to create Android Apps with the free version of Unity. Now, open up Unity and load the scene named "AndroidOSC". This is the scene that will be loaded as an Android app on your phone. Select the game object labeled "AndroidOSC" in the hierarchy. In the Inspector pane, change the Remote IP setting to the IP address of your computer. Then go to File->Build Settings, and click on the "Add Current" button on the window that pops up. Then click on "Player Settings" and change the Default Orientation to Landscape Right in the Inspector pane. Then, go to "Other Settings" and change the Api Compatibility level to .NET 2.0.

Finally, build the project by going to File->Build & Run (make sure you have your phone plugged in to your computer during this step). After your project builds successfully, you should be able to see two glowing blue eyes on your Android phone. Now, on your phone, go to Settings and enable WiFi. Note the IP address of your phone. Now, back in Unity, load the scene titled "Halley_Robot". Select the "HalleyOSC" game object and change the Remote IP setting in the Inspector pane to your Android phone's IP address. Run the Graphical Visualizer again by clicking the the triangle shaped icon in the upper middle screen. You should now be able to control the face of the Android phone by pressing the numbers on the upper portion of your keyboard.

Step 17: Conclusion

Congratulations! You have now successfully built a 2.6-ft humanoid robot for use in animation research.

The current iteration of this robot was used as an experimental telepresent robotic student that can take the place of real students in a university lecture setting. So far, it seems to work very well (and it also seems to possess an extraordinary capacity for livening up any dull lecture, both for professors and students).

My current software and design is highly limited in its capabilities; it's certainly not perfect as it is now and it probably never will be. But this is ultimately a good thing - this leaves plenty of room to improve, make modifications, and develop advancements in the field of robotics with research you may truly call your own.

If you choose to further develop this project, please let me know! I would absolutely love to see what you can make out of this project. If you have any other questions, concerns, or comments about this project or how I could improve, I would love to hear it.

In any case, I hope you enjoyed following this Instructable as much as I had writing it.

Cheers,

John Choi

Step 18: Credits

This project was supported in part by funding from the Carnegie Mellon University Frank-Ratchye Fund For Art @ the Frontier and was constructed at the Carnegie Mellon Robotics Club. Halley Ambassador Robot 001 was designed, assembled, coded and documented by me.

The Frank-Ratchye STUDIO for Creative Inquiry Official Site: http://studioforcreativeinquiry.org/

Carnegie Mellon Robotics Club Official Site: https://roboticsclub.org/

This project was heavily inspired by the Poppy Project: https://www.poppy-project.org/

Comments

author
schadduck1 (author)2015-09-15

simply amazing! I'm nowhere near capable enough to start offering any advice of course, only encouragement and support. (and questions. ...lots of questions! ). with that said; could a raspberry pi be incorporated into this, or the bigger updated version? one of the reasons I ask is the new offical touchscreen that's now available for raspberry might work awesome for the presence aspect (7inch screen)! just a thought, I have plenty of thoughts but no advice. pretty sure you don't need any of that from me, lol.

author
John Choi (author)schadduck12015-09-15

Thanks! We all have to start from somewhere ;)
A Raspberry Pi could certainly be incorporated into this (it was actually my first plan to integrate one into the head). The bigger updated version is coming soon, and it should be compatible with just about every kind of mobile computing device. I had no idea that Raspberry Pi had a new touchscreen, this would certainly come in handy.

author
koz12 (author)2015-05-26

Great looking robot. I have a few questions:

Why did you choose not to use servo shields that are specifically made to handle several servos?

While your servo perfboard looks great and is laid out neat, why didnt you etch a PCB?

Why the Android phone face? If you wanted to have graphic visualization of facial expressions, why not use a LCD or TFT screen? just for the unity capability?

Just to clarify, control of Halley is done via the cellphone in the Unity program? wireless? How does the phone and arduino interface?

quick solution to your cabling aesthetics, toddler clothes.

author
John Choi (author)koz122015-05-27

Thanks for the comment!

These are very good questions. Here are my responses:

1) An Arduino Mega was sufficient to control 21 servos simultaneously, so a servo shield was not necessary (though a dedicated servo shield may work better, since the Arduino Megas's digital pins do occasionally suffer from "signal bleeding").

2) I did not etch out a PCB instead of a perf board because I did not know how to when I was designing the electronics (I have since learned how to make my own PCBs). Plus, the large mass of wires, when done right, does look pretty cool.

3) A TFT LCD can substitute for the Android Phone. However, an Android Phone also provides an accelerometer, touchscreen, WiFi, and an onboard computer for only a slightly higher price. It can also handle Unity.

4) What is actually happening right now is that Halley is hooked up to a laptop, which communicates to the phone via WiFi, and to the Arduino via USB cable. With a little more development, it is possible to remove the laptop and have the Phone communicate directly to the Arduino via Bluetooth while running Unity. If Bluetooth is annoying to set up, you can also hook up the Arduino to the phone with a USB OTG cable.

5) I imagine toddler clothes will greatly help with the cabling :)

author
koz12 (author)John Choi2015-05-28

back to question 4) first:

laptop to phone via WiFi, arduino to labtop via USB. so is the wifi connection an ad-hoc/peer-to-peer network or are you going through a router? could you elaborate on that a little more? why both a wireless and hardwire connection to the robot? easiest way to demo it, ease of setup and coding?

also, is there a sync delay between what the phone face displays and when the servos move?

in question 3 response you mentioned the phones accelerometer, is that being utilized by both phone and arduino? if arduino can read the accelerometer outputs from the phone to the laptop Unity program and use them in a string sent to arduino like the pos1-11 sent to the servos, then the robot should be able to balance to some degree which would in theory facilitate walking.

you should be able to make the joints stronger by using laser cut plywood with the same specs as the acrylic pieces. that might allow for weight distribution and load bearing

author
John Choi (author)koz122015-05-29

4) You are correct: the biggest reason for this WiFi/wired setup was simply because it was easiest to get working for a live demo.

There is roughly a 50 millisecond delay between both the phone and the servos, but they don't necessarily have to be synchronous (they can be controlled separately, each of them doing their own thing).

3) Currently, I'm not using the accelerometer, but theoretically, by using it the robot knows its balance to be able to walk. Practically however, the accelerometer in the phone is really cheap, and isn't too accurate or fast. That, coupled with the delay it takes to process the leg signals by the Arduino, would make it too slow and imprecise for bipedal walking. It should be sufficient however to make Halley crawl like a baby.

As for the last bit, there are many substitutes for acrylic that are more durable :)

author
koz12 (author)John Choi2015-05-29

You have a really nice project here. I can't even begin to express how interested I am in doing something similar of my own. Thanks for answering my questions. Is this project complete for your purposes of demonstration or is it still ongoing? Will there be a 2.0 model in the future? I'm eager to see what a revision model would look like but this is awesome

author
John Choi (author)koz122015-05-29

Certainly! I am honored to know the people here really appreciate my work. Right now, looking at most of the feedback so far, I'm looking at how to make a self-contained robot that is capable of moving around a room and grabbing things, so that it is more than just a stationary puppet. Thanks for your interest and feel free to ask if you have any other questions.

author
FrankenPC. (author)2015-03-15

This is glorious. Excellent work. Have you developed balance and walking yet? Or is it still in the early dev stage?

author
007sanjay (author)FrankenPC.2015-05-14

increase the surface area of the feet and it may balance and walk

author
John Choi (author)FrankenPC.2015-03-15

It's still pretty early. I don't think balance and walking is going to happen anytime soon, as the acrylic joints near the pelvis are kind of weak and the only accelerometer/gyroscope is in the phone.

author
zman1204 (author)2015-03-14

I emailed my tech professor with the link to this and he said: 1.this is incredible 2.that he was gonna have our class break up into teams and build this robot Nice job

author
John Choi (author)zman12042015-03-14

Really? Awesome! I'd love to see where you guys go with this. Feel free to reply back with some images when you build one, or feel free to ask if you guys get stuck on anything.

author
Jonny_X (author)2016-10-27

Hi John, great robot and work! I used similar servos for my robot
(MG946R) which are also PWM controlled. The PWM is generated by a
Raspberry Pi directly (Software PWM). It works great and I even got it
walking and talking. All servos can be controlled by an easy user
interface with a slider for each servo. In case of interest all
information and SW can be found at http://www.german-robot.com

author
John Choi (author)Jonny_X2016-10-28

Wow, this is impressive stuff, thanks for sharing! I've checked out your website, and the clothes you put on your robot really makes it look that much cuter.

Keep going, and I would love to see how this evolves :)

author
Jonny_X (author)2016-10-27

Hi John, really great robot and work! I used similar servos for my robot
(MG946R) which are also PWM controlled. The 17 PWM signals are generated by a
Raspberry Pi directly (Software PWM). It works great and I even got it
walking and talking. All servos can be controlled by an easy user
interface with a slider for each servo. In case of interest all
information can be found at http://www.german-robot.com

author
SiddharthK4 (author)2016-04-19

Hey John,

I don't have an acrylic cutter. Can you please send .stl files for those parts so that I can 3D print those. You can mail them at siddharth123sk@gmail.com

Thanks! :)

author
KrazyK4 (author)2016-03-10

are the legs able to take the weight of the body??

author
abuffa (author)2016-01-03

this is really awesome

author
Ardumotive_com (author)2015-12-08

Amazing project!!!

author
FusionBear (author)2015-07-22

This is amazing! I see LOADS of potential. In the future I can see a line of robots named ambassador that are used for human interaction.

author
John Choi (author)FusionBear2015-07-22

Thank you for the kind comment! I'm currently working on a bigger and better version, and I assure you it will be awesome :)

author
FusionBear (author)John Choi2015-07-24

Can't Wait

author
HEMANTH RAJ RAJ (author)2015-07-02

Cool project.... I gotta try this.

author
-AWP-Angelic_Wolfman100 (author)2015-06-02

Cute! Where's my dang Wallet because SHUT THE HECK UP AND TAKE MY MONEY!!

author

I appreciate your enthusiasm! I'll let you know when I get to that point ;)

author
007sanjay (author)2015-05-14

increase the surface area of the feet and it may balance and walk

author
webhostpro (author)2015-04-22

Looks cool, the voice needs work though, try a stereo set up with some base and slight reverb. Hide the cables and you have sweet robot.

author
John Choi (author)webhostpro2015-04-22

Thanks for the comment! I agree about the cables - they are kind of messy. As for the voice, it's not too bad for what it's worth. Google Translate does sound a lot better in my opinion than eSpeak, which is another free TTS system.

author
Cat Adalay (author)2015-04-16

Nice project! Would it be possible to switch out the acrylic for 3D printed pieces?

author
John Choi (author)Cat Adalay2015-04-16

I imagine so, though the 3d printed pieces would take a LOT of time to print, and the shapes are optimized for laser cut sheets, rather than 3D printing. If you don't have access to a laser cutter, there should be printable cardboard cutting templates in the CAD folder (courtesy of Amby Ambroise). Hope this helps!

author
Cat Adalay (author)John Choi2015-04-17

Definitely! thanks :)

author
Abdo Salem (author)2015-04-09

hi

I have a problem with rbs3115mg servo motor, i can not control it using servo library on arduino .

please, if there is any else library know me.

abdelghanysalem442@gmail.com

author
John Choi (author)Abdo Salem2015-04-09

The RDS3115mg appears to have some different mounting configurations, so you may have to modify the CAD files on my robot in order to mount them correctly. Also, these appear to be standard 3-pin servos. Could you be a little more specific about your problem?

author
zman1204 (author)2015-03-31

Sorry we had to scrap the idea-_- (our school is poor) the tech professor was denied money for our intended project. However, him, another student, and I are going to try to make the robot on our own out of old computing and vehicle parts. The scrap yards are full of materials. But we still need the proper computers to program it. We are doing a community fund raiser for building halley

author
gautam5025 (author)2015-03-25

Hi Jhon excellent work...

i want to make this robot

if you possible plz send me detail your project and source code

at my e-mail rahulgautam.5025@gmail.com

author
John Choi (author)gautam50252015-03-26

If you read through this Instructable, your requested information should all be there.

author
anikhila67 (author)2015-03-22

excellent frank....

author
projetoslinux (author)2015-03-20

Hi Jhon
Beautiful work...
i am universitary teacher and
i work with comercial robots to
learn. And have many coreography for my robots. if help you to walking process...cal me
thanks.

author
John Choi (author)projetoslinux2015-03-20

Cool! Which university are you from, if I may ask?

author
projetoslinux (author)John Choi2015-03-20

FIEO university from Sao Paulo
Brazil

author
cr3at1vem1nds (author)2015-03-17

Awesome build !! Can it Walk?

author
John Choi (author)cr3at1vem1nds2015-03-18

Unfortunately, the joints are a bit too weak for that, and the sensors aren't adequate for balancing. So no, it can't walk.

author
cr3at1vem1nds (author)John Choi2015-03-19

Hmm.. Okay but you should build another that could walk, that would be amazing .. Great project by the Way !!

author
Kutluhan (author)2015-03-18

Awesome project! I have a question. Did you printed hands solid or hollow? Solid must be heavy for servos to act fast. Thank you

author
John Choi (author)Kutluhan2015-03-18

Solid or hollow should both be fine if you are using a PLA or ABS 3D printer (its not that much heavier). If you want to save on filament, I recommend hollow.

author
larystoy (author)2015-03-17

This is a project I am very interested in. I have a commercial robot that is no longer supported so I am going to tear it up for the parts for one like yours. Servos, System board with 20 points of freedom, should be plenty. Also may save me a bit of time with assembly. I may also be able to resolve some of the issues with balance so it will be able to walk.

When I started to save the related files, my system hung on the first Cad.stl file. Could you zip all the files into a single download for us? That may save some of us a lot of time. Thanks larystoy

author
John Choi (author)larystoy2015-03-17

I believe in the main GitHub page you can simply click on the "Download Zip" button in the lower left hand corner. I've attached an image for your reference. Hope this helps!

download zip.jpg
author
Dctr_ (author)2015-03-15

I reccommend to buy your Arduino Mega here: http://www.tinydeal.com/mega-2560-r3-board-develop...

It is cheaper and free shipping. It can take 1 to 2 weeks to deliver it though.

author
John Choi (author)Dctr_2015-03-16

Hmmm, this is the "official" Arduino board, right? (I know there are a couple imitators floating about). In any case, thanks for the advice!

About This Instructable

36,144views

496favorites

License:

Bio: Just a guy that likes building robots and videogames.
More by John Choi:Multipurpose Mobile Manipulator MkIIMultipurpose Mobile Manipulator Mk 1Virtual Reality Teleconferencing Device with Google Cardboard
Add instructable to: