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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions