11# coding=utf-8
2+ from re import I
23from pymycobot .common import ProtocolCode
34from pymycobot .generate import MyCobotCommandGenerator
45
@@ -136,8 +137,8 @@ def set_fresh_mode(self, id, mode):
136137 Args:
137138 id: 1/2 (L/R).\n
138139 mode: int
139- 0 - Always execute the latest command first.
140- 1 - Execute instructions sequentially in the form of a queue.
140+ 1 - Always execute the latest command first.
141+ 0 - Execute instructions sequentially in the form of a queue.
141142 """
142143 return self ._mesg (ProtocolCode .SET_FRESH_MODE , id , mode )
143144
@@ -157,7 +158,8 @@ def is_free_mode(self, id):
157158 id: 0/1/2/3 (ALL/L/R/W)
158159
159160 Return:
160- 0/1
161+ 0 - No
162+ 1 - Yes
161163 """
162164 return self ._process_single (
163165 self ._mesg (ProtocolCode .IS_FREE_MODE , id , has_reply = True )
@@ -293,12 +295,12 @@ def stop(self, id):
293295 """
294296 return self ._mesg (ProtocolCode .STOP , id )
295297
296- def is_in_position (self , id , data , mode ): # TODO 通信协议可能有问题,待完善
298+ def is_in_position (self , id , data : list , mode ): # TODO 通信协议可能有问题,待完善
297299 """Judge whether in the position.
298300
299301 Args:
300302 id: 0/1/2/3 (ALL/L/R/W).
301- data: A data list, angles or coords. If id is 1/2. data length is 6. If id is 0. data len 13. if id is 3. data len 1
303+ data: A data list, angles or coords. If id is 1/2. data length is 6. If id is 0. data len 13 (data==[[left_angles/left_coords],[right_angles/right_coords],[waist_angle/waist_coord]]) . if id is 3. data len 1
302304 mode: 1 - coords, 0 - angles
303305
304306
@@ -307,20 +309,45 @@ def is_in_position(self, id, data, mode): # TODO 通信协议可能有问题,
307309 0 - False
308310 -1 - Error
309311 """
312+ # TODO 22-8-2 need test
313+ data_list = []
310314 if mode == 1 :
311- # self.calibration_parameters(coords=data)
312- data_list = []
313- for idx in range (3 ):
314- data_list .append (self ._coord2int (data [idx ]))
315- for idx in range (3 , 6 ):
316- data_list .append (self ._angle2int (data [idx ]))
315+ if len (data ) == 3 :
316+ for i in data :
317+ # if isinstance(i, list):
318+ if len (i ) == 6 :
319+ for idx in range (3 ):
320+ data_list .append (self ._coord2int (i [idx ]))
321+ for idx in range (3 , 6 ):
322+ data_list .append (self ._angle2int (i [idx ]))
323+ elif len (i ) == 1 :
324+ data_list .append (self ._coord2int (i [0 ]))
325+ elif len (data ) == 6 :
326+ for idx in range (3 ):
327+ data_list .append (self ._coord2int (data [idx ]))
328+ for idx in range (3 , 6 ):
329+ data_list .append (self ._angle2int (data [idx ]))
330+ elif len (data ) == 1 :
331+ data_list .append (self ._coord2int (data [0 ]))
317332 elif mode == 0 :
318333 # self.calibration_parameters(degrees=data)
319- data_list = [self ._angle2int (i ) for i in data ]
334+ if len (data ) == 3 :
335+ for i in data :
336+ # if isinstance(i, list):
337+ if len (i ) == 6 :
338+ for idx in range (6 ):
339+ data_list .append (self ._angle2int (i [idx ]))
340+ elif len (i ) == 1 :
341+ data_list .append (self ._angle2int (i [0 ]))
342+ elif len (data ) == 6 :
343+ for idx in range (6 ):
344+ data_list .append (self ._angle2int (data [idx ]))
345+ elif len (data ) == 1 :
346+ data_list .append (self ._angle2int (data [0 ]))
320347 else :
321348 raise Exception ("id is not right, please input 0 or 1" )
322349
323- return self ._mesg (ProtocolCode .IS_IN_POSITION , data_list , id , has_reply = True )
350+ return self ._mesg (ProtocolCode .IS_IN_POSITION , id , data_list , mode , has_reply = True )
324351
325352 def is_moving (self , id ):
326353 """Detect if the robot is moving
@@ -462,7 +489,7 @@ def get_acceleration(self, id):
462489 return self ._mesg (ProtocolCode .GET_ACCELERATION , id , has_reply = True )
463490
464491 def set_acceleration (self , id , acc ):
465- """Read acceleration during all moves
492+ """Set acceleration during all moves
466493
467494 Args:
468495 id: 1/2/3 (L/R/W)
@@ -865,7 +892,7 @@ def get_plan_acceleration(self, id = 0):
865892 id: 0/1/2/3 (ALL/L/R/W)
866893
867894 Return:
868- [movel planning acceleration, movej planning acceleration] .
895+ acceleration value .
869896 """
870897 return self ._mesg (ProtocolCode .GET_PLAN_ACCELERATION , id , has_reply = True )
871898
@@ -1038,7 +1065,12 @@ def collision_switch(self, state):
10381065 return self ._mesg (ProtocolCode .COLLISION_SWITCH , state )
10391066
10401067 def is_collision_on (self ):
1041- """Get collision detection status"""
1068+ """Get collision detection status
1069+
1070+ Args:
1071+ 0 - close
1072+ 1 - open
1073+ """
10421074 return self ._mesg (ProtocolCode .IS_COLLISION_ON , 0 , has_reply = True )
10431075
10441076
0 commit comments