Z-axis arm3 precision
Shop › Forum › Sixi Robot Arm › Z-axis arm3 precision
- This topic is empty.
2014-08-25 at 15:15 #6027AnonymousInactive
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?
Thanks Dan for your amazing work.2014-08-25 at 19:18 #6757AnonymousInactive
Re-measure the length of each arm.
You’ll get a difference in position if they mechanical reality does not match the software.2014-08-27 at 16:35 #6758AnonymousInactive
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)
#define STEPS_PER_TURN (MOTOR_STEPS_PER_TURN * STEP_MICROSTEPPING * GEAR_RATIO)
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 help2014-08-28 at 20:10 #6759AnonymousInactive
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.2014-09-08 at 12:49 #6760AnonymousInactive
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!2014-09-08 at 16:40 #6761AnonymousInactive
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.2014-09-09 at 08:44 #6762AnonymousInactive
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.
Ferdinando2014-09-09 at 16:27 #6763AnonymousInactive
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.
- You must be logged in to reply to this topic.