Skip to content

set_mode() incorrectly handles joint teaching mode #141

@Pavel-P

Description

@Pavel-P

Calling arm.set_mode(2) results in the mode being set to 0 if the current mode is not 0. Below is a minimal example:

from xarm.wrapper import XArmAPI
import time

ip = "192.168.1.195"
arm = XArmAPI(ip)

arm.set_mode(0)
time.sleep(0.5)
print(f"Mode is: {arm.mode}")
non_zero_mode = 1
arm.set_mode(non_zero_mode)
time.sleep(0.5)
print(f"Mode is: {arm.mode}")
arm.set_mode(2)
time.sleep(0.5)
print(f"Mode is: {arm.mode}")

arm.disconnect()

The output this generates is:

SDK_VERSION: 1.15.3
ROBOT_IP: 192.168.1.195, VERSION: v2.5.1, PROTOCOL: V1, DETAIL: 6,12,FX8510,AC8500,v2.5.1, TYPE1300: [1, 1]
change protocol identifier to 3
Mode is: 0
Mode is: 1
Mode is: 0

The final line is expected to read "Mode is: 2". From my testing this seems to only happen when setting mode to 2 and no other mode.
As a work around, I'm calling set_mode(0) followed by set_mode(2) but wanted to make you aware of this problem.

Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions