nOOb confused, digital servos and controllers?

Hey folks, I need to help out my GF finish up her PhD buy automating some of her lab work. Basically I need a robot arm to do repeatable tasks, so I have to avoid the cumulative error that seems to be present in analog servo robot arms.

Disclaimer: I’m a linux programmer, and don’t know much about robotics.

I’m used to using phidgets and nidaq cards for IO, but servo controllers will be new to me. I’ve got a shiny new Linksys slug running gentoo to use as a controlling computer system, and I’ve already got some test programs running on it with my phidgets lcd/interface board.

Sounds like since I need repeatable accuracy digital servos are the way to go. I don’t know measurements yet (reach, etc), but I should have those soon. Right now my brain is stuck on how to control these servos from my software (C code).

Do these super-uber amazing SSC-32 serial port controller boards allow control of digital servos? Do I need some type of digital/analog input off of my phidgets interface card to read back the current position of the digital servo?

Am I completely off in left field?

I’m kind of assuming I’ll end up with a C api to control the position of the servo, with an input back into my software I’ll poll for the servo’s current position so I’ll know when to stop moving. I’ll do all the calculations in my software to come up with the rotations for all the servos based on where I was the gripper to be in a XYZ coordinate system.

Any feedback as to where my mental image/assumptions of this is straying off? Are the digital servos (i.e. HS-5645’s) and the SSC-32 what I need to allow me to do this, or is there some other board I need to interface with the servos? I will have some phidget interface boards if I need some digital or analog inputs back into my software for digital servo position data, but it sure would be nice if the servo controller board contained those already so I could save those inputs for sensors…

Any info would be most appreciated folks, I only have a few months :open_mouth: to pull this off. I sense many long nights of coding/cursing sessions :wink:
Sorry for the dumb questions. Thanks a ton in advance folks.

After further googling and forum reading, it sounds like these digital servos (HS-5645MG) do not provide angular feedback to the host computer, but do monitor it internally. The only reason I needed angular feedback was so that I could keep the arm from building up cumulative error since I need the arm to work repeatedly for an extended period of time.

So, if these digital servos handle the potentiometer feedback internally, are they accurate enough to keep out cumulative error? If so then it sounds like I’d be set using the recommended digital servos on the page and the SSC-32 to control them.

Thoughts? Ideas? Words of wisdom?

All servos, both analog and digital, are closed-loop within the servos themselves, and will return to the same position (within some very small margin of error) when fed the same control signal. Both types use an internal pot to read their current position, compare that to the signal that they are receiving from the servo controller, and respond accordingly. I have never experienced “drift” in working with servos, and I’ve only ever worked with analog units.

As I understand it, the main difference between the analog and digital servos is that the digital ones have a higher refresh rate, and will hold a position a bit more reliably under load, but only to the extent that the inner workings aren’t overtaxed; I believe that others on this forum have reported that one model of digital servo in particular is more prone to overheating than the others, but I can’t recall which one it is. Digital servos also have a few other features, allowing you to tune how they respond to the input signal, but other than setting the extreme endpoints, I believe that most of that can be handled in the software that’s feeding the servo controller board.

Hope this helps!

Thanks for the tips. It sounds like using as much metal versus plastic parts/gears, minimizing the number of parts, and using powerful digital servos should be good enough (oh, and making sure my math is right in the software…) should be enough for my purposes. I’ll start taking some measurements this week in the lab to get a better idea of distance this arm will have to reach and start spec’ing out an arm and servo configuration. I will definitely be posting some reality checks before I start buying stuff.

Analog and digital servos used in the arms are closed loop. They don’t have cumulative errors. Cumulative errors are present in things that do not have feedback, where you tunr on a motor for x amount of time and hope it got to the desired position.

Sounds like those 5645’s should work out nicely then. Maybe a bit overkill, but then again I can increase the aluminum tube length to get further reach. Maybe some nice 6" tubes on the arm and the 5645’s. Gotta get them measurements this week. Thanks a ton for the info folks.

Hmm, I’m curious. If I order the 6-pack of 5645’s, I should have an extra or two for making the arm. I see that dual servos are used for the “shoulder”. Can you use dual servos on any of these hinges? It looks like you should. I’d imagine you don’t need too much horsepower for rotating the base, so one 5645 should be fine there I’d think, but two at the elbow might not be a bad idea if I’m gonna use 6" tubes yes? Or does the metal base need significant servo power too?

I’m getting measurements tonight, hopefully I can get away with something shorter than 6" tubes on the arm. I’d imagine that helps out the servos significantly.

I’d prefer to use all the 5645’s for the shoulder/elbow/base and use smaller lighter ones for the gripper, and ultimately the wrist.

Anyone know the range of the metal arm base? It doesn’t say on the description page, and a forum search didn’t seem to turn up anything.

So the big question is, if I’m using the recommended 5645’s, and I do have to use 6" tubes, will I be able to lift a test tube (small one) with liquid in it? I’m sure that doesn’t weigh much, but if the arm has to do some reaching…

The range is limited by the servo, not the base assembly. All analog servos have 180°, and the digital ones are more like 140° right out of the box. They can be programmed for 180° if required.

I would recommend using HS-645 servos rather than the 5645’s at least in the shoulder where they are in parallel. Two analog servos get along beter than two digital servos when used in this fashion.

An arm with 645s should lift a test tube with little trouble. The good thing about the Servo Erector Set is you can change out a small tube for a couple dollars to fine tune the assembly.

Thanks again for the tips, I look forward to getting this project going (asides from all the hair pulling I’ve done getting gentoo running on my linksys slug).

You might need to consider what you expect for movement accuracy. The expected duty cycle might also be important.

Turns out my girlfriend paints a poor picture as far as system requirements go. When I went in to take measurements last night it became readily apparent that an arm is not the most appropriate mechanism for this project.

I need something more like a line plotter (moving around an X & Y plane, about 20" x 20"), but with a number of pipettes (en.wikipedia.org/wiki/Pipette) attached to it, and then dip the pipette into the test tubes, and extract a sample). I’ll move my threads out of the arm forum. Thanks folks!