Skip to main content
🤖AI-generated documentation curatedAI Generated
This page was drafted by an AI assistant and may contain inaccuracies.
About content generation types
🤖
AI GeneratedPage drafted entirely by AI from codebase or prompt instructions.
(e.g., docs generated from codebase analysis)
← this page
✋→🤖
AI TransformattedHuman provided raw material; AI restructured it into a different format.
(e.g., livestream → blog post, meeting notes → docs)
Human GeneratedPage written entirely by a human author.
(e.g., hand-written tutorial)
More info about content generation types ↗

Camera Setup

FreeMoCap works with standard USB cameras. This guide covers hardware selection, physical setup, and configuration.

Supported Cameras

Any USB camera accessible via OpenCV's VideoCapture backend should work. Tested configurations:

CameraResolutionFPSNotes
Logitech C9201080p / 720p30 / 60Widely used, reliable
Logitech C9221080p / 720p30 / 60Similar to C920 with better low light
Logitech Brio4K / 1080p30 / 60Higher resolution, wider FOV
Elgato Cam Link1080p60HDMI capture (use with DSLR/mirrorless)
Generic USB webcamsVariableVariableMay work, quality varies

Camera Count Recommendations

CamerasQualityUse case
2BasicSingle-plane motion, limited occlusion handling
3-4GoodGeneral mocap, most body movements
5-6BetterFull-body with occlusion handling
7+BestHigh-precision, complex movements, multiple subjects

More cameras improve triangulation accuracy and reduce occlusion issues, but increase USB bandwidth requirements and GPU load.

Physical Setup

Camera Placement

  • Elevation: Cameras should be slightly above the capture volume, angled down (~15-30°)
  • Spacing: Distribute cameras evenly around the capture volume. Avoid clustering cameras on one side.
  • Distance: Cameras should be far enough to see the full body throughout the movement range
  • Background: Avoid busy backgrounds — they increase false positive detections

USB Bandwidth

USB cameras consume significant bandwidth. Key considerations:

  • Use separate USB controllers when possible (not just different ports on the same hub)
  • USB 3.0 provides more bandwidth than USB 2.0
  • Lower resolution = less bandwidth = more cameras on one controller
  • If cameras disconnect or drop frames, spread them across USB controllers

Lighting

  • Bright, even lighting improves detection accuracy
  • Avoid backlighting (subject dark against bright background)
  • Avoid harsh shadows that obscure body parts
  • Diffuse lighting works best

Calibration Board

FreeMoCap uses a ChArUco board for camera calibration. You need a printed ChArUco board:

  • Board files are in shared/charuco/ in the repository
  • Print on rigid material (foam board, cardboard) for flatness
  • Standard board: a letter-size ChArUco layout (configurable in the calibration settings), with ArUco markers in the white squares
  • The board dimensions must match the calibration config in the UI

Camera Configuration

Cameras are configured through the FreeMoCap UI (sidebar → Camera Config Tree). Key settings:

SettingRecommendation
Resolution720p (good balance of quality and bandwidth)
Framerate30 FPS minimum, 60 FPS for fast movements
ExposureManual, fixed (auto-exposure changes during recording cause calibration drift)
FocusManual, fixed on the capture volume
White balanceManual, fixed

Multiple Camera Synchronization

FreeMoCap uses software synchronization — cameras are not hardware-genlocked. Frame timestamps are aligned in post-processing using the recording's inter-camera timing data. For best results:

  • Use cameras that support consistent framerates (not variable frame rate)
  • Keep recording sessions under 30 minutes to minimize sync drift
  • The mean_inter_camera_sync_ms metric in recording responses shows sync quality