Browse Source

add display fps configuration

main
Lizhi Yang 4 months ago
committed by silencht
parent
commit
b0d751101b
  1. 12
      src/televuer/televuer.py
  2. 4
      src/televuer/tv_wrapper.py

12
src/televuer/televuer.py

@ -11,7 +11,7 @@ from pathlib import Path
class TeleVuer: class TeleVuer:
def __init__(self, use_hand_tracking: bool, pass_through:bool=False, binocular: bool=True, img_shape: tuple=None, def __init__(self, use_hand_tracking: bool, pass_through:bool=False, binocular: bool=True, img_shape: tuple=None,
cert_file=None, key_file=None, webrtc: bool=False, webrtc_url: str=None):
cert_file=None, key_file=None, webrtc: bool=False, webrtc_url: str=None, display_fps: float=60.0):
""" """
TeleVuer class for OpenXR-based XR teleoperate applications. TeleVuer class for OpenXR-based XR teleoperate applications.
This class handles the communication with the Vuer server and manages image and pose data. This class handles the communication with the Vuer server and manages image and pose data.
@ -31,8 +31,10 @@ class TeleVuer:
:param key_file: str, path to the SSL key file. :param key_file: str, path to the SSL key file.
:param webrtc: bool, whether to use WebRTC for real-time communication. if False, use ImageBackground. :param webrtc: bool, whether to use WebRTC for real-time communication. if False, use ImageBackground.
:param webrtc_url: str, URL for the WebRTC offer. :param webrtc_url: str, URL for the WebRTC offer.
:param display_fps: float, target frames per second for display updates (default: 60.0).
""" """
self.use_hand_tracking = use_hand_tracking self.use_hand_tracking = use_hand_tracking
self.display_fps = display_fps
self.pass_through = pass_through self.pass_through = pass_through
self.binocular = binocular self.binocular = binocular
@ -309,7 +311,7 @@ class TeleVuer:
to="bgChildren", to="bgChildren",
) )
# 'jpeg' encoding should give you about 30fps with a 16ms wait in-between. # 'jpeg' encoding should give you about 30fps with a 16ms wait in-between.
await asyncio.sleep(0.016)
await asyncio.sleep(1.0 / self.display_fps)
async def main_image_monocular(self, session): async def main_image_monocular(self, session):
if self.use_hand_tracking: if self.use_hand_tracking:
@ -350,7 +352,7 @@ class TeleVuer:
], ],
to="bgChildren", to="bgChildren",
) )
await asyncio.sleep(0.016)
await asyncio.sleep(1.0 / self.display_fps)
async def main_image_binocular_webrtc(self, session): async def main_image_binocular_webrtc(self, session):
if self.use_hand_tracking: if self.use_hand_tracking:
@ -389,7 +391,7 @@ class TeleVuer:
to="bgChildren", to="bgChildren",
) )
await asyncio.sleep(0.016)
await asyncio.sleep(1.0 / self.display_fps)
async def main_image_monocular_webrtc(self, session): async def main_image_monocular_webrtc(self, session):
if self.use_hand_tracking: if self.use_hand_tracking:
@ -427,7 +429,7 @@ class TeleVuer:
to="bgChildren", to="bgChildren",
) )
await asyncio.sleep(0.016)
await asyncio.sleep(1.0 / self.display_fps)
# ==================== common data ==================== # ==================== common data ====================
@property @property
def head_pose(self): def head_pose(self):

4
src/televuer/tv_wrapper.py

@ -194,7 +194,7 @@ class TeleData:
class TeleVuerWrapper: class TeleVuerWrapper:
def __init__(self, use_hand_tracking: bool, pass_through: bool=False, binocular: bool=True, img_shape: tuple=(480, 1280), def __init__(self, use_hand_tracking: bool, pass_through: bool=False, binocular: bool=True, img_shape: tuple=(480, 1280),
cert_file = None, key_file = None, webrtc: bool=False, webrtc_url: str=None,
cert_file = None, key_file = None, webrtc: bool=False, webrtc_url: str=None, display_fps: float=60.0,
return_hand_rot_data: bool=False): return_hand_rot_data: bool=False):
""" """
TeleVuerWrapper is a wrapper for the TeleVuer class, which handles XR device's data suit for robot control. TeleVuerWrapper is a wrapper for the TeleVuer class, which handles XR device's data suit for robot control.
@ -219,7 +219,7 @@ class TeleVuerWrapper:
self.use_hand_tracking = use_hand_tracking self.use_hand_tracking = use_hand_tracking
self.return_hand_rot_data = return_hand_rot_data self.return_hand_rot_data = return_hand_rot_data
self.tvuer = TeleVuer(use_hand_tracking=use_hand_tracking, pass_through=pass_through, binocular=binocular,img_shape=img_shape, self.tvuer = TeleVuer(use_hand_tracking=use_hand_tracking, pass_through=pass_through, binocular=binocular,img_shape=img_shape,
cert_file=cert_file, key_file=key_file, webrtc=webrtc, webrtc_url=webrtc_url)
cert_file=cert_file, key_file=key_file, webrtc=webrtc, webrtc_url=webrtc_url, display_fps=display_fps)
def get_tele_data(self): def get_tele_data(self):
""" """

Loading…
Cancel
Save