Long robotic arm (100+ cm)

Hi Guys,

I need to design long robotic arm-let say the arm needs to be able to reach object that are 100-150cm away.

I have huge servos(0-180 degree) that are with more then 200kg. cm of torque.

The problem is that the servo step is 1 degree and when my arm is long let say 100cm then my arm will not be accurate at all->one step more then 1cm. My target is 1-2-3mm.

I don't want to use some sort of gearbox because it will slow down the arm-the arm needs to be fast and accurate.

Is there any good design for such arm that can solve my problem-long, fast and accurate or my only option is stepper motor with microstepping?

Thanks
Anton

Have you tried using servo.writeMicroseconds()

How many degrees of movement does your arm need? For example if it only needs 90deg and your servo can move 180 deg you could use a lever to give you 2:1 gearing.

...R

Robin2:
Have you tried using servo.writeMicroseconds()

How many degrees of movement does your arm need? For example if it only needs 90deg and your servo can move 180 deg you could use a lever to give you 2:1 gearing.

...R

I can't :frowning: my servo is 0-180 and I need 0-180 to handle the task:(

tonko_lonko:
I can't :frowning: my servo is 0-180 and I need 0-180 to handle the task:(

But you did not say whether you have tried servo.writeMicroseconds()

...R

tonko_lonko:
Hi Guys,

I need to design long robotic arm-let say the arm needs to be able to reach object that are 100-150cm away.

I have huge servos(0-180 degree) that are with more then 200kg. cm of torque.

The problem is that the servo step is 1 degree and when my arm is long let say 100cm then my arm will not be accurate at all->one step more then 1cm. My target is 1-2-3mm.

I don’t want to use some sort of gearbox because it will slow down the arm-the arm needs to be fast and accurate.

Is there any good design for such arm that can solve my problem-long, fast and accurate or my only option is stepper motor with microstepping?

Thanks
Anton

Please put numbers on things like “fast”, “accurate”. What is the moving mass? Are you intending
some sort of counterbalance on the shaft?

Robin2:
But you did not say whether you have tried servo.writeMicroseconds()

...R

The
Problem is not related to the code- its related to the mechanics- my arm is too long and every single degree on the motor causes the gripper to travel more then 1cm.I guess that I need something like splitting this movement between two servos or some sort of micro stepping ..

Thanks
Anton

MarkT:
Please put numbers on things like "fast", "accurate". What is the moving mass? Are you intending
some sort of counterbalance on the shaft?

My gripper /100cm away from the main(horizontal) servo/ needs to be able to to move items and place them with 1-2-3 mm precision- currently using standard arm design I will not be able to get less the 1cm precision.
My arm needs to be very fast -no more then 200 -300 msecs for 90 degrees. Its rated 120msec for 60degrees.the gripperr with the arm are all aluminum so they will be 1-1.5kg max which should be fine for 200+ kg. Cm servo motor

Again, as Robin2 asked, have you tried servo.writeMicroseconds?

What type of servo do you have? Is the servo compatible with typical hobby RC servos? If so, the below servo test code uses both degree and microsecond commands.

// zoomkat 12-25-13 serial servo test
// type servo position 0 to 180 in serial monitor
// or for writeMicroseconds, use a value like 1500
// Send an a to attach servo or d to detach servo
// for IDE 1.0.5 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.

#include <Servo.h> 
String readString; //String captured from serial port
Servo myservo;  // create servo object to control a servo 
int n; //value to write to servo

void setup() {
  Serial.begin(9600);
  myservo.writeMicroseconds(1500); //set initial servo position if desired
  myservo.attach(7, 500, 2500);  //the pin for the servo control, and range if desired
  Serial.println("servo all-in-one test code 12-25-13"); // so I can keep track of what is loaded
  Serial.println();
}

void loop() {
  while (Serial.available()) {
    char c = Serial.read();  //gets one byte from serial buffer
    readString += c; //makes the string readString
    delay(2);  //slow looping to allow buffer to fill with next character
  }

  if (readString.length() >0) {
    Serial.println(readString);  //so you can see the captured string 

      // attach or detach servo if desired
    if (readString == "d") { 
      while (digitalRead(7)) {} //delay loop until pin 7 is low
      myservo.detach(); //detach servo
      Serial.println("servo detached");
      goto bailout; //jump over writing to servo
    }
    if (readString == "a") {
      myservo.attach(7); //reattach servo to pin 7
      Serial.println("servo attached");
      goto bailout;
    }    

    n = readString.toInt();  //convert readString into a number

    // auto select appropriate value
    if(n >= 500)
    {
      Serial.print("writing Microseconds: ");
      Serial.println(n);
      myservo.writeMicroseconds(n);
    }
    else
    {   
      Serial.print("writing Angle: ");
      Serial.println(n);
      myservo.write(n); 
    }

bailout: //reenter code loop
    Serial.print("Last servo command position: ");    
    Serial.println(myservo.read());
    Serial.println();
    readString=""; //empty for next input
  }
}

If long, yet fast, yet accurate, yet repeatable robot arms were easy, then everybody would have one.

And people would use them, for laser cutting materials, or plotting building plans, or 3-D printing... and they don't. They use tables with X-Y positioning.

You may need to rethink your requirements.

Good, fast, cheap, chose any two! Below are some larger robotic arms for ideas.

https://www.marginallyclever.com/shop/robot-arms/palletizing-robot-1

tonko_lonko:
my arm is too long and every single degree on the motor causes the gripper to travel more then 1cm

Why are you finding it so hard to tell us whether you have tried to move the servo a fraction of a degree using servo.writeMicroseconds() ?

...R

tonko_lonko:
My gripper /100cm away from the main(horizontal) servo/ needs to be able to to move items and place them with 1-2-3 mm precision- currently using standard arm design I will not be able to get less the 1cm precision.
My arm needs to be very fast -no more then 200 -300 msecs for 90 degrees. Its rated 120msec for 60degrees.the gripperr with the arm are all aluminum so they will be 1-1.5kg max which should be fine for 200+ kg. Cm servo motor

What is the mass being moved by the arm - that will contribute most to the required
torque.

It sounds like you will need a high power servo motor, moving something with 1 kg m^2 of
MoI at an acceleration of 70 rad/s/s or so suggests a torque of 70Nm with a power of 380W.

Learn the basic equations of mechanics, they will serve you well - there is no way on earth a
hobby servo has anything like enough power or torque to do this job, this arm is serious
robotics.

Robin2:
Why are you finding it so hard to tell us whether you have tried to move the servo a fraction of a degree using servo.writeMicroseconds() ?

...R

I haven't because the order is still not dispatched and I expect to get the servos in one week.however based on the seller description the servo resolution is 1 degree.I hope that he is wrong and the actual resolution is 1 microsecond (0.18 degrees) but I doubt. Thanks for your suggestion I really hope that the resolution is 1 micro and not one degree.

MarkT:
What is the mass being moved by the arm - that will contribute most to the required
torque.

It sounds like you will need a high power servo motor, moving something with 1 kg m^2 of
MoI at an acceleration of 70 rad/s/s or so suggests a torque of 70Nm with a power of 380W.

Learn the basic equations of mechanics, they will serve you well - there is no way on earth a
hobby servo has anything like enough power or torque to do this job, this arm is serious
robotics.

The servo is not hobby servo.its more then 200 kg.cm and this mean that I will able to move 2 kg at the end. The objects(payload) are 40-50g max.The construction will be all aluminum. I was looking at some suggestions for best arm design for my goal I.e Delta, Scala etc...

I feel like I need to read this thread in reverse. First you need to pick a mechanism, then you need servos delivered and then you need advice on accuracy. Actually there's a whole lot of steps missing in that list.

What is the goal? Why does it have to be fast? What is the real accuracy? (I think this has been answered adequately already in post #6) What range of movement? Are all these unspecified "items" within a 90 degree arc of the base? Does the robot have to lift things "over its head"? Do you even have a gripper picked out?

Look at industrial robots. There must be a million videos on YouTube. They look totally unlike university research robots. They look like odd mechanisms because that is the ideal way to get the performance required for the task which that robot does. Find a robot that does a task similar to yours and copy that mechanism. The robot which can just pick up items and put then straight back down looks quite different to the robot which has to rotate the items as it places them down.

Think about counterbalancing your robot so that the servo doesn't have to lift the main weight of the arm. You can even use parallelogram linkages to balance the 2nd link in the arm back at the base.

And after all that, it may be the wrong approach. Instead of building an infinitely stiff arm, perhaps some vision feedback can help get the "item" to the desired location.

tonko_lonko:
I haven't because the order is still not dispatched and I expect to get the servos in one week.however based on the seller description the servo resolution is 1 degree.I hope that he is wrong and the actual resolution is 1 microsecond (0.18 degrees) but I doubt. Thanks for your suggestion I really hope that the resolution is 1 micro and not one degree.

I wish you had told us up front that this is at the moment a theoretical problem. You would probably have got advice that was a lot more useful.

In line with what @MorganS has said it is silly to embark on a detailed design without understand the capabilities of the components you plan to use. Perhaps / probably hobby servos are not suitable for your project, or at least not when used in the way you envisage.

...R

200 kg-cm is 20Nm, and you need maybe 70Nm. That sort of acceleration peaks the speed at 70 rad/s
(700prm) using about 400W. Is your servo able to handle 400W? What voltage is it?