claudeDroneteam-docs
documentation · reference
Docs reference

Structured knowledge from collected_doc_media/claudedrone_docs/. Browse the tree on the left; the source of truth is markdown in the repo.

PMW3901 — limits and behavior (research)

Minimum / maximum altitude, lighting and floor-contrast requirements, FOV, sample rate — what matters for indoor optical flow.

stableresearchbestupdated 2026-05-11T00:00:00.000ZClaudeDroneResearchPMW3901LimitsOpticalFlow

Final limits

Parameter Value Comment
Minimum altitude 8 cm below — focus lost, noise
Maximum altitude 3-4 m typical indoor; up to 30 m outdoor with good contrast realistically ≤3 m indoor
Minimum illuminance ~60 lux darker — noise accumulates
Floor contrast critical white laminate, glossy floor — low contrast → drift
FOV 42° at h=1 m, footprint ~80 cm
Sample rate up to 121 fps (full mode) typical ~30-50 fps in sustained SPI
Interface SPI (mode 3) not I²C

Indoor caveats

  1. Floor surface critical. Plain laminate / linoleum — sensor sees a “smooth sea,” flow drift accumulates. Solutions:
    • stickers / floor patterns for tests
    • textured mat
    • additional fallback to rangefinder + IMU dead reckoning
  2. Low illuminance = noise. Add extra light or an IR LED on the drone.
  3. Reflective floor (glossy tile, wet concrete) — sensor sees its reflection, glitches. Workaround: matte surface.

Comparison with CXOF (a PMW3901-based ready module)

Aspect PMW3901 raw chip CXOF (Holybro)
Connection SPI, needs your own MCU UART, ready ArduPilot protocol
Price ~$10 ~$50
Stack own driver FLOW_TYPE=6 parameter in ArduPilot
Applicability research / custom production-ready

See CXOF setup — concrete ArduPilot wiring workflow.

Integration with EKF3

Optical flow is the source for EK3_SRC1_VELXY=5. Without it, ArduPilot indoor without GPS has no XY velocity → EKF3 doesn’t converge, the drone doesn’t arm. See EKF3 multi-sensor fusion.

Sources

  1. PixArt PMW3901MB-TXQT datasheet R1.10 (mirror in Espressif esp-drone repo)
  2. ArduPilot wiki — OpticalFlow params (FLOW_TYPE, FLOW_*)
  3. Bitcraze documentation — flow deck v2 (PMW3901)
© 2026 claudeDrone Team · auto-pipeline · Nuxt 3 SSR