I recently wrote post about my first contact with Lego Mindstorms NXT 2.0 and building robot vehicle. After several version I decided to disasseble vehicle and to build humanoid robot. It was a challange of a different kind. Most of people knows how to control vehicle. Espetially vehicle with continuous tracks, as tanks has. But humanoid and human-like body is much different. We all have it, we all control it, but we actually hardly know how we do that.
I must admit that it was tought decision to disassemble already built and quite smart robot, but I had to do it, to get to this callange.
Thankfully for this I got instructions. When you buy Lego Mindstorms NXT 2.0 you got development kit powered by LabView, with 3-4 robot models with building instructions. One of them is humanoid. I sad thankfully, because when you are building a vehicle, basicly you know how to build it, what are main parts, and how most of parts to assemble. When building humanoid there are some problems like static. You definetlly don’t want your robot to fall when he walks. Legs are actually main part. It is quite complex to satisfy statics requirements. Every leg contains one servo motor and a touch sensor. Also legs needs to have moving parts, so robot can walk. Third servo motor is used for torso movement and palm opening. It has quite complex logic how with one motor to move whole torso and open palm. If torso moves right, left palm is opened. If torso moves left, right palm is opened. Over one hand robot has color sensor, that is used for things that robot has in hand. Head is made using ultrasonic sensor. Main part of Torso is NXT brick.
When it is time for programming most of problems comes out. First problem is to make your robot walk. In most cases your robot won’t walk at all, but it will move it’s legs, dance or do some wierd steps, but in place. To make robot walk you need to put motors on 0,5 rotation difference in way that one motor is poped in front, and the other one is back. Then if you sent both motors to move on same speed, you will have movement. Second problem is turn. This problem I don’t have completly solved, but I have some turning. I just use one motor and one leg movement. It turns very slowly and unnaturally, but it turns. That is at the end most important. What my robot is programmed at it’s very first simple version is to check ball color at hand. If it is green it will start moving, and throw green ball away. If it sees some obstivle it will turn and continue moving, until it got red object in hand with sensor. Then it aligns motors on start position and stops. Here is short video how it performs.
I hope to build it smarter, and to make it walk more naturally. Still he is quite far away from perfect and natural. It can just walk, say few words, turn on one side and move it’s torso to drop the object he is holding. I think I will be playing with this humanoid robot for a while. If I disassemble it, I will have to do something more chalanging, like AT walker from Star Wars. Also I hope I will try on this humanoid Microsoft Robotics, since I found some features of this Lego dev kit quite limited. Still you can build great things with it, but I see some gaps.