Skip to content

Commit 859b198

Browse files
committed
push code
1 parent 467bee0 commit 859b198

File tree

3 files changed

+88
-4
lines changed

3 files changed

+88
-4
lines changed

pymycobot/common.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,11 @@ def read(self, genre, method=None, command=None, _class=None):
530530
wait_time = 0.1
531531
if genre == ProtocolCode.GO_ZERO:
532532
wait_time = 120
533+
if _class in ["Mercury", "MercurySocket"]:
534+
if genre == ProtocolCode.POWER_ON:
535+
wait_time = 8
536+
elif genre in [ProtocolCode.POWER_OFF, ProtocolCode.RELEASE_ALL_SERVOS, ProtocolCode.FOCUS_ALL_SERVOS, ProtocolCode.RELEASE_SERVO, ProtocolCode.FOCUS_SERVO, ProtocolCode.STOP]:
537+
wait_time = 3
533538
if method is not None:
534539
if genre == 177:
535540
while True:

pymycobot/mercury.py

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def __init__(self, port, baudrate="115200", timeout=0.1, debug=False):
3030
self._serial_port.rts = False
3131
self._serial_port.open()
3232
self.lock = threading.Lock()
33+
self.has_reply_command = []
34+
3335

3436

3537
def _mesg(self, genre, *args, **kwargs):
@@ -80,7 +82,14 @@ def _mesg(self, genre, *args, **kwargs):
8082
ProtocolCode.GET_GRIPPER_MODE,
8183
ProtocolCode.SET_SSID_PWD,
8284
ProtocolCode.COBOTX_IS_GO_ZERO,
83-
ProtocolCode.GET_ERROR_DETECT_MODE
85+
ProtocolCode.GET_ERROR_DETECT_MODE,
86+
ProtocolCode.POWER_ON,
87+
ProtocolCode.POWER_OFF,
88+
ProtocolCode.RELEASE_ALL_SERVOS,
89+
ProtocolCode.RELEASE_SERVO,
90+
ProtocolCode.FOCUS_ALL_SERVOS,
91+
ProtocolCode.FOCUS_SERVO,
92+
ProtocolCode.STOP
8493
]:
8594
return self._process_single(res)
8695
elif genre in [ProtocolCode.GET_ANGLES]:
@@ -192,7 +201,7 @@ def write_move_c(self, transpoint, endpoint, speed):
192201

193202
def focus_all_servos(self):
194203
"""Lock all joints"""
195-
return self._mesg(ProtocolCode.FOCUS_ALL_SERVOS)
204+
return self._mesg(ProtocolCode.FOCUS_ALL_SERVOS, has_reply=True)
196205

197206
def go_zero(self):
198207
"""Control the machine to return to the zero position.
@@ -460,4 +469,39 @@ def tool_serial_set_timeout(self, max_time):
460469

461470
def get_robot_status(self):
462471
return self._mesg(ProtocolCode.MERCURY_ROBOT_STATUS, has_reply=True)
472+
473+
def power_on(self):
474+
"""Open communication with Atom."""
475+
return self._mesg(ProtocolCode.POWER_ON, has_reply=True)
476+
477+
def power_off(self):
478+
"""Close communication with Atom."""
479+
return self._mesg(ProtocolCode.POWER_OFF, has_reply=True)
480+
481+
def release_all_servos(self):
482+
"""Relax all joints
483+
"""
484+
return self._mesg(ProtocolCode.RELEASE_ALL_SERVOS, has_reply=True)
485+
486+
def focus_servo(self, servo_id):
487+
"""Power on designated servo
488+
489+
Args:
490+
servo_id: int. joint id 1 - 7
491+
"""
492+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id)
493+
return self._mesg(ProtocolCode.FOCUS_SERVO, servo_id, has_reply=True)
494+
495+
def release_servo(self, servo_id):
496+
"""Power off designated servo
497+
498+
Args:
499+
servo_id: int. joint id 1 - 7
500+
"""
501+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id)
502+
return self._mesg(ProtocolCode.RELEASE_SERVO, servo_id, has_reply=True)
503+
504+
def stop(self):
505+
"""Stop moving"""
506+
return self._mesg(ProtocolCode.STOP, has_reply=True)
463507

pymycobot/mercurysocket.py

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def write_move_c(self, transpoint, endpoint, speed):
191191

192192
def focus_all_servos(self):
193193
"""Lock all joints"""
194-
return self._mesg(ProtocolCode.FOCUS_ALL_SERVOS)
194+
return self._mesg(ProtocolCode.FOCUS_ALL_SERVOS, has_reply=True)
195195

196196
def go_zero(self):
197197
"""Control the machine to return to the zero position.
@@ -364,7 +364,7 @@ def is_gripper_moving(self, mode=None):
364364
if mode:
365365
return self._mesg(ProtocolCode.IS_GRIPPER_MOVING, mode, has_reply=True)
366366
return self._mesg(ProtocolCode.IS_GRIPPER_MOVING, has_reply=True)
367-
367+
368368
def set_gripper_enabled(self, value):
369369
"""Pro adaptive gripper enable setting
370370
@@ -459,5 +459,40 @@ def tool_serial_set_timeout(self, max_time):
459459

460460
def get_robot_status(self):
461461
return self._mesg(ProtocolCode.MERCURY_ROBOT_STATUS, has_reply=True)
462+
463+
def power_on(self):
464+
"""Open communication with Atom."""
465+
return self._mesg(ProtocolCode.POWER_ON, has_reply=True)
466+
467+
def power_off(self):
468+
"""Close communication with Atom."""
469+
return self._mesg(ProtocolCode.POWER_OFF, has_reply=True)
470+
471+
def release_all_servos(self):
472+
"""Relax all joints
473+
"""
474+
return self._mesg(ProtocolCode.RELEASE_ALL_SERVOS, has_reply=True)
475+
476+
def focus_servo(self, servo_id):
477+
"""Power on designated servo
478+
479+
Args:
480+
servo_id: int. joint id 1 - 7
481+
"""
482+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id)
483+
return self._mesg(ProtocolCode.FOCUS_SERVO, servo_id, has_reply=True)
484+
485+
def release_servo(self, servo_id):
486+
"""Power off designated servo
487+
488+
Args:
489+
servo_id: int. joint id 1 - 7
490+
"""
491+
self.calibration_parameters(class_name = self.__class__.__name__, id=servo_id)
492+
return self._mesg(ProtocolCode.RELEASE_SERVO, servo_id, has_reply=True)
493+
494+
def stop(self):
495+
"""Stop moving"""
496+
return self._mesg(ProtocolCode.STOP, has_reply=True)
462497

463498

0 commit comments

Comments
 (0)