Z-axis arm3 precision

Shop Forum Sixi Robot Arm Z-axis arm3 precision

  • This topic is empty.
Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
  • #6027

    There is another Arm3, in Italy. Plexiglass, laser cutted, stepper 1.8°, mega+ramps.
    It works well, but the precision in the z-axis is a problem.

    I put this g-code:
    G01 X20 Y0 Z10;
    The end-effector is at 9.4mm from the floor

    I put this g-code:
    G01 X40 Y0 Z10;
    The end-effector is at 10.3mm from the floor

    If I use a pen or something else this is a problem.

    Can you try with your arm to understand if it is only a problem of my arm?
    Any suggestion?

    Thanks Dan for your amazing work.


    Re-measure the length of each arm.

    You’ll get a difference in position if they mechanical reality does not match the software.


    Thanks Dan. I can try to measure all the elements, but can you help me with these measures:
    #define BASE_TO_SHOULDER_X (5.37) // measured in solidworks
    #define BASE_TO_SHOULDER_Z (9.55) // measured in solidworks
    #define SHOULDER_TO_ELBOW (25.0)
    #define ELBOW_TO_WRIST (25.0)
    #define WRIST_TO_FINGER (4.0)
    #define FINGER_TO_FLOOR (0.5)
    #define STEP_MICROSTEPPING (16.0) // microstepping
    #define MOTOR_STEPS_PER_TURN (400.0)
    #define GEAR_RATIO (5.0)

    Base to shoulder_x ? Measured from?
    Base to shoulder_z?

    And what about the calibration? Measured starting from??
    #define HOME_X (12.850) // WAS 13.05
    #define HOME_Z (22.2)

    Thanks for your help


    Sure. Each of these numbers is pulled from the solidworks model I used to create the laser cut parts.

    Everything from the tip of the arm to the pivot of the shoulder happens in a single plane – you could cut the robot in half along a sheet of paper or draw it out flat. On that plane, the (0,0) is the bottom of the arm on the table.

    base_to_shoulder is the distance on that plane from the base to the shoulder/bicep joint

    The next three are all based on the distance from one pivot point to the next.

    Finger_to_floor is the distance from the pivot point at the bottom of mechanical part of the wrist (the wood around the pivot point).

    Now that I think about it, I suspect what’s happening is the limit switch is ever so slightly not in the right spot. eg, by adjusting the HOME_* values, you’ll get better results. I haven’t worked out a great way to calibrate this, so I’d be very interested to follow your results.


    I have the same problem, I still do not understand the “base”, were is precisely located.
    pratically, I do not know how to measure “BASE_TO_SHOULDER_X” and “BASE_TO_SHOULDER_Z”

    My problem is that the movement on the Z axis arm is very inaccurate with any pair of values for above mentioned variables.

    I found that my HOME_X = 15 and HOME_Z = 18

    If I send commands like “G28” the arm back home correctly,

    subsequently, with the command “G01 F800 X35” I have a shift (35cm – HOME_X) = (35cm-15cm) = 20 cm. This command is ok,

    and subsequently again, with the command “G01 F800 Z25” I should have a vertical displacement of (25cm – HOME_Z) = (25cm – 18cm) = 7cm, unfortunately I get a vertical displacement of Z = +3cm instead +7cm, but also I have a further X displacement of +3cm more.

    I use a RAMPS and I controlled that I don’t have loss of steps.

    Can You help us, please.

    Sorry for my bad english!


    I believe base to center will have little effect on the precision of the arm and should not be modified. the HOME_* values, however, will make a big difference.

    Because the limit switches are very close to the shoulder a small position error here is magnified at the wrist. HOME_* values need to be tweaked to find the correct home for your machine.

    I have not come up with a great way to calibrate the HOME_* values – I still use trial and error. One method I want to try is to put a probe (sensor) on the wrist and let it touch a mark on the table that is X cm away from the arm. When the probe touches the table at the mark it knows an X and a Z value and it is a better known location than touching the limit switches. From there it could back up until it hits the switches and record the actual HOME_X and HOME_Z values for your specific machine. A probe could be as simple as an extra limit switch mounted on the bottom of the wrist.


    I’m sorry, but I still do not understand.

    The “base” where it is located? On the table? In the center of rotation of the Y axis? On the gear of the Y-axis?
    If we suppose that it is located on the table (floor), I can understand how to find BASE_TO_SHOULDER_Z (is the vertical distance from base to shoulder),
    but I do not understand how to measure BASE_TO_SHOULDER_Xl Is the distance from shoulder to where?

    About the value HOME_* I initially thought they were the initial values of start ​​for which, if I send a command “G01 X15 Z18 F800” the arm doesn’t execute no movement! So I found the values reported.
    If this is not so, I absolutely not understand the meaning of these values.

    According to your instructions I should put a sensor on the wrist to move the arm until the wrist do not touch a point, X cm away from the arm, that I establish as “Home”. (what point of the arm? The Shoulder? The center of Y-axis?) .
    But how I do move the arm, with what initial parameters of HOME_* ? I could move the arm with some consecutive try of G commands, without utilize the probe.

    And then, how do I measure the new parameters recalculated from the sensor? From where to where? From the point touched by probe to where?

    I’m sorry, but I’m really frustrated for this thing and I need that arm works well for the end of month!

    Thanks for your kindly attention.


    base is a point in the middle of the square that’s on the table. base_to_shoulder_z is the height up to the middle of the shoulder bolt. If you drop a line straight down from that bolt center to the table, the point of contact would form a circle as the arm turns. the radius of that circle is base_to_shoulder_x. I got both numbers from the solidworks model of the arm.

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.