uArm Swift Pro calibration

Just received my Swift Pro yesterday and am enjoying betting to know the machine. Is there a simple calibration procedure for the Swift Pro? The default wrist position should be 90 deg. but is more like 95 deg.


I found that with mine as well (just got it today). Problem was with the servo gear in the wrist being 1 notch out of position. Proper way of fixing would be to realign the gears or the toothed shaft by taking it apart. Given that it isn’t that solid, you can also just push it slightly past its limit an realign it - you’ll hear a click. Obviously don’t want to do this very often or you’ll wear it out or break something.

Given how easy it was to shift, i’d say that it could have simply gotten that way during packing or when you assemble anything onto the end-effector without due care.

Hi @wierd101 ,
can you give me some details about how you push it past its’ limit? do you detach (disengage) the servos first? which limit ? Radius, Stretch or Height?

Received my Swift pro yesterday. finally have time to test it.

I have the same issue here, Grip reset at 95 degree rather than 90 degree.
Testing the range, under X=100 reaching the limit, skiping gears, crazy noise and it doesn’t know where it is from there.

We should have a way to define where it’s 0,0,0 is so that repeatable action is actually possible.

Hey @Lalex , since we’re having a similar problem where the reverse-kinematics is wrong, I was wondering if you’d share some data with me.

If you remove any attachments from the arm, place the arm on the flattest surface you can find, and align on top of the “Laser & 3D Printing Positioning” page that cam in the box, then use uArm Studio / Blockly and add a “Move To” block, then position your arm at points A, B and C, and record those positions, what positions does the software think you are at?

Here’s what I got:
A: [169.9, 0, -27.33]
B: [202.92, 0.93, -19.58]
C: [282.49, 2.16, -16.1]

At the moment I’m working on a way to re-calibrate the device using the Python API, which could potentially solve our issues so I’ll let you know how I go.


Hi @derwentx, I’ve got the following:

A: [164.65, 0.51, -55.18]
B: [200.8, 0, -50.25]
C: [279.96, 0.43, -49.16]

Z axes is also changing all the time. today flat surface is -50. yesterday -16. Probably has to do where the arm is a start up.

I’m not familiar with Python API at all, would love to have a look to your re calibration tool.

Hi @derwentx,
I am referring to the wrist axis, which doesn’t have a digital feedback loop to the software and therefore can’t be reset via software (unless you’ve included something i can’t see). Attached photo is with suction grip attached, twist is more of a problem with the other gripping tool.

Hey @wierd101
I see what you mean now. I’m having a separate issue with my other axes being out of alignment but now that I think about it, my servo / wrist axis is about 5 degrees off centre too!

The servo is a little bit different to the other axes, but on the Swift Pro at least, the servo has a 4-pin connection, and one of those pins is used to determine the current angle.

Here’s the code in the firmware that determines the angle:

In marlin/uArmCalibration.cpp we have:

uint16_t get_current_angle_adc(uint8_t index){
  case E_AXIS:
    value = map(getAnalogPinValue(SERVO_HAND_ROT_ANALOG_PIN), SERVO_9G_MIN, SERVO_9G_MAX, 0, 180);;

So you could indeed modify the firmware so that the values of SERVO_9G_MIN and SERVO_9G_MAX were correct.
That would be a bit of a pain, but probably easier than taking apart the servo.

Tony has mentioned that wrist calibration is a likely future feature in the firmware: How to calibrate the 4th axis? - #2 by tony