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)))