41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
"""
|
|
odometry_api.py — Odometry interface wrapper
|
|
"""
|
|
import sys
|
|
import os
|
|
from Core.env_loader import PROJECT_ROOT
|
|
|
|
ODOM_AVAILABLE = False
|
|
odom = None
|
|
|
|
|
|
def init_odometry(zmq_sock=None) -> bool:
|
|
"""Start odometry tracking. Returns True if successful."""
|
|
global ODOM_AVAILABLE, odom
|
|
|
|
# marcus_odometry.py lives in Navigation/
|
|
nav_dir = os.path.join(PROJECT_ROOT, "Navigation")
|
|
for d in (nav_dir,):
|
|
if d not in sys.path:
|
|
sys.path.insert(0, d)
|
|
|
|
try:
|
|
from marcus_odometry import Odometry
|
|
odom = Odometry()
|
|
ODOM_AVAILABLE = odom.start(zmq_sock=zmq_sock)
|
|
print(f"Odometry {'started' if ODOM_AVAILABLE else 'failed'}")
|
|
return ODOM_AVAILABLE
|
|
except ImportError as e:
|
|
print(f"marcus_odometry.py not found ({e}) — precise distance disabled")
|
|
return False
|
|
except Exception as e:
|
|
print(f"Odometry error: {e} — precise distance disabled")
|
|
return False
|
|
|
|
|
|
def get_position():
|
|
"""Return current position dict or None."""
|
|
if odom and ODOM_AVAILABLE:
|
|
return odom.get_position()
|
|
return None
|