3D printed - Adult Sized Humanoid Robot

 Hi All,

I have recently started work on a new project  to build a full size humanoid robot. I started a new youtube channel just for this project.

     As with all of my work, I am designing this to be made from the cheapest components possible. The idea is that I would be able to creat a full size humanoid platform that can be bought for under £1000.   That's cheaper than many miniature humanoids.

     All of the joints are made using cheap plastic gearboxes and position feed back is from potentiometers. I have only got to the point of making the legs and programming the arduino to control them in a usable manner. I got it to stand on one leg yesterday, but much more work is needed to get it balancing using any kind of responsive intelligence. It doesn't have any upper body weight so counterbalancing is quite difficult at the moment. I haven't actually designed the upper body yet, but I have a good idea of how I want it to work.

I am planning to add giro stabilisation and pressure sensors to the feet, although programming the responses to that data is going to be a real challenge and will probably take weeks.
 
   All of the plastic parts are 3D printed and designed on sketchup. I am still using the L298 breakout boards you can get on ebay for the drivers quite simply because of the time saving and cost factor.

Each leg has 6 degrees of freedom and it can move in any way a human could conceivable move.

I took some time to learn a bit of Processing which is helping with control of the legs. I wasted days and days learning how to send data between the arduino and PC using the serial bus. It was extremely painful! I had to break down 3 digit integers into individual characters to send in a String and then vice versa on the other end. I cracked that eventually.
    I have programmed a simple GUI using Processing, which is designed to allow me to save positions down to a position array that can be played back when you click on the buttons. I just need to program a timed position sequencer and I will have the rudiments of system that can control the legs into a basic walking movement.

    Even when I have that, it still won't have any semblance of intelligent control. That could take months to program. I have some great ideas around programming control, but it seems that my programming skills may take some time to catch up with my ideas.

  The only way I was able to make this progress is by taking time off work, but unfortunately I will be back at work on Monday, so progress will slow right down again.I would really love to be able to do this full time, I'm just not really sure how to get started.

    I will add some updates when I get more pictures and videos and when I have it doing something that resembles walking!

 

-------------------------------------------------------------------------------------------------------

Update 21st August:


So I have been working a huge amount on designing the arms.  I needed to make sure I get all of the articulation required but retaining some semblance of the human form factor. I decided I was not going to be able to have a five fingers but will have to go with two fingers and a thumb. My local print shop ran out of 3mm White PLA so I had to continue printing in 'natural' which I don't like as much, but never mind. Let me know if you can't see the video below, I forgot I had music on for this one so it is copywrited.

The fingers and wrist pitch will be 'cable pulled' like many other designs out there and I am planning to have one motor in the hand to pull the thumb inwards to the centre of the hand for grabbing. So the thumb will have two actuators to enable it to do what the human thumb does by either opposing  the fingers to pinch or keeping the thumb flat and making a kind of fist shape.

Update 7th of August:

 

  I have been fighting with the design process. Really slogging away, forcing myself to endure days of staring at a screen making measurements and generally trying to animate the mechanics in my head. I had to create a whole new method of driving the joints, using cables instead of large cogs. This gives me the ability to make high ratio differences whilst maintaining the ability to make the parts printable. ( There is a minimum practical size to 3D printed gear teeth.)   

    This is specifically required for the upper arm Yaw mechanism which needs to be small form factor but high power and relatively low speed. I have gone through about 50 iterations of this mechanism, each time having to wait hours whilst my parts print.

   Each time I change the design I also need to redesign how I am going to get position feedback, which is actually quite difficult to design in pre-emptively.

   The first three large iterations of this joint required angles of the motors that made the upper arm far too large and heavy when using printed cogs, which is why I begrudgingly turn to cables.    

     I'm going to post here the final result. The skeleton. No drive motors as yet, or cables, but all the mechanisms are proven after painstaking testing. The test yaw I have here is surprisingly strong and uses heavy duty fishing line to transmit movement. The best part is that it almost looks like it could sit inside a persons arm. It also moves within a very similar set of angles, stopping very close to where our own arm yaw would stop in each direction. I can't wait to get the motors hooked up!!!

 

 

 

 

Small update 22/07/17:

I realised something that had been working against me massively. The legs seemed to be much less controlled than I expected, always shakey and the power wasn't as high as I had thought it should be.It all came down to the PID calculations I had programmed. I was racking my brains to trying to work out how to calculate the Derivative value and then I noticed something. I had been adding my P and I values together because the sum fitted nicely into a usuable value for PWM. But with PID you are supposed to multiply the P and the I and this gives you the proportional output required. However when multiplying my P and I , I was getting crazy values, far too high to use with PWM. The solution was really simple - divide the result by 10!

 The I have values I can use in PWM and I can also tune that number to vary my overall speed and strength. The legs seem to move a lot more smoothly now.

 

   I am currently trying to design the upper arms. It is surprisingly difficult to work out because I need to add a 'swivel' to the section between the shoulder and the elbow, which allows the arm to move in a similar manner to humans. I have some designs for turntable type swivel motion but they are not rigid and they are also enormous which is not going to translate very well to a human type form.

   I have also printed a 'bicep' joint which I am fairly happy with, but it impossible to know how it will look until I design the upper arm . This part is always really difficult because I know how I want to achieve something and have a rough idea of how to do it, but it takes a huge amount of time to work the 'best' way to do something. It means sketching on paper or even just staring at pieces that I have laying around and trying to reconfigure them in my mind to get a working piece. Very long and quite frustrating.

 

 


This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/3d-printed-adult-sized-humanoid-robot

Cool project !

Can’t wait to see the first photographs of it :slight_smile:

Thanks,I did try to put up a

Thanks,

I did try to put up a picture and video but I guess it takes some time to review.

Images

Added a temporary main image which you can replace. Also looking forward to seeing images. Did you do torque and force calculations at each joint? Do you plan to have it self-supporting?

Thanks. Yes the finished

Thanks. Yes the finished unit will be completely self supported. The legs are strong enough to hold a fair amount of weight, but it is controlling those motors that is the difficult part. I have programmed  a very basic ‘PI’ type code into the arduino. I am realising that I definitely need the ‘derivative’ part of that to stop the motors from over shooting, as the leg joints are prone to oscillating. I’m just working on a way I can measure that the joint is getting closer to the set point. It already measures the distance from the set point and also has a variable that increases overtime the longer the joint is in 'error. But now I need to program a variable that decreases the force if the joint ‘error’ is improving… Not an easy task! :slight_smile:

 

      I haven’t yet considered torque and force preferring for the PI (D) to do the bulk of the work. Obviously with it being so big I will need to do that soon, although the coding is quite a slow process. The real key to controlling it properly would be to create a kinematic model of it within the code but that is likely to take me an awful long time as I am no mathematician!

Well, I’ve tried a few times

Well, I’ve tried a few times to upload some pictures and videos but it seems they are being flagged as spam every time. Well I will do some updates in textual format until that time.

Very Interesting

Will be following this to see more. Sound very interesting.

I have designed and built

I have designed and built several biped in the past and would like to pass some knowledge on to you.

First thing I notice is that your feet will need to be increased in size to handle the weight and keep the center of gravity stable. My frist biped had what I would like to call duck feet, they were wide and long but the bot would not fall over. I then designed feet that had some what of a toe. The toe was had a slight spring to it so when the bot would lean forward it would apply a small amount of pressure back keeping the bot from falling over forward. I then moved on to a wide stance and low center of gravity and the spring feet and this seems to work well.

As you create the torso and the height changes so will the center of gravity.

You can create a joint at the waist  that would move left to right to help with this but will be difficult to control unless you use linear servos. Another way to do this without a joint at the waist is to use the arms as a counter weight just like a tightrope walker does to balance. Also if you can maintain a slight bend at the knees and keep the knees slight over the toes and the hip slightly behind the feet you stance will more stable and will help with your center of gravity. Best example I can think of is to watch some video of Asimo as this is the key to Asimo being stable, Kind of like a football players stance. You can spend a bunch of money on expensive servos and linear actuators or you can make your own. I have seen cordless drill motors used mainly because they have a planetary gear box and while they do work they are heavy and then create other issues because of weight and the power required to drive them.

While I am not a Raspberry PI guy and just begun using Arduino’s in my bots I will tell you how I achieved making mine walk.

I use x86 system mainly Windows Tablets as they are not to heavy and if needed I can take it apart and use the board/battery and remote into to one for the visual. All my software is done in VB.NET and uses Access tables to set the movements.

I will have a table for walk, stop,turn left, turn right, lean left, lean right etc… Each table has all the joints (servo’s) in it with the position each one needs to move to to. Based on this I can set the timing easily and make the joints move quickly or slowly just by the way the data loads.

You have a excellent project going and if I can be of any help please let me know will be glad to help you in any way that I can.

Awesome!

Awesome!

Prototype

Really nice to see that you’ve gotten this far - nicely done! Be prepared for a lot of opinions and feedback as to how to improve it. Since you’ve gotten this far, you can certainly take it to the next level. Just some initial thoughts - try to eliminate all of the metal hardware (unecessary weight), reduce the amount of plastic used, make the feet larger / wider. Can’t quite see the actuation / gearing. You might see if the legs can hold themselves up by supporting the waist. 

Hi Jeffro, Thanks very much

Hi Jeffro,

 

Thanks very much for the detailed feedback. I absolutely agree that the feet need a redesign. They have been cobbled together from various parts that were printed independently, so I really want to print the lower foot all in one piece as they are currently a bit wobbly. I definitely need to make them a bit bigger and wider, although I am really trying to make this as ‘in proportion’ to a human as possible. I know this is a tall order considering the equipment I am using but my goal is to make something that looks good as well as it is functional.

  I am planning to have a 'twist ’ joint in the waist , rather than one to lean left and right. I will achieve a left/right lean by angling to hips and ankles correctly. I also plan to have a smaller ‘bend’ higher up on the spine. The leg can only extend up to a 90 degree angle up at the waist, so it would not be able to hold it’s knees up to it’s chest , but with the spine bend it will be able to lift it’s upper body a little when flat on it’s back to begin the movement of getting up and teh hips would do the rest of the bend upwards.

 Well it isn’t designed yet. I got impatient and starting working on the upper arms because I thought they would be easy to design, although having a ‘twisting’ joint between the should and the elbow is actually much harder to design than I thought it would be!!!

 I am definitely planning for it to adopt an Asimo stance when walking. It has 3 DOF hips so with a fair amount of programming and trial and error I should be able to get it to lift it’s hips in an opposing reciprocal manner, slightly when walking. Whilst this will be nightmare to ‘dampen’ the momentum when the hips come back down I won’t be at the ‘dynamic’ walking stage until I have proximity sensors on the soles. I am planning to do this so the robot can judge precisely when the feet will hit the ground and when to bend the knee slightly to absorb the step.

   I am also planning to start the walking pattern by creating a table of basic movements and then playing them back at varying speeds. I am still working on the programming to do this but it shouldn’t be too difficult given time.

 

 

Thanks very much for the

Thanks very much for the suggestions. Yes it can lift it’s legs up when the hips are held up. I think the gears are strong enough to hold it’s weight up. I am designing it to be able to hold a full torsoe of weight which could get up to around 5-7 KGs. I can’t really demonstrate it lifting weight at the moment because I am using a power supply rather than batteries. Unfortunately the power supply goes up to 4 amps at 12 volts and when I try to go from a full squat up the standing the supply just cuts right out. Each joint on it’s own can draw 2 amps as each joint uses one full L298 with both channels twinned. I am planning to use a couple of larger hobby 12 volt Lipo batteries to get the power needed for it to go up from a crouch. This is just for legs. I am planning for the arms to only use one channel each on the L298s.

 

  And hey, I value everyones opinions and feedback because it will always help in the long run. :slight_smile:

I’ve been tempted to do a simlar project in the past lol.

I’ve been tempted to do a similar project in the past with the help of my 3D printer and everything. Here is what is stopping me. I want to design an actuator for the purpose of building a robot exactly like that. I would like the actuator to be able to absorb shock like human muscles do. Unfortunately I don’t have the time or commitment to do that kind of project. I have too many projects I need to do. Thanks for the inspiration though!!!

Nice project . i looks like mega hours of work so far.

Hi. What is the current status of this project. It’s an interesting one.

nice project and very challenging.
I also wanted to print my robot, but this takes a long time, too much time to stay in your $ 1000 buget, I personally decided to switch to lego technic to make the prototype, later that everything works I’ll do it in aluminum or fiberglass.