Skip to content

Commit b5715f7

Browse files
author
Leonid Fedorenchik
committed
Merge remote-tracking branch 'github/main'
2 parents 9478c0d + ef54a5f commit b5715f7

File tree

10 files changed

+332
-129
lines changed

10 files changed

+332
-129
lines changed

pymycobot/common.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ def write(self, command, method=None):
768768
self._serial_port.flush()
769769

770770

771-
def read(self, genre, method=None, command=None, _class=None, timeout=None):
771+
def read(self, genre, method=None, command=None, _class=None, timeout=None, real_command=None):
772772
datas = b""
773773
data_len = -1
774774
k = 0
@@ -800,9 +800,16 @@ def read(self, genre, method=None, command=None, _class=None, timeout=None):
800800
wait_time = 90
801801
elif genre == ProtocolCode.SET_SSID_PWD or genre == ProtocolCode.GET_SSID_PWD:
802802
wait_time = 0.05
803+
if real_command:
804+
if genre == ProtocolCode.SET_TOQUE_GRIPPER:
805+
if real_command[6] == 13:
806+
wait_time = 3
803807
data = b""
804-
805808
if method is not None:
809+
if real_command:
810+
if genre == ProtocolCode.SET_TOQUE_GRIPPER:
811+
if real_command[6] == 13:
812+
wait_time = 3
806813
if genre == 177:
807814
while True:
808815
data = self.sock.recv(1024)

pymycobot/error.py

Lines changed: 70 additions & 83 deletions
Large diffs are not rendered by default.

pymycobot/mecharm270.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,61 @@ def set_vision_mode(self, flag):
674674
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag)
675675
return self._mesg(ProtocolCode.SET_VISION_MODE, flag)
676676

677+
def is_torque_gripper(self):
678+
"""Whether it is a force-controlled gripper
679+
680+
Return:
681+
1 - Force control
682+
0 - Non-force control
683+
"""
684+
return self.get_servo_data(7, 1)
685+
686+
def set_gripper_state(self, flag, speed, _type_1=None, is_torque=None):
687+
"""Set gripper switch state
688+
689+
Args:
690+
flag (int): 0 - open, 1 - close, 254 - release
691+
speed (int): 1 ~ 100
692+
_type_1 (int): default 1
693+
1 : Adaptive gripper. default to adaptive gripper
694+
2 : 5 finger dexterous hand
695+
3 : Parallel gripper, this parameter can be omitted
696+
4 : Flexible gripper
697+
is_torque (int): When there is no type parameter, this parameter can be omitted.
698+
1: Force control
699+
0: Non-force control
700+
"""
701+
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag, speed=speed, _type_1=_type_1, is_torque=is_torque)
702+
args = [flag, speed]
703+
if _type_1 is not None:
704+
args.append(_type_1)
705+
if is_torque is not None:
706+
args.append(is_torque)
707+
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, *args)
708+
709+
def set_gripper_value(self, gripper_value, speed, gripper_type=None, is_torque=None):
710+
"""Set gripper value
711+
712+
Args:
713+
gripper_value (int): 0 ~ 100
714+
speed (int): 1 ~ 100
715+
gripper_type (int): default 1
716+
1: Adaptive gripper
717+
3: Parallel gripper, this parameter can be omitted
718+
4: Flexible gripper
719+
is_torque (int): When there is no type parameter, this parameter can be omitted.
720+
1: Force control
721+
0: Non-force control
722+
"""
723+
self.calibration_parameters(class_name=self.__class__.__name__, gripper_value=gripper_value, speed=speed,
724+
gripper_type=gripper_type, is_torque=is_torque)
725+
args = [gripper_value, speed]
726+
if gripper_type is not None:
727+
args.append(gripper_type)
728+
if is_torque is not None:
729+
args.append(is_torque)
730+
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, *args, has_reply=True)
731+
677732
# Other
678733
def wait(self, t):
679734
time.sleep(t)

pymycobot/mecharmsocket.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,61 @@ def set_vision_mode(self, flag):
689689
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag)
690690
return self._mesg(ProtocolCode.SET_VISION_MODE, flag)
691691

692+
def is_torque_gripper(self):
693+
"""Whether it is a force-controlled gripper
694+
695+
Return:
696+
1 - Force control
697+
0 - Non-force control
698+
"""
699+
return self.get_servo_data(7, 1)
700+
701+
def set_gripper_state(self, flag, speed, _type_1=None, is_torque=None):
702+
"""Set gripper switch state
703+
704+
Args:
705+
flag (int): 0 - open, 1 - close, 254 - release
706+
speed (int): 1 ~ 100
707+
_type_1 (int): default 1
708+
1 : Adaptive gripper. default to adaptive gripper
709+
2 : 5 finger dexterous hand
710+
3 : Parallel gripper, this parameter can be omitted
711+
4 : Flexible gripper
712+
is_torque (int): When there is no type parameter, this parameter can be omitted.
713+
1: Force control
714+
0: Non-force control
715+
"""
716+
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag, speed=speed, _type_1=_type_1, is_torque=is_torque)
717+
args = [flag, speed]
718+
if _type_1 is not None:
719+
args.append(_type_1)
720+
if is_torque is not None:
721+
args.append(is_torque)
722+
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, *args)
723+
724+
def set_gripper_value(self, gripper_value, speed, gripper_type=None, is_torque=None):
725+
"""Set gripper value
726+
727+
Args:
728+
gripper_value (int): 0 ~ 100
729+
speed (int): 1 ~ 100
730+
gripper_type (int): default 1
731+
1: Adaptive gripper
732+
3: Parallel gripper, this parameter can be omitted
733+
4: Flexible gripper
734+
is_torque (int): When there is no type parameter, this parameter can be omitted.
735+
1: Force control
736+
0: Non-force control
737+
"""
738+
self.calibration_parameters(class_name=self.__class__.__name__, gripper_value=gripper_value, speed=speed,
739+
gripper_type=gripper_type, is_torque=is_torque)
740+
args = [gripper_value, speed]
741+
if gripper_type is not None:
742+
args.append(gripper_type)
743+
if is_torque is not None:
744+
args.append(is_torque)
745+
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, *args, has_reply=True)
746+
692747
# Other
693748
def wait(self, t):
694749
time.sleep(t)

pymycobot/myarm_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def _mesg(self, genre, *args, **kwargs):
6767
data = self._read(genre, command=command, timeout=timeout, _class=self.__class__.__name__)
6868
res = self._process_received(data, genre, arm=8)
6969

70-
if len(res) == 0:
70+
if not res:
7171
return None
7272

7373
return_single_genres = [

pymycobot/myarmm.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,11 @@ def get_robot_power_status(self):
108108
return self._mesg(ProtocolCode.IS_POWER_ON, has_reply=True)
109109

110110
def set_robot_power_on(self):
111-
"""Set the robot to power on
112-
Returns: (int) 1
113-
"""
111+
"""Set the robot to power on"""
114112
return self._mesg(ProtocolCode.POWER_ON, has_reply=True)
115113

116114
def set_robot_power_off(self):
117-
"""Set the robot to power off
118-
Returns: (int) 1
119-
"""
115+
"""Set the robot to power off"""
120116
return self._mesg(ProtocolCode.POWER_OFF, has_reply=True)
121117

122118
def clear_robot_err(self):

pymycobot/mycobot280.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,61 @@ def set_vision_mode(self, flag):
707707
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag)
708708
return self._mesg(ProtocolCode.SET_VISION_MODE, flag)
709709

710+
def is_torque_gripper(self):
711+
"""Whether it is a force-controlled gripper
712+
713+
Return:
714+
40 - Force control
715+
9 - Non-force control
716+
"""
717+
return self.get_servo_data(7, 1)
718+
719+
def set_gripper_state(self, flag, speed, _type_1=None, is_torque=None):
720+
"""Set gripper switch state
721+
722+
Args:
723+
flag (int): 0 - open, 1 - close, 254 - release
724+
speed (int): 1 ~ 100
725+
_type_1 (int): default 1
726+
1 : Adaptive gripper. default to adaptive gripper
727+
2 : 5 finger dexterous hand
728+
3 : Parallel gripper, this parameter can be omitted
729+
4 : Flexible gripper
730+
is_torque (int): When there is no type parameter, this parameter can be omitted.
731+
1: Force control
732+
0: Non-force control
733+
"""
734+
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag, speed=speed, _type_1=_type_1, is_torque=is_torque)
735+
args = [flag, speed]
736+
if _type_1 is not None:
737+
args.append(_type_1)
738+
if is_torque is not None:
739+
args.append(is_torque)
740+
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, *args)
741+
742+
def set_gripper_value(self, gripper_value, speed, gripper_type=None, is_torque=None):
743+
"""Set gripper value
744+
745+
Args:
746+
gripper_value (int): 0 ~ 100
747+
speed (int): 1 ~ 100
748+
gripper_type (int): default 1
749+
1: Adaptive gripper
750+
3: Parallel gripper, this parameter can be omitted
751+
4: Flexible gripper
752+
is_torque (int): When there is no type parameter, this parameter can be omitted.
753+
1: Force control
754+
0: Non-force control
755+
"""
756+
self.calibration_parameters(class_name=self.__class__.__name__, gripper_value=gripper_value, speed=speed,
757+
gripper_type=gripper_type, is_torque=is_torque)
758+
args = [gripper_value, speed]
759+
if gripper_type is not None:
760+
args.append(gripper_type)
761+
if is_torque is not None:
762+
args.append(is_torque)
763+
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, *args, has_reply=True)
764+
710765
# Other
711766
def wait(self, t):
712767
time.sleep(t)

pymycobot/mycobot280socket.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,61 @@ def set_vision_mode(self, flag):
741741
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag)
742742
return self._mesg(ProtocolCode.SET_VISION_MODE, flag)
743743

744+
def is_torque_gripper(self):
745+
"""Whether it is a force-controlled gripper
746+
747+
Return:
748+
1 - Force control
749+
0 - Non-force control
750+
"""
751+
return self.get_servo_data(7, 1)
752+
753+
def set_gripper_state(self, flag, speed, _type_1=None, is_torque=None):
754+
"""Set gripper switch state
755+
756+
Args:
757+
flag (int): 0 - open, 1 - close, 254 - release
758+
speed (int): 1 ~ 100
759+
_type_1 (int): default 1
760+
1 : Adaptive gripper. default to adaptive gripper
761+
2 : 5 finger dexterous hand
762+
3 : Parallel gripper, this parameter can be omitted
763+
4 : Flexible gripper
764+
is_torque (int): When there is no type parameter, this parameter can be omitted.
765+
1: Force control
766+
0: Non-force control
767+
"""
768+
self.calibration_parameters(class_name=self.__class__.__name__, flag=flag, speed=speed, _type_1=_type_1, is_torque=is_torque)
769+
args = [flag, speed]
770+
if _type_1 is not None:
771+
args.append(_type_1)
772+
if is_torque is not None:
773+
args.append(is_torque)
774+
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, *args)
775+
776+
def set_gripper_value(self, gripper_value, speed, gripper_type=None, is_torque=None):
777+
"""Set gripper value
778+
779+
Args:
780+
gripper_value (int): 0 ~ 100
781+
speed (int): 1 ~ 100
782+
gripper_type (int): default 1
783+
1: Adaptive gripper
784+
3: Parallel gripper, this parameter can be omitted
785+
4: Flexible gripper
786+
is_torque (int): When there is no type parameter, this parameter can be omitted.
787+
1: Force control
788+
0: Non-force control
789+
"""
790+
self.calibration_parameters(class_name=self.__class__.__name__, gripper_value=gripper_value, speed=speed,
791+
gripper_type=gripper_type, is_torque=is_torque)
792+
args = [gripper_value, speed]
793+
if gripper_type is not None:
794+
args.append(gripper_type)
795+
if is_torque is not None:
796+
args.append(is_torque)
797+
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, *args, has_reply=True)
798+
744799
# Other
745800
def wait(self, t):
746801
time.sleep(t)

0 commit comments

Comments
 (0)