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