Single Encoder Error

Hey David and team,

I’ve encountering a Single Ring Encoder Error as per the screenshot.

I tried to fix a multi turn encoder error before this happened using the tool and instruction in this google drive link.

When the clear error tool finish running, I tried to use MANUAL mode to reposition the arm but unable to because of the Single Ring Encoder Error.

Please advise.

Cheers,
Tom

Hi, Tom
You can shut down and try again.

Hi Jane,

I’ve tried that multiple times. The actual position of the xArm and the model in xArm studio is not the same, as per attached photo. In the simulation model the xArm is in a position that is in collision with itself.


Hi, Tom,
you can click the refresh button,as follows:

Hi Jane,

I’ve tried multiple times to restart the xArm but to no avail. Please advise.

Tom

Hi, Tom,
Can you provide the SN code of the robot?

Sure. Here it is. XS110005191009

Hi, Tom,
We are studying this issue here, and we will reply to you in the first time.

Appreciate if you can respond us as soon as possible.

Hi Jane,

Not sure if this will help.

version v4.2: 2019-06-19(python3)

------------------------
| 1: RS485连接         |
| 2:TCP控制           |
| 3:TCP正常上报       |
| 4:TCP调试上报       |
| 5:TCP实时上报       |
| q:退出              |
------------------------
请选择连接类型(默认2):2
请输入ip末尾地址(如118):218
[tcp proc] arm socket thread start
Tcp Control connection successful
[gc_proc ] gcode thread start
[terminal] terminal thread start
D13I4
[gc_proc ] error: 控制器报错误
[gc_proc ] 详情:控制器故障码:伺服出现故障,请输入'D11'进行检测,
[gc_proc ] error: 控制器报错误
[gc_proc ] 详情:控制器故障码:伺服出现故障,请输入'D11'进行检测,
[gc_proc ] set id_num = 4 zero, ret = 1
D11
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: controler get_err_code: ret = 1, code = 14
[gc_proc ] error: 第4号伺服报错误:伺服故障码:ic-MU故障(0x11)
Traceback (most recent call last):
  File "xarm_gui_main.py", line 191, in <module>
  File "xarm_gui_main.py", line 184, in main
  File "xarm_gui_main.py", line 174, in main_gui
KeyboardInterrupt
[16184] Failed to execute script xarm_gui_main

Hi, Tom,
Thanks for your feedback, we will reply to you as soon as possible.

Hi Tom,
The tool is to clear the mult-trun encoder error which not work on this error.
Please run the below script on your xArm Studio IDE and send us the feedback message of the console.

import time
from xarm.wrapper import XArmAPI

arm = XArmAPI(‘192.168.1.218’)

time.sleep(1)

print(‘get_err_warn_code, ret={}’.format(arm.get_err_warn_code()))
code, dbmsg = arm.get_servo_debug_msg(show=True)

servo_ids =
if code in [0, 1, 2]:
for msg in dbmsg:
if msg[‘code’] == 17:
servo_ids.append(msg[‘servo_id’])

servo_ids = [4]

for servo_id in servo_ids:
print(‘set_servo_addr_16(servo_id={}, addr=0x0910, value=4093), ret={}’.format(servo_id, arm._arm.set_servo_addr_16(servo_id, 0x0910, 4093)))
print(‘set_servo_addr_16(servo_id={}, addr=0x0109, value=1), ret={}’.format(servo_id, arm._arm.set_servo_addr_16(servo_id, 0x0109, 1)))
print(‘clean_error, ret={}’.format(arm.clean_error()))
print(‘get_servo_addr_16(servo_id={}, addr=0x001E), ret={}’.format(servo_id, arm._arm.get_servo_addr_16(servo_id, 0x001E)))

Hi David,

Here is the console output. I had to try and move the robot again, then only the error appears.

main-socket connect 192.168.1.218 success
report-socket connect 192.168.1.218 success
is_old_protocol: False
version_number: 1.2.2
ControllerError, code: 14
=============sync_all
get_err_warn_code, ret=(0, [14, 0])
************* GetServoDebugMsg, Status: 1 **************
* Servo-1, Status: 0, Code: 0, Info: Normal
* Servo-2, Status: 0, Code: 0, Info: Normal
* Servo-3, Status: 0, Code: 0, Info: Normal
* Servo-4, Status: 1, Code: 17, Info: Single Ring Encoder Error
* Servo-5, Status: 0, Code: 0, Info: Normal
* Servo-6, Status: 0, Code: 0, Info: Normal
* Servo-7, Status: 0, Code: 0, Info: Normal
* Gripper, Status: 0, Code: 0, Info: Normal
**************************************************

Code that I’ve used to generate the output, for reference.

import time
from xarm.wrapper import XArmAPI

arm = XArmAPI("192.168.1.218")

time.sleep(1)

print('get_err_warn_code, ret={}'.format(arm.get_err_warn_code()))
code, dbmsg = arm.get_servo_debug_msg(show=True)

servo_ids = []

if code in [0, 1, 2]:
    for msg in dbmsg:
        # print('msg={}'.format(msg))
        if msg['code'] == 17:
            servo_ids.append(msg['servo_id'])

# print(servo_ids)

for servo_id in servo_ids:
    print('set_servo_addr_16(servo_id={}, addr=0x0910, value=4093), ret={}'.format(servo_id, arm._arm.set_servo_addr_16(servo_id, 0x0910, 4093)))
    print('set_servo_addr_16(servo_id={}, addr=0x0109, value=1), ret={}'.format(servo_id, arm._arm.set_servo_addr_16(servo_id, 0x0109, 1)))
    print('clean_error, ret={}'.format(arm.clean_error()))
    print('get_servo_addr_16(servo_id={}, addr=0x001E), ret={}'.format(servo_id, arm._arm.get_servo_addr_16(servo_id, 0x001E)))

Hi Tom,
You’d not change the code, we need the output of the error of servo 4.
Please run the code I sent to you.

Thanks

Hi David,

I’ve somehow managed to move the robot arm now but the orientation/axis is still wrong.


Hi Tom,
We need get the feedbac of the servo 4 to do the analysis, you’d run the code i sent to you without chagne and copy the result to us, it should be something like that:

C:\Users\hp\AppData\Local\Programs\Python\Python36-32\python.exe C:/Python/xArm-Python-SDK-master/example/wrapper/xarm6/clear_single_turn.py
main-socket connect 192.168.1.226 success
report-socket connect 192.168.1.226 success
is_old_protocol: False
version_number: 1.2.12
=============sync_all
get_err_warn_code, ret=(0, [0, 0])
************* GetServoDebugMsg, Status: 0 **************

  • Servo-1, Status: 0, Code: 0, Info: Normal
  • Servo-2, Status: 0, Code: 0, Info: Normal
  • Servo-3, Status: 0, Code: 0, Info: Normal
  • Servo-4, Status: 0, Code: 0, Info: Normal
  • Servo-5, Status: 0, Code: 0, Info: Normal
  • Servo-6, Status: 0, Code: 0, Info: Normal
  • Servo-7, Status: 0, Code: 0, Info: Normal
  • Gripper, Status: 0, Code: 0, Info: Normal

set_servo_addr_16(servo_id=3, addr=0x0910, value=4093), ret=0
set_servo_addr_16(servo_id=3, addr=0x0109, value=1), ret=0
clean_error, ret=0
get_servo_addr_16(servo_id=3, addr=0x001E), ret=(0, 16)

Process finished with exit code 0

Hi David,

As per your request.

main-socket connect 192.168.1.218 success
report-socket connect 192.168.1.218 success
is_old_protocol: False
version_number: 1.2.2
ControllerError, code: 14
=============sync_all
get_err_warn_code, ret=(0, [14, 0])
************* GetServoDebugMsg, Status: 1 **************
* Servo-1, Status: 0, Code: 0, Info: Normal
* Servo-2, Status: 0, Code: 0, Info: Normal
* Servo-3, Status: 0, Code: 0, Info: Normal
* Servo-4, Status: 1, Code: 17, Info: Single Ring Encoder Error
* Servo-5, Status: 0, Code: 0, Info: Normal
* Servo-6, Status: 0, Code: 0, Info: Normal
* Servo-7, Status: 0, Code: 0, Info: Normal
* Gripper, Status: 0, Code: 0, Info: Normal
**************************************************
set_servo_addr_16(servo_id=4, addr=0x0910, value=4093), ret=1
set_servo_addr_16(servo_id=4, addr=0x0109, value=1), ret=1
clean_error, ret=0
get_servo_addr_16(servo_id=4, addr=0x001E), ret=(0, 16)

Hi Tom, I think we need a video call to help us understand the situation, the xArm may need reset zero position, do you have wechat or skype, if so, could you send your wechat/skype account to daniel.wang@ufactory.cc
Thanks