Skip to content

Commit d689d8b

Browse files
committed
fix bug
1 parent d00257d commit d689d8b

File tree

7 files changed

+78
-49
lines changed

7 files changed

+78
-49
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# ChangeLog for pymycobot
22

3+
## v3.3.2 (2023-12-15)
4+
5+
- release v3.3.3
6+
- fix bug
7+
38
## v3.3.2 (2023-12-5)
49

510
- release v3.3.2

docs/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -934,23 +934,25 @@ Set the terminal atom io status
934934
- `gripper_type` (`int`):
935935
- 1 - Adaptive gripper.
936936
- 3 - Parallel gripper, this parameter can be omitted, default to adaptive gripper
937+
- 4 - Flexible gripper
937938

938939
- **Return**: gripper value (int)
939940

940941
### set_gripper_state
941942

942-
- **Prototype**: `set_gripper_state(flag, speed, _type=None)`
943+
- **Prototype**: `set_gripper_state(flag, speed, _type_1=None)`
943944

944945
- **Description**: Set gripper switch state
945946

946947
- **Parameters**
947948

948949
- `flag` (`int`): 0 - open, 1 - close
949950
- `speed` (`int`): 0 ~ 100
950-
- `_type` (`int`):
951+
- `_type_1` (`int`):
951952
- 1- Adaptive gripper,
952953
- 2 - 5 finger dexterous hand,
953954
- 3 - Parallel gripper, this parameter can be omitted, default to adaptive gripper
955+
- 4 - Flexible gripper
954956

955957
### set_gripper_value
956958

@@ -965,6 +967,7 @@ Set the terminal atom io status
965967
- `gripper_type` (int):
966968
- 1 - Adaptive gripper
967969
- 3 - Parallel gripper, this parameter can be omitted, default to adaptive gripper
970+
- 4 - Flexible gripper
968971

969972
<!-- ### set_gripper_ini
970973

pymycobot/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from pymycobot.mercury import Mercury
2424
from pymycobot.myagv import MyAgv
2525
from pymycobot.mecharmsocket import MechArmSocket
26+
from pymycobot.mercurychassis import MercuryChassis
2627

2728
__all__ = [
2829
"MyCobot",
@@ -44,15 +45,16 @@
4445
"Mercury",
4546
"MyAgv",
4647
"MechArmSocket",
47-
"MyArmSocket"
48+
"MyArmSocket",
49+
"MercuryChassis"
4850
]
4951

5052

5153
if sys.platform == "linux":
5254
from pymycobot.mybuddyemoticon import MyBuddyEmoticon
5355
__all__.append("MyBuddyEmoticon")
5456

55-
__version__ = "3.3.2"
57+
__version__ = "3.3.3"
5658
__author__ = "Elephantrobotics"
5759
__email__ = "[email protected]"
5860
__git_url__ = "https://github.com/elephantrobotics/pymycobot"

pymycobot/common.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -540,13 +540,13 @@ def read(self, genre, method=None, command=None, _class=None):
540540
while True and time.time() - t < wait_time:
541541
data = self._serial_port.read()
542542
k += 1
543-
# if _class == "Mercury":
544-
# if data_len == 3:
545-
# datas += data
546-
# crc = self._serial_port.read(2)
547-
# if DataProcessor.crc_check(datas) == [v for v in crc]:
548-
# datas+=crc
549-
# break
543+
if _class == "Mercury":
544+
if data_len == 3:
545+
datas += data
546+
crc = self._serial_port.read(2)
547+
if DataProcessor.crc_check(datas) == [v for v in crc]:
548+
datas+=crc
549+
break
550550
if data_len == 1 and data == b"\xfa":
551551
datas += data
552552
if [i for i in datas] == command:

pymycobot/error.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ def check_0_or_1(parameter, value, range_data, value_type, exception_class, _typ
6969
check_value_type(parameter, value_type, exception_class, _type)
7070
if value not in range_data:
7171
error = "The data supported by parameter {} is ".format(parameter)
72-
len = len(range_data)
73-
for idx in range(len):
72+
lens = len(range_data)
73+
for idx in range(lens):
7474
error += str(range_data[idx])
75-
if idx != len - 1:
75+
if idx != lens - 1:
7676
error += " or "
7777
error += ", but the received value is {}".format(value)
7878
raise exception_class(error)
@@ -110,7 +110,11 @@ def public_check(parameter_list, kwargs, robot_limit, class_name, exception_clas
110110
% value
111111
)
112112
elif parameter == 'flag':
113-
check_0_or_1(parameter, value, [0, 1, 10], value_type, exception_class, int)
113+
check_0_or_1(parameter, value, [0, 1, 254], value_type, exception_class, int)
114+
elif parameter == 'gripper_type':
115+
check_0_or_1(parameter, value, [1, 3, 4], value_type, exception_class, int)
116+
elif parameter == '_type_1':
117+
check_0_or_1(parameter, value, [1, 2, 3, 4], value_type, exception_class, int)
114118
# if value not in [0, 1, 10]:
115119
# raise exception_class("The data supported by parameter {} is 0 or 1 or 10, but the received value is {}".format(parameter, value))
116120
elif parameter == 'gripper_value':

pymycobot/generate.py

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,13 @@ def _mesg(self, genre, *args, **kwargs):
123123
LEN,
124124
genre,
125125
]
126-
# if command_data:
127-
# command.extend(command_data)
128-
# if self.__class__.__name__ == "Mercury":
129-
# command[2] += 1
130-
# command.extend(self.crc_check(command))
131-
command.extend(command_data)
132-
# else:
133-
command.append(ProtocolCode.FOOTER)
126+
if command_data:
127+
command.extend(command_data)
128+
if self.__class__.__name__ == "Mercury":
129+
command[2] += 1
130+
command.extend(self.crc_check(command))
131+
else:
132+
command.append(ProtocolCode.FOOTER)
134133

135134
real_command = self._flatten(command)
136135
has_reply = kwargs.get("has_reply", False)
@@ -696,30 +695,42 @@ def set_pwm_output(self, channel, frequency, pin_val):
696695
"""
697696
return self._mesg(ProtocolCode.SET_PWM_OUTPUT, channel, [frequency], pin_val)
698697

699-
def get_gripper_value(self, _type=None):
698+
def get_gripper_value(self, gripper_type=None):
700699
"""Get the value of gripper.
700+
701+
Args:
702+
gripper_type (int): default 1
703+
1: Adaptive gripper
704+
3: Parallel gripper
705+
4: Flexible gripper
701706
702707
Return:
703708
gripper value (int)
704709
"""
705-
if _type is None:
710+
self.calibration_parameters(class_name = self.__class__.__name__, gripper_type=gripper_type)
711+
if gripper_type is None:
706712
return self._mesg(ProtocolCode.GET_GRIPPER_VALUE, has_reply=True)
707713
else:
708-
return self._mesg(ProtocolCode.GET_GRIPPER_VALUE, _type, has_reply=True)
714+
return self._mesg(ProtocolCode.GET_GRIPPER_VALUE, gripper_type, has_reply=True)
709715

710716

711-
def set_gripper_state(self, flag, speed, _type):
717+
def set_gripper_state(self, flag, speed, _type_1=None):
712718
"""Set gripper switch state
713719
714720
Args:
715-
flag (int): 0 - open, 1 - close, 10 - release
721+
flag (int): 0 - open, 1 - close, 254 - release
716722
speed (int): 1 ~ 100
717-
"""
718-
self.calibration_parameters(class_name = self.__class__.__name__, flag=flag, speed=speed, _type=_type)
719-
if _type is None:
723+
_type_1 (int): default 1
724+
1 : Adaptive gripper. default to adaptive gripper
725+
2 : 5 finger dexterous hand
726+
3 : Parallel gripper, this parameter can be omitted
727+
4 : Flexible gripper
728+
"""
729+
self.calibration_parameters(class_name = self.__class__.__name__, flag=flag, speed=speed, _type_1=_type_1)
730+
if _type_1 is None:
720731
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, flag, speed)
721732
else:
722-
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, flag, speed, _type)
733+
return self._mesg(ProtocolCode.SET_GRIPPER_STATE, flag, speed, _type_1)
723734

724735

725736
def set_gripper_value(self, gripper_value, speed, gripper_type=None):
@@ -728,9 +739,13 @@ def set_gripper_value(self, gripper_value, speed, gripper_type=None):
728739
Args:
729740
gripper_value (int): 0 ~ 100
730741
speed (int): 1 ~ 100
742+
gripper_type (int): default 1
743+
1: Adaptive gripper
744+
3: Parallel gripper, this parameter can be omitted
745+
4: Flexible gripper
731746
"""
732747
if gripper_type is not None:
733-
self.calibration_parameters(class_name = self.__class__.__name__, gripper_value=gripper_value, speed=speed, gripper_type=gripper_type)
748+
self.calibration_parameters(class_name = self.__class__.__name__, gripper_value=gripper_value, speed=speed, _type=gripper_type)
734749
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, gripper_value, speed, gripper_type)
735750
else:
736751
return self._mesg(ProtocolCode.SET_GRIPPER_VALUE, gripper_value, speed)

pymycobot/mercurychassis.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,39 @@
66
class MercuryChassis:
77
def __init__(self):
88
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
9-
self._sock.connect(("192.168.99.102", 9000))
10-
self.recv = threading.Thread(self.is_move_end, daemon=True)
9+
self._sock.connect(("192.168.123.167", 9000))
10+
self.recv = threading.Thread(target=self.check_move_end, daemon=True)
1111
self.recv.start()
1212
self.move_end = False
1313

14-
def is_move_end(self):
14+
def check_move_end(self):
1515
while True:
1616
data = self._sock.recv(1024)
17-
data = json.load(data)
18-
key = data.keys()[0]
19-
self.move_end = key["return"]
17+
print(data)
18+
data = json.loads(data)
19+
self.move_end = data
2020

21-
@property
22-
def move_end(self):
21+
# @property
22+
def is_move_end(self):
2323
return self.move_end
2424

25-
def go_straight(self, speed=0.5, exercise_duration=5):
25+
def go_straight(self, speed=0.25, exercise_duration=5):
2626
command = {"goStraight": {"time": exercise_duration, "speed": speed}}
27-
self._sock.sendall(json.dump(command))
27+
self._sock.sendall(json.dumps(command).encode())
2828

29-
def go_back(self, speed=0.5, exercise_duration=5):
29+
def go_back(self, speed=0.25, exercise_duration=5):
3030
command = {"goBack": {"time": exercise_duration, "speed": speed}}
31-
self._sock.sendall(json.dump(command))
31+
self._sock.sendall(json.dumps(command).encode())
3232

3333
def turn_left(self, speed=0.5, exercise_duration=5):
3434
command = {"turnLeft": {"time": exercise_duration, "speed": speed}}
35-
self._sock.sendall(json.dump(command))
35+
self._sock.sendall(json.dumps(command).encode())
3636

37-
def go_straight(self, speed=0.5, exercise_duration=5):
37+
def turn_right(self, speed=0.5, exercise_duration=5):
3838
command = {"turnRight": {"time": exercise_duration, "speed": speed}}
39-
self._sock.sendall(json.dump(command))
39+
self._sock.sendall(json.dumps(command).encode())
4040

4141
def stop(self):
4242
command = {"stop": True}
43-
self._sock.sendall(json.dump(command))
43+
self._sock.sendall(json.dumps(command).encode())
4444

0 commit comments

Comments
 (0)