We spent last week working on legü, our lifesize, robotic LEGO. On Monday we finalized a print which allows him to finally move! legü, can now swivel his head to and fro and is proudly perched in our storefront window.
This project has moved from concept to reality one print at a time, and it has been a lot of fun to see it come to life. We are tackling a lot of of new-to-us concepts such as: gear types, gear ratios, servos, the integration of bearings and smooth rods, “components” vs. “bodies” within Autodesk Fusion 360, and deciphering how to print parts that are too large for our print bed. A lot of this means we are constantly reprinting parts! To print the extra large pieces, we have to cut them into parts and then put them back together, somehow, after the printing is done. So far we have used a combination of magnets and super glue. legü’s head is made from three sections: the top nub, the middle face, and the bottom neck.
Learning how to use “components” within Fusion 360 allows for a more comprehensive design and means we can also make “exploded views” like the image below!
This animated GIF shows the head, neck, and neck base. The neck consists of the green object, grey servo (rectangle looking thing), smooth rod with two bearings, and two yellow spur gears. The neck base is the grey object on the bottom which will reside within legü’s chest.
So far most of the time spent creating legü has been waiting on parts to finish printing. For example, the green object which acts as the base of the neck took 3 hours to print and we printed four iterations! It can be a challenge to wait that long for a print, take the time to assemble the parts, and then be confronted with this bewildering behavior like this!
We were expecting legü to slowly pan left-to-right, but instead he seemed to be shaking his head “no” with each turn. We spent quite a bit of time debugging this and determined legü’s head is simply too heavy for quick movement using this particular standard servo. Servos have very little finesse; there is no throttle control. When you tell the servo to move to a certain position it will move to that position as quickly as possible and stop. But in our case, legü’s head, while mostly hollow, appears to be too heavy. The weight of the head generates inertia that the servo is not strong enough to handle - the servo moves to the desired position as quickly as possible and when it stops the inertia generated by legü’s head causes the servo to turn just a bit more before actually stopping. And since the servo has turned a bit more than it should it “bounces” back to the planned stop position. It’s a bit like spinning someone on a small merry-go-round and then trying to stop them immediately. The force you exert attempting to stop the spin will cause the merry-go-round to stop, but sometimes right after it stops you will cause it to turn a bit in the opposite direction. We tried a few different coding work-arounds to address this “bounce” and finally found that if we swivel just a tiny bit the “bounce” affect is minimized. So, now we turn a tiny bit, stop, wait a few microseconds, turn a tiny bit more, stop, wait a few microseconds, and repeat until we’ve turned the head as far as we want. Fun!