Downgrade

Hi. Is the xArm firmware downgradable? After the last update our program showed some unexpected results…

Yes you can dwongrade, but we still hope that you can let us know what happend so we can optimize it.

Here is the link to install different version firmware, 1.3.1 is recommend if you need downgrade :xarm-tool-gui - Google ドライブ

Hi Daniel.
Servo_cartesian command along the Y axis does not work anymore.

code,coords = arm.get_position(is_radian=False)
coords

[306.538574, -0.076411, 152.127655, -179.9988739322526, 0.795494602759635, 0.06703606203030632]

coords[1]+=20 #adjust Y
code = arm.set_servo_cartesian(coords,speed = 20, mvacc = 20 , is_radian = False)
print(code)

2

As I understand, that type of commands is not fully implemented yet. But we really like them as they are superfast)
Therefore I asked you about downgrade.

Probably it can’t move the Y axis because the inverse_kinematics returns an error:
(robohand) D:\projects\robohand>python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.

from xarm.wrapper import XArmAPI
ip = “10.10.120.120”
arm = XArmAPI(ip, is_radian=False)

is_old_protocol: False
version_number: 1.4.1
=============sync_all

arm.motion_enable(enable=True)

[motion_enable], xArm is not ready to move
0

arm.set_mode(1)

0

arm.set_state(state=0)

[set_state], xArm is ready to move
0

arm.reset(wait=True)
arm.motion_enable(enable=True)

[motion_enable], xArm is not ready to move
0

arm.set_state(state=0)

[set_state], xArm is ready to move
0

code,coords = arm.get_position(is_radian=False)
print(coords)

[306.538574, -0.076411, 152.127655, -179.9988739322526, 0.795494602759635, 0.06703606203030632]

coords[0] += 20 # X axis change
print(coords)

[326.538574, -0.076411, 152.127655, -179.9988739322526, 0.795494602759635, 0.06703606203030632]

code,solution = arm.get_inverse_kinematics(coords)
code

0

solution

[-0.013407382863784007, 2.7114038870386454, -21.75149727045077, 19.83558822712717, -0.08043568941012211, 0.0, 0.0]

coords[1] += 20 # Y axis change
coords

[326.538574, 19.923589, 152.127655, -179.9988739322526, 0.795494602759635, 0.06703606203030632]

code,solution = arm.get_inverse_kinematics(coords)

ControllerWarning, code: 14

code

0

solution

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

Daniel. My explanation. Does it make sense to you?

Firmware 1.3.1 has no commands that we need. Could you, please, share 1.4.0?

There are bugs on V1.4.0 so we released v 1.4.1 to fix that. Do you mean your codes works on V 1.4.0?

Yes. Our code worked on all axis on 1.4.0. Now it is good only for X and Z axis.

Please use 1.4.1 and give a less a than 10mm of Y axis increase on each cycle, currently in your code is 20mm.

Used 8mm. Still got an error:

arm.motion_enable(True)

[motion_enable], xArm is not ready to move
0

arm.set_mode(mode=1)

0

arm.set_state(0)

[set_state], xArm is ready to move
0

code,pos = arm.get_position()
print(pos)

[207.220596, -0.00596, 112.139969, 180.00001984784282, -0.07723471078363497, 0.0013178029288008935]

pos[1]+=8
arm.get_inverse_kinematics(pos)

(0, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])

ControllerWarning, code: 14

Hi, are you using xArm 5? If so, you’d keep the R/P/Y=180,0,0, and keep the Y axis less then 10mm change on each cycle.
Please give a try and let me know the result.
Thanks

Thanks, Daniel! After defining R/P/Y=180,0,0 Y-axis works like a charm:)

Got that, thanks for the feedback, have a nice day.