It’s been a while since posting about the InMoov robot hand I started building last year. Previously I had everything assembled and was using some direct controls in Grasshopper (plugin for Rhino) to test and tweak the movements of the fingers and wrist (click here to see the last video). That was fun, but not as fun as being able to control the fingers wirelessly from across the room!
Using MIT App Inventor, I’ve created a very basic mobile app that now allows the fingers and wrist to be controlled on my phone using a Bluetooth connection to the Arduino board. It’s nothing fancy right now, just some simple sliders that control the servos, but now that the basics are working some more automated movements could be set up eg. by using the built-in sensors of the phone, movements could be controlled by simply tilting the phone.
In order to display the working InMoov hand at the CreateWorld Conference last year, I also built a display box from plywood since the arm is not really attached to anything and there are a lot of electronics dangling around that are a bit too messy for display. It actually makes moving the hand around and working on it quite a bit easier now since it’s raised up as well. If I had files for this case I would share them, but I went old-school for this one and just created it freehand with a jigsaw – I’m not completely reliant on digital manufacturing (yet!). Inside the box on the right are all the messy electronics, and a hole for the Arduino USB cable to reach through to connect to computer when needed.
I’ve also 3D printed a stamp with my name and the edditive logo to “tag” this project. Using 3D printing to make custom stamps is something I wrote about in one of my first ever blog posts, click here to take a trip back in time. It’s always the little details that bring a project to life for me.
Yes finally the InMoov robot arm I’ve been slowly printing and assembling is complete and functioning with only the occasional little hiccup. I thought I was really close in my last post where I had assembled all the 3D prints and electronics, but it is definitely the last 10% that takes the most work.
Tensioning the braided lines just right and tying them to the servo’s is a painstaking task, especially in the heatwave we’ve been having in Australia, where you’re trying to resist the urge to wipe sweat from your face while you tie the knot just right… I felt a bit like a surgeon out in a humid jungle performing emergency surgery. A few little broken bits along the way as well from prints splitting or glue not holding, so it’s a relief to finally iron out all the kinks and start playing with the controls.
As you’ll see in the video, I’m using Grasshopper (plugin for Rhino) with the addition of Firefly to control the hand movements at the moment – if you’ve followed my blog for a while you’ve seen multiple demo’s of this software and why I think it’s so good, so I won’t bore you here (if you’re interested check out my project which was displayed at Design Philadelphia 2015). But it basically means I can manually adjust the servo’s in real-time using a simple slider for each finger, or connect fingers to the one slider to control them all at once and create a fist for example. It really makes those final tweaks to the servos easy.
I hope you enjoy seeing this arm come to life – it’s quite inspiring when you see it in real life, especially if you’re familiar with 3D printing and the time it takes just to print all of these parts. Now I can finally start modifying this project and experimenting with the controls, the build is only just the beginning for this robot.
Over the past couple of months my build of the InMoov robotic arm has continued to progress slowly in the background, until now I find myself near the end. So about time for a little update on the build since my last post where I only had the arm and wrist pieces printed and partially assembled.
Now that the hand and fingers are assembled this is really starting to look cool, with a good range of movement and nice details controlling these movements. Let me say (if I haven’t before) that this is really not a project for the feint of heart – sure you might get lucky and be able to 3D print all of the parts without a hitch (although if you 3D print as much as me you know that for all of these successful prints assembled into the hand, there are many more failures!), but much of the challenge is in having the tools and patience to assemble them together properly. Each joint has needed filing, drilling of holes, gluing, even some acetone to clean up some of the rough surfaces to save reprinting, and of course these processes have been repeated numerous times. But that’s what I love about a project like this, you get to understand how every piece works.
Threading the Spectra braided line (I found a roll of 180lb 0.7mm Spectra quite cheap on Ebay) again requires the patience of a surgeon and a nice pointy set of tweezers, but I’m really loving how I can already start manually controlling the fingers by pulling on the lines. When doing this I found that some of the fingers were stiff and required a lot of force to move, so again you need to be prepared to take things apart and file them down before gluing anything into place, or the servo’s just won’t cope. I’ve found a little bit of lithium grease to be useful to help prevent binding of a few of the joints, but most of them are working quite smoothly without, pinned together with 3mm filament as suggested in the build instructions (so simple if you have access to some of the larger diameter stuff).
Next step is to connect the Spectra lines to the servo’s, which I’ll admit I’ve been nervous about since getting this right is critical, and then it should be up and running! I’ve bought an adjustable power supply to give the servo’s the power they need, seems like they can draw a lot of current when they move, far more than the Arduino/computer can give, so hopefully my next post will have a video of it moving 😀
The 6 servo’s needed to build the InMoov robotic arm/hand arrived since my previous InMoov post, and are now installed and working individually. All up they cost about $35AUD on Ebay. The Meshmixer hack for the stands I discussed in the last post also worked quite well, and luckily no other stands to mount the servo’s have needed re-printing – just a few spots of super glue to prevent any minor splitting between the printed layers. This means that most of the assembly of the arm and wrist is now complete, other than running all the lines to control the fingers (a big job I’m not looking forward to). Below is a video of the wrist movement using a MG 996 servo – sounds like it means business!
Nothing particularly exciting just yet, although it’s nice to see the InMoov showing the first signs of life (Frankenstein anyone?). As you can see I’ve connected this servo to an Arduino Uno, and am manually controlling the movements using Grasshopper and Firefly, both plugins for Rhino 3D CAD software. I’m not sure if any other InMoov makers have done this, but if you’ve followed my blog for a while you’ve probably seen previous demonstrations of how you can use what is essentially a 3D CAD program to control the Arduino in real-time, something I’m very excited about. I certainly aim to continue using this visual programming language (VPL) to interact with the arm, perhaps making it more intuitive and interactive to control. Next step: 3D printing the fingers.
Often when you are 3D printing the main thing you think about is how much support material your print will have, and you orient your print to minimise this – reducing material waste, print time and any manual post-processing to clean up the print. However sometimes the best print orientation for these reasons is not the best for mechanical strength, and I’ve just discovered this with one of the parts for the InMoov robotic arm I’m currently building (see the first collection of 3D prints in my previous post).
The “RobServoBedV6” part is where the 5 servo’s connect that control the individual finger movements, using screws to fix them in place. However some of the stands are splitting as I screw into them as shown in the photo above due to the layer orientation. Yes I could use super glue to fix them, but the split will just happen somewhere else. So I’m going to completely cut the stands away from the part, and re-print just these stands in a different orientation to improve their strength. This is where the free program Meshmixer comes in very handy, and I’ve previously published a few examples of how to use it for my friends at Pinshape – just click here to find out more.
In the top right image you can see the first step of using Meshmixer to edit the STL file. I have used the Plane Cut tool to slice away the bottom plate, and then repeat the process to remove the other 2 segments which seem to be strong enough for the screws at the moment. This leaves me with the 2 stands that I’m having issues with. These can now be exported as STL’s ready to 3D print (orientation is not important here, this will be set in my 3D print software).
I’m printing these parts as we speak on my Cocoon Create 3D printer, and have used Cura to prepare the parts and get the G-code. As you can see to the left, I have oriented the parts so that the layers are perpendicular to the original orientation, meaning that when I screw into them, the force from the screw will not pull the layers apart. Super glue will hold these replacements onto the original part really well as they are printed in ABS.
If you are designing your own parts from scratch in CAD and intend to screw directly into them, keep this issue in mind. However if you’re downloading a STL where modification isn’t as easy, knowing this simple trick in Meshmixer can really help you repair and improve a part rather than trying to re-print it from scratch and potentially use a lot of support material in a different orientation.
If you’re already following my Instagram you’ve had a sneak peek at one of my side projects – to build the arm/hand for the InMoov robot. No small project! InMoov is the world’s first open-source 3D printable life-size robot, and you can find some excellent instructions and all the files on the InMoov website, a fantastic credit to Gael Langevin the creator of this robot.
Above you can see the first 3D prints I’ve completed for the arm, all printable even on the small print bed of the UP Plus 2. Some of the prints are also done on my Cocoon Create. At a guess it’s taken about 25-30 hours of print time to get the parts shown above, and there are still plenty more to go, so this isn’t a project for the feint of heart. But it is a great challenge that combines 3D printing with electronics and some understanding of mechanics, like an advanced version of Lego.
There are other similar open-source projects out there, such as Open Bionics or e-NABLE, but I chose the InMoov because the instructions seem really clear and detailed (very important for a build like this!), and there is a good level of complexity in the movements of the hand. Check out this video to see some of the movements. Hopefully once I get the hand up and running I can have a play around with the design and the method of controlling the hand, but for now it’s just about getting the hand built and working. Keep an eye out for the progress, hopefully with some of the electronics installed once the servo’s arrive from China.