mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-18 10:10:08 +00:00
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Check if the Unitree locomotion DDS domain / LocoClient is already initialized.
|
|
Does NOT send any commands — safe to run.
|
|
"""
|
|
|
|
import sys
|
|
import psutil # pip install psutil if missing
|
|
import os
|
|
|
|
sys.path.append('/Users/nepyope/Documents/unitree/unitree_IL_lerobot/unitree_sdk2_python')
|
|
|
|
from unitree_sdk2py.core.channel import ChannelFactory
|
|
|
|
def is_loco_domain_active():
|
|
"""Detect if a ChannelFactory singleton is already initialized in this process."""
|
|
fac = ChannelFactory()
|
|
active = getattr(fac, "_ChannelFactory__initialized", False)
|
|
participant = getattr(fac, "_ChannelFactory__participant", None)
|
|
domain = getattr(fac, "_ChannelFactory__domain", None)
|
|
return active, participant, domain
|
|
|
|
def check_other_python_processes():
|
|
"""See if another Python process using the Unitree SDK is alive."""
|
|
procs = []
|
|
for p in psutil.process_iter(attrs=["pid", "name", "cmdline"]):
|
|
try:
|
|
if "python" in p.info["name"].lower() and any("unitree" in arg for arg in p.info["cmdline"]):
|
|
procs.append((p.info["pid"], " ".join(p.info["cmdline"])))
|
|
except Exception:
|
|
pass
|
|
return procs
|
|
|
|
if __name__ == "__main__":
|
|
active, participant, domain = is_loco_domain_active()
|
|
print("=== Local DDS Factory State ===")
|
|
print(f"Factory initialized: {active}")
|
|
print(f"Participant: {participant}")
|
|
print(f"Domain: {domain}")
|
|
print()
|
|
|
|
print("=== Other Python processes using Unitree SDK ===")
|
|
procs = check_other_python_processes()
|
|
if not procs:
|
|
print("No other active Unitree-related Python processes found.")
|
|
else:
|
|
for pid, cmd in procs:
|
|
print(f"PID {pid}: {cmd}")
|
|
|
|
print()
|
|
if os.path.exists("/tmp/CycloneDDS"):
|
|
print("Warning: /tmp/CycloneDDS exists — could indicate leftover DDS shared memory.")
|