Optical Flow چیست؟ (برای مبتدی)
در فضاهای بسته (داخل ساختمان)، GPS سیگنال ضعیفی دارد یا اصلاً کار نمیکند. Optical Flow یک سنسور است که مثل ماوس کامپیوتری، حرکت تصویر زمین را زیر پهپاد تشخیص میدهد — اگر پهپاد به چپ برود، سنسور آن را میفهمد و FC جبران میکند.
سنسور PMW3901 یک چیپ Optical Flow رایج و ارزان است که به همراه یک سنسور فاصله (مثل VL53L1X یا یک سونار) کار میکند — سنسور فاصله ارتفاع واقعی را اندازه میگیرد تا محاسبه سرعت دقیق باشد. این ترکیب به پهپاد اجازه میدهد در حالت Loiter بدون GPS در جای خود ثابت بماند.
هدف این راهنما
نصب PMW3901 + VL53L1X روی پهپاد و تنظیم ArduPilot برای پرواز Loiter بدون GPS در فضای داخلی.
- پیشنیاز: پهپاد mini-quad با ArduPilot یا iNAV
- زمان: ۲ تا ۳ ساعت
تنظیم ArduPilot برای Optical Flow
// اتصال PMW3901:
// SPI: MISO=MISO, MOSI=MOSI, SCK=SCK, CS=CS
// یا از طریق ماژول از پیش سوار (Matek 3901-L0X)
// پارامترهای ArduPilot (Mission Planner):
FLOW_TYPE = 6 // PMW3901 از طریق SPI
FLOW_FXSCALER = 0 // scaling خودکار
FLOW_FYSCALER = 0
FLOW_ORIENT_YAW = 0 // جهت سنسور (چرخش نصب)
// سنسور فاصله VL53L1X از طریق I2C:
RNGFND1_TYPE = 16 // VL53L1X
RNGFND1_ADDR = 41 // آدرس I2C
// فعالسازی Optical Flow Fusion:
EK3_SRC1_VELXY = 5 // Optical Flow
EK3_SRC1_POSZ = 6 // Range Finder برای Z
// Loiter بدون GPS:
// نیاز به EK3 + ارتفاع ثابت زیر ۵ متر
// GPS_TYPE = 0 (غیرفعال) برای فضای داخلی
کالیبراسیون Optical Flow
// کالیبراسیون FLOW_FXSCALER/FYSCALER:
// پهپاد را ۱ متر بالای یک سطح با بافت پرواز دهید
// در حالت ALT_HOLD با Throttle ثابت به جلو بروید
// در MissionPlanner، FLOW.bodyX را با GPS.vx مقایسه کنید
// نسبت = ضریب calibration
// مثال: اگر FLOW.bodyX = 0.8 × GPS.vx → FLOW_FXSCALER = 20 اضافه کنید
چکلیست تست
| تست | نتیجه |
|---|---|
| FLOW_TYPE در MP خوانده میشود؟ | Sensor Health = OK |
| Range Finder ارتفاع صحیح میدهد؟ | بله — نسبت به کف |
| در ALT_HOLD پهپاد Drift میکند؟ | کمتر از ۰.۵m/min = خوب |
| در Loiter در جا میماند؟ | ±۳۰cm قابل قبول |