Skip to content

Commit e55353b

Browse files
committed
use wait_sync in absolute motion
1 parent b3556de commit e55353b

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

xarm/x3/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1291,7 +1291,7 @@ def __handle_report_normal_old(rx_data):
12911291
self._report_location_callback()
12921292

12931293
self._report_callback()
1294-
if not self._is_sync and self._error_code == 0 and self._state not in [4, 5]:
1294+
if not self._is_sync and self._error_code == 0 and self._state not in [4, 5, 6]:
12951295
self._sync()
12961296
self._is_sync = True
12971297

xarm/x3/xarm.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,7 @@ def _is_out_of_joint_range(self, angle, i):
7171
return True
7272
return False
7373

74-
def __wait_sync(self, relative=False):
75-
if not relative:
76-
return 0
74+
def __wait_sync(self):
7775
while not self._is_sync or self._need_sync:
7876
if not self.connected:
7977
return APIState.NOT_CONNECTED
@@ -195,9 +193,6 @@ def _set_position_relative(self, x=None, y=None, z=None, roll=None, pitch=None,
195193
self.__update_tcp_motion_params(spd, acc, mvt)
196194
return ret[0]
197195
else:
198-
code = self.__wait_sync(True)
199-
if code != 0:
200-
return code
201196
# use absolute api
202197
tcp_pos = [
203198
self._last_position[0] if x is None else (self._last_position[0] + float(x)),
@@ -219,6 +214,9 @@ def set_position(self, x=None, y=None, z=None, roll=None, pitch=None, yaw=None,
219214
only_check_type = kwargs.get('only_check_type', self._only_check_type)
220215
if only_check_type > 0 and wait:
221216
self.wait_move(timeout=timeout)
217+
code = self.__wait_sync()
218+
if code != 0:
219+
return code
222220
if relative:
223221
return self._set_position_relative(x=x, y=y, z=z, roll=roll, pitch=pitch, yaw=yaw, radius=radius,
224222
speed=speed, mvacc=mvacc, mvtime=mvtime, is_radian=is_radian,
@@ -396,9 +394,6 @@ def _set_servo_angle_relative(self, angles, speed=None, mvacc=None, mvtime=None,
396394
self.__update_joint_motion_params(spd, acc, mvt)
397395
return ret[0]
398396
else:
399-
code = self.__wait_sync(True)
400-
if code != 0:
401-
return code
402397
# use absolute api
403398
joints = self._last_angles.copy()
404399
for i in range(min(len(self._last_angles), len(angles))):
@@ -428,6 +423,9 @@ def set_servo_angle(self, servo_id=None, angle=None, speed=None, mvacc=None, mvt
428423
only_check_type = kwargs.get('only_check_type', self._only_check_type)
429424
if only_check_type > 0 and wait:
430425
self.wait_move(timeout=timeout)
426+
code = self.__wait_sync()
427+
if code != 0:
428+
return code
431429
if relative:
432430
return self._set_servo_angle_relative(angles, speed=speed, mvacc=mvacc, mvtime=mvtime, is_radian=is_radian,
433431
wait=wait, timeout=timeout, radius=radius, **kwargs)

0 commit comments

Comments
 (0)