I have mostly finished printing the inmoov head and began experimenting with my ezb controller and software. One of the first things I want to achieve was tracking a person.
When my robot isnt tracking a person, he will look around randomly with his eyes and regularly turn his head in the direction he is looking.
When he finds something or someone to track, I use the ARC built-in servo tracking for the eyes, which was a breeze to setup. But humans will turn their head towards the person they are talking to, so I wanted to mimic that. I couldnt find an easy way to do it, so I just scripted it. A bit tricky because rotating the head throws off the servo tracking, its usually too slow to follow, so whenever I rotate the head, I pauze the built-in servo tracking and manually turn the eyes to compensate for the neck rotation.
I also wanted to avoid servo buzzing, so I release the servo after each movement. I learned the hard way that releasing the servo makes EZB forget its position and reset the speed, so I store the position in a variable before releasing, and everytime I re-attach a servo, I first move it to this last known position (which shouldnt cause any movement), so I can set the speed, and then do the actual move.
In the end, it all kind of works. For some reason the neck servo will still occasionally jerk violently but that may be a problem in my code.
I made a short video, replaced the head tracking with color tracking to it followed the camera, despite very poor lighting conditions in my study:
All in all, Im pretty impressed with the platform. Its both easy to use and doesnt seem to impose significant limits on what you can with it.
you are using the old servo's.its much better whit the new HDD servo's.
also you can choose the speed of your servo's,excample.
servospeed (D0,2 ) the higher the number the slower the servo.
@vertigo
What's happened to the gold top of inmoov's head which is on your Avatar? Did you reprint it to white?
I like the gold color, it looks metallic!
As Nomad has said, if you use the HDD servo's from EZ-robots you will NOT get any buzzing at all. But their the standard servo size, and i assume your using the 805BB or equivalent large servos?
Chris.
?
Im not using ezr servos. The neck servo is a huge 25KG one, EZR doesnt have one that big. But you can adjust speed with any servo, although I would like some finer control over that, EZB speed settings are pretty coarse. Finally, for the neck, Im actually controlling my own speed as I move the servo through code one step at the time. The delays in that software loop determine the speed of the servo, which will me allow some control over acceleration and deceleration later.
I modified my inmoov neck to 'Drupp' design, which uses 3 standard size servo's.
https://www.thingiverse.com/thing:2059967/files
Chris, I sanded the parts and applied primer. No paint yet. The gold was just left over filament (super cheap filament btw, from aliexpress of all places, and it prints perfectly). I can always paint it gold later, but I havent decided on a color scheme yet.
The head rotation servo is indeed a giant scale servo. Part of the reason it buzzes is that there is still too much mechanical friction, I need to do some more sanding and lubing
My neck doesnt move yet. I have begun printing the parts, but thats a while off still. Im talking about the yaw servo. I know some people use standard size for that, but the head is so heavy, its probably not a bad idea to use larger ones. Im seriously thinking about modding it to use nema steppers.
Always good to see another InMoov project here. Your joints are making a lot of noise - you need to sand and lube them so they run smoothly. The servos are making noise because they are under load. If your joints are tight/rough, the servos may not be able to reach there position. Try using some white lithium grease on all the joints and gears. When you get everything running smoothly you won't have to release the servos. I see in your video you're using that useless power base,as you called it in another post - how's it working out for you?
Yeah I think I need to sand down those fittings even further (Im already using ball bearing grease), but it may also be due to my temporary head stand: the head is tilted upwards, that means if the head turns sideways, some of the weight of the (unbalanced and pretty darn heavy) head will put torque on the yaw gears, I dont think you can avoid that. I just commented out the servo release code, and it buzzes mostly when its off center.
Still tempted to try standard nema stepper motors and possibly where needed, timing belts. That may stretch my cad abilities, but when I look/listen to my 3d printer steppers, they are inaudible, fast, strong and super smooth. I also really want control over acceleration/deceleration as that will make all the difference between smooth lifelike and jerky movement. Last year I worked on a glider instrument, a vertical speed indicator. I began with the best servo money could buy, but quickly switched to a micro stepper and the difference was day and night. The lack of absolute positioning can be solved using some sort of end switch, microswitch or optical switch.
As for the power base... heh, I still maintain its pretty darn useless I made it a little less useless by drilling some holes and soldering an XT60 in to it, but I could have done that directly to the controller case just as well.
Hi Vertigo - I miss the chrome dome.
I think you will find the NEMA stepper motors to be way to heavy. Unless you have a different kind in mind. They will then need a gearbox to make any appreciable torque. I've really been playing a lot lately with different actuators for a walking quad. I am slowly coming to the conclusion that brushless motors are going to be the way to go, at least for me. The power density/weight requirements lead me there. They will also require a geardown of some sort though.
Had the same issue with the power base. Designed up a mounting bracket for it here;
www.thingiverse.com/thing:2501214
Yeah, nema steppers are heavy, that is a fair point. Instead of gearbox I was thinking of timing belts. For the head yaw that would be easy enough, but for things like arms and neck movement that may be tricky to pull off.
So brushless motors you say hmm.. usually when you need torque they say brushed is the way to go. But they are a pita to work with. Have you considered or tried brushless gimbal motors? They are not the strongest motors out there, but they are designed specifically for torque and have really low Kv. Something like this: https://hobbyking.com/en_us/turnigy-hd-5208-brushless-gimbal-motor-bldc.html
No torque numbers are given, but the one I linked is designed for a camera up to 2 Kg . edit: some good info on these motors here: http://build-its-inprogress.blogspot.com/2016/01/motor-characterization-for-small.html
But Im not entirely sure what to make of those numbers. At first glance I would say a reduction is still going to be needed and something more powerful may be needed for most joints.
BTW, I discovered the source of my jerking is not in my code; it also happens when I just loop some movements, and it seems to be caused by the ezb "skipping a beat", possibly when the wifi glitches for half a second or second. This is a little worry some, bad things could happen if you use continuous rotation motors (modified servos, steppers or brushless motors). For something like an inmoov it appears it may be necessary to add some arduino's, and upload movements/positions from the ezb to the arduino so there is no chance of ignoring limit switches or overshooting position targets when the ezb or the wifi takes a nap.
As for the missing gold. It may partially return. My current thinking on color schemes:
https://i.imgur.com/rzaLw80h.png