Skip to content

Commit b1cadc6

Browse files
committed
270/280新增判断是否力控夹爪接口、修改设置夹爪开合接口
1 parent b0359b5 commit b1cadc6

File tree

5 files changed

+237
-5
lines changed

5 files changed

+237
-5
lines changed

pymycobot/error.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,11 @@ def calibration_parameters(**kwargs):
550550
elif parameter == 'flag':
551551
check_0_or_1(parameter, value, [0, 1, 254], value_type, MyCobot280DataException, int)
552552
elif parameter == 'gripper_type':
553-
check_0_or_1(parameter, value, [1, 3, 4], value_type, MyCobot280DataException, int)
553+
if value is not None:
554+
check_0_or_1(parameter, value, [1, 3, 4, 5], value_type, MyCobot280DataException, int)
554555
elif parameter == '_type_1':
555-
check_0_or_1(parameter, value, [1, 2, 3, 4], value_type, MyCobot280DataException, int)
556+
if value is not None:
557+
check_0_or_1(parameter, value, [1, 2, 3, 4, 5], value_type, MyCobot280DataException, int)
556558
elif parameter == 'gripper_value':
557559
check_value_type(parameter, value_type, MyCobot280DataException, int)
558560
if value < 0 or value > 100:
@@ -636,6 +638,9 @@ def calibration_parameters(**kwargs):
636638
value))
637639
elif parameter == 'end_direction':
638640
check_0_or_1(parameter, value, [1, 2, 3], value_type, MyCobot280DataException, int)
641+
elif parameter == 'is_torque':
642+
if value is not None:
643+
check_0_or_1(parameter, value, [0, 1], value_type, MyCobot280DataException, int)
639644
elif class_name in ["MyCobot320", "MyCobot320Socket"]:
640645
for parameter in parameter_list[1:]:
641646
value = kwargs.get(parameter, None)
@@ -756,6 +761,7 @@ def calibration_parameters(**kwargs):
756761
check_0_or_1(parameter, value, [1, 2, 3], value_type, MyCobot320DataException, int)
757762
elif parameter == "gripper_angle":
758763
gripper_id, gripper_angle = value
764+
print(type(gripper_id), type(gripper_angle))
759765
if not isinstance(gripper_id, int) or not isinstance(gripper_angle, int):
760766
raise MyCobot320DataException(
761767
"Both 'gripper_id' and 'gripper_angle' in {} must be integers".format(parameter))
@@ -921,11 +927,14 @@ def calibration_parameters(**kwargs):
921927
% value
922928
)
923929
elif parameter == 'flag':
924-
check_0_or_1(parameter, value, [0, 1, 254], value_type, MechArmDataException, int)
930+
if value is not None:
931+
check_0_or_1(parameter, value, [0, 1, 254], value_type, MechArmDataException, int)
925932
elif parameter == 'gripper_type':
926-
check_0_or_1(parameter, value, [1, 3, 4], value_type, MechArmDataException, int)
933+
if value is not None:
934+
check_0_or_1(parameter, value, [1, 3, 4, 5], value_type, MechArmDataException, int)
927935
elif parameter == '_type_1':
928-
check_0_or_1(parameter, value, [1, 2, 3, 4], value_type, MechArmDataException, int)
936+
if value is not None:
937+
check_0_or_1(parameter, value, [1, 2, 3, 4, 5], value_type, MechArmDataException, int)
929938
# if value not in [0, 1, 10]:
930939
# raise exception_class("The data supported by parameter {} is 0 or 1 or 10, but the received value is {}".format(parameter, value))
931940
elif parameter == 'gripper_value':
@@ -1010,6 +1019,9 @@ def calibration_parameters(**kwargs):
10101019
value))
10111020
elif parameter == 'end_direction':
10121021
check_0_or_1(parameter, value, [1, 2, 3], value_type, MechArmDataException, int)
1022+
elif parameter == 'is_torque':
1023+
if value is not None:
1024+
check_0_or_1(parameter, value, [0, 1], value_type, MyCobot280DataException, int)
10131025
elif class_name in ["MyArm", "MyArmSocket"]:
10141026
public_check(parameter_list, kwargs, robot_limit, class_name, MyArmDataException)
10151027
for parameter in parameter_list[1:]:

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