From 68d7898603ff52101ec26859aab4fa11a5380520 Mon Sep 17 00:00:00 2001 From: Vinman Date: Mon, 29 Jun 2026 17:08:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(vive-tracker):=20=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=20=5F=5Fdel=5F=5F=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=94=9F=E5=91=BD=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devices/umi/vive_tracker/vive_tracker.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/ufactory_lerobot/devices/umi/vive_tracker/vive_tracker.py b/src/ufactory_lerobot/devices/umi/vive_tracker/vive_tracker.py index a5b0631..22dc2c3 100644 --- a/src/ufactory_lerobot/devices/umi/vive_tracker/vive_tracker.py +++ b/src/ufactory_lerobot/devices/umi/vive_tracker/vive_tracker.py @@ -81,20 +81,25 @@ class ViveTracker(metaclass=SingletonMeta): def stop(self): """停止采集线程 (不释放 context, 可重新 start)""" + logger.info("Stopping Vive Tracker pose tracking...") self.running = False if self._collector_thread is not None: self._collector_thread.join(timeout=2.0) self._collector_thread = None + logger.info("Vive Tracker pose tracking stopped") def close(self): """停止采集并释放 pysurvive context。""" self.stop() if self._context is not None: try: + logger.info("Closing Vive Tracker pysurvive context...") self._context.close() - except Exception: - pass + logger.info("Vive Tracker pysurvive context closed") + except Exception as e: + logger.debug(f"Vive Tracker context close error: {e}") self._context = None + logger.info("Vive Tracker disconnected") def __del__(self): # 只做兜底清理,吞掉所有异常避免 __del__ 抛异常导致解释器崩溃 @@ -103,16 +108,6 @@ class ViveTracker(metaclass=SingletonMeta): except Exception: pass - def __del__(self): - logger.info("Stopping Vive Tracker pose tracking...") - self.running = False - # 等待线程结束 - if self._collector_thread: - self._collector_thread.join(timeout=2.0) - # 清理资源 - self._context = None - logger.info("Vive Tracker disconnected") - # def list_devices(self): # import pysurvive # for obj in self._context.Objects():