@ -624,11 +624,11 @@ def start_camera_relay(server, zmq_port=55555):
except Exception :
pass
# SHM name -> (camera_id, jpeg_quality)
# SHM name -> (camera_id, jpeg_quality, cv2_rotation or None )
CAMERAS = [
( " head " , 0 , 85 ) ,
( " left " , 1 , 70 ) ,
( " right " , 2 , 70 ) ,
( " head " , 0 , 85 , None ) ,
( " left " , 1 , 70 , cv2 . ROTATE_90_COUNTERCLOCKWISE ) ,
( " right " , 2 , 70 , cv2 . ROTATE_90_COUNTERCLOCKWISE ) ,
]
def _relay_loop ( ) :
@ -640,7 +640,7 @@ def start_camera_relay(server, zmq_port=55555):
logger . info ( " Camera relay: waiting for Isaac Sim shared memory... " )
# Wait for at least one camera
while not active_cameras :
for name , cam_id , quality in CAMERAS :
for name , cam_id , quality , rotation in CAMERAS :
img = reader . read_single_image ( name )
if img is not None :
active_cameras . add ( name )
@ -654,7 +654,7 @@ def start_camera_relay(server, zmq_port=55555):
while True :
try :
for name , cam_id , quality in CAMERAS :
for name , cam_id , quality , rotation in CAMERAS :
if name not in active_cameras :
# Periodically retry missing cameras
if frame_counts [ " head " ] % 150 == 0 :
@ -671,6 +671,8 @@ def start_camera_relay(server, zmq_port=55555):
cur_ts = reader . last_timestamps . get ( name , 0 )
if cur_ts > last_ts [ name ] :
last_ts [ name ] = cur_ts
if rotation is not None :
img = cv2 . rotate ( img , rotation )
ok , buf = cv2 . imencode ( " .jpg " , img , [ cv2 . IMWRITE_JPEG_QUALITY , quality ] )
if ok :
server . set_webcam_frame ( buf . tobytes ( ) , camera_id = cam_id )