Gripping an object

I don’t have my robot arm yet but I’m thinking about the way servos work (I’m moving from time based motors controlled using a rapsberry pi).

If I want to grip an object, I presume I would tell the gripper to move to a certain value, what happens if the servo cannot physically move to that position because the object width prevents it? Or am I supposed to calculate the width of the obejct first and only move the gripper to a value that holds it snug?

If the servo cannot physically move to a position because the object width prevents it then something will break; either it be the servo, bracket, object, whatever.

To prevent this from happening you could either calculate the servo value required so it sustains the same grip (limited in my opinion) or you could add a force sensing resistor that will read its own value based upon pressure exhorted and then off set that value to the servo telling the servo to either stop gripping or grip more.
lynxmotion.com/p-627-force-s … istor.aspx

I see, so all the videos I see of the AL5x picking up objects, stacking them etc, all use pre-programmed grip values as they know how the big the object they are picking up is. E.g youtube.com/watch?v=DuNWYh9inwI

Nope… not pre-programmed values… that there looks like the force resistor reading the values and making the gripper stop once it feels its gripped it.
Capture.JPG

Ah I see, awesome :smiley: Might have to see if I can incorporate this into my python script thank you! Does that force resistor connect to the SSC-32 and can be read from that?

yes it does… here is the tutorial on how to connect it up.
lynxmotion.com/images/html/build129.htm

:wink:

Wow very helpful thank you! One final question about servos. They do automatically stop at their limits right? So I give it a move command to a base servo to move outside of its rotation it will just ignore it? Or will it click the gears attempting to move?

Servos are controlled with a 5vdc positive-going variable pulse width that repeats every 20mS. The pulse length determines the servo output shaft position but the 20mS frame rate is not position critical. The frame rate does need to repeat at least every 20mS or it will lose power or even stutter. The servo was designed for pulse widths that vary from 1.0mS to 2.0mS, where 1.5mS is centered. In the normal range the servo will move +/- 45 degrees from the centered (neutral) position.

Most servos can be positioned to around +/- 90 degrees from neutral by expanding the range to 0.75mS to 2.25mS. However, care must be taken to avoid commanding a servo beyond its capabilities. Personal experience with Hitec servos reveals all of the standard size servos can achieve a full 180 degree range. Micro and special purpose servos are often limited to less than 180 degrees.

Hitec digital servos are a special case. They only recognize a range of 0.90mS to 2.10mS and will only provide a +/- 70 degree range of motion unless the end stops are changed with their servo programmer. When I change the range of a Hitec digital servo I simply set the left and right end stop values to 200. This provides a full 180 degree rotation but still uses the 0.90mS to 2.10mS pulse range. Another anomaly with Hitec digital servos is they do not require constant updating to hold position. Once a digital servo has received a single positioning pulse it will hold position until it is powered down or receives a new positioning pulse.