Replaces manual H264/TCP stereo streaming with NVIDIA CloudXR for
higher-quality stereoscopic rendering and lower latency.
Changes:
- teleop_xr_agent.py: add --cloudxr flag (enables Isaac Sim XR mode,
disables manual StreamingManager)
- deps/cloudxr/: NVIDIA CloudXR.js SDK (Early Access) with Isaac Lab
teleop React web client
- deps/cloudxr/Dockerfile.wss.proxy: HAProxy WSS proxy for PICO 4 Ultra
HTTPS mode (routes wss://48322 → ws://49100)
- deps/cloudxr/isaac/webpack.dev.js: disable file watching to avoid
EMFILE errors with large node_modules
- deps/cloudxr/INSTALL.md: full setup guide
Usage:
# Start CloudXR Runtime + Isaac Lab
cd ~/IsaacLab && ./docker/container.py start \
--files docker-compose.cloudxr-runtime.patch.yaml \
--env-file .env.cloudxr-runtime
# Run teleop with CloudXR
~/IsaacLab/isaaclab.sh -p teleop_xr_agent.py \
--task Isaac-MindRobot-2i-DualArm-IK-Abs-v0 --cloudxr
# Serve web client
cd deps/cloudxr/isaac && npm run dev-server:https
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
/**
|
|
* Override PressureObserver to catch errors from unexpected browser implementations.
|
|
*
|
|
* Some browsers have buggy PressureObserver implementations that throw errors
|
|
* when observe() is called. This wrapper catches and logs those errors instead
|
|
* of letting them propagate.
|
|
*
|
|
* This should be called early in your application, before any code attempts
|
|
* to use PressureObserver.
|
|
*/
|
|
export function overridePressureObserver(): void {
|
|
if (typeof window === 'undefined' || !(window as any).PressureObserver) {
|
|
return;
|
|
}
|
|
|
|
const OriginalPressureObserver = (window as any).PressureObserver;
|
|
|
|
(window as any).PressureObserver = class PressureObserver extends OriginalPressureObserver {
|
|
observe(source: any) {
|
|
try {
|
|
const result = super.observe(source);
|
|
if (result && typeof result.catch === 'function') {
|
|
return result.catch((e: Error) => {
|
|
console.warn('PressureObserver.observe() failed:', e.message);
|
|
return undefined;
|
|
});
|
|
}
|
|
return result;
|
|
} catch (e: any) {
|
|
console.warn('PressureObserver.observe() failed:', e.message);
|
|
return undefined;
|
|
}
|
|
}
|
|
};
|
|
}
|