CERES user guide
View Bridge in Foxglove
Foxglove shows the Bridge receiver's camera, head and hands in one workspace. It uses the standard Foxglove application and its built-in panels. Start with Bridge setup and keep the Linux or macOS receiver running.
Open the workspace
From the public CERES checkout's receiver directory, install the Foxglove option in the receiver's Python environment, then start the output:
python -m pip install '.[foxglove]'
ceres-bridge foxglove
For Foxglove on another computer, use ceres-bridge foxglove --host <receiver-LAN-address>. The command prints a connection address, an Open in Foxglove link and a layout download address.
- Open the printed Foxglove link, or choose Open connection > Foxglove WebSocket and enter the address.
- Download the layout from the printed address. In Foxglove, choose Layouts > Import from file and select it.
- On Quest, select Start streaming. Hold both hands in view and check that the connection and tracking indicators turn green.
The public layout files are also available directly. Use layout.json for H.264, vp8-layout.json for VP8 or ros-layout.json when connecting through ROS 2.
Read the display
Outward video appears beside the 3D scene. The scene shows the Quest headset, a blue left hand and a pink right hand when the receiver has the mesh assets installed. The camera image is projected in front of the headset. Tracking indicators report head and hand availability independently.
The live view below the camera provides head and wrist position and rotation waveforms, frame rates and CPU load. The remaining tabs provide:
- Resident memory, processing time, pose age, clock uncertainty and thumb-to-index distance.
- Stream diagnostics.
- All 25 joints for each hand, including pose, radius and tracking validity.
Video and poses update independently. The camera projection uses the CERES Player Quest 3 preset until a measured calibration is supplied. The preset describes the image view and its offset from the headset.
Run the dual-arm example
Start the output with ceres-bridge foxglove --robot xlerobot and import the printed dual-arm layout. Two 3D views show the robot and Quest acquisition side by side, with live video, wrist position and rotation, separate robot arm joint plots, frame rates and CPU load.
The example maps each wrist to an XLeRobot arm using CPU inverse kinematics. It also supports an IsaacTeleop wrist adapter and runs without Isaac Sim. Follow the dual-arm demo guide for setup and hand mapping. Use dual-arm-vp8-layout.json when receiving VP8.
Use headset and hand meshes
Start the output with the local viewer asset directory:
ceres-bridge foxglove --assets /path/to/bridge-viewer-assets
The directory contains quest-3.glb, mano-left.json and mano-right.json. These headset and hand assets remain local and are installed separately from the receiver. The XLeRobot geometry used by the dual-arm example is included in the receiver package with its Apache-2.0 attribution.
Pause and resume
Pause on the headset stops outgoing video and poses. Received rates fall to zero and tracking becomes unavailable. Resume starts fresh observations on the same paired connection. Exit stops the stream. The Foxglove workspace can stay open for reconnection.
The dual-arm guide describes motion topics and performance measurements. The Foxglove schemas define the published fields, and the ROS 2 adapter provides the ROS messages and launch files.