ناوبری با دوربین

هر موقع صحبت از ناوبری و یا مکان یابی یه شی، ربات و یا هر چیزی میشه اکثرمون یاد GPS میوفـتیم. خب GPS ها معمولا خیلی دقیق هستن ولی یه مشکل بزرگی که دارن برای محیط های داخل ساختمون یا به اصطلاح indoor مناسب نیستن و نمیتونن اطلاعات درستی بهمون بدن و کار نمیکنن. بجاش میتونیم از دوربین استفاده کنیم! و با پیاده سازی الگوریتم های optical flow رو تصاویر، سرعت و جابجایی جسم رو در بیاریم. حالا optical flow این وسط چیه؟!

یه تصویر ساده از نحوه کارکرد الگوریتم optical flow
یه تصویر ساده از نحوه کارکرد الگوریتم optical flow

خب میدونیم هر تصویری از یه تعداد مشخص پیکسل تشکیل شدن و با توجه به نوع تصویر که سیاه سفید باشه یا رنگی، هر کدوم از اون پیکسل ها خودشون از یه تعدادی کانال (RGB و یا Grayscale) تشکلیل شدن.کاری که الگوریتم optical flow انجام میده اینه که بیاد فریم به فریم تصویر رو از دوربین بگیره و جابجایی و یا حرکت پیکسل هارو تشخیص بده و همچنین بتونه سرعت تغییرات رو بهمون بگه. تصویر بالا رو نگاه کنید! مثلا تو فریم اول فقط نور قرمز رنگ 1 تو تصویر باشه و در فریم بعدی نور قرمز بره تو موقعیت 2
حالا الگوریتم optical flow تشخیص میده این جابجایی رو و همچنین میتونه بهمون بگه که با چه سرعتی این جابجایی رخ داده!

این الگوریتم کاربرد های متنوعی داره که یکیش در ربات های پرنده هستش.

حفظ موقعیت مکانی ربات پرنده با optical flow
حفظ موقعیت مکانی ربات پرنده با optical flow

یکی از چالش های ربات های پرنده اینه که بتونه موقعیت خودشو تو پرواز حفظ کنه(position hold) یعنی یهو تو درو دیوار نره!
کاری که میشه انجام داد استفاده از دوربین و اجرای الگوریتم optical flow روی اون هستش.با اینکار ما سرعت پرنده رو داریم و اگه ربات در هوا جابجا بشه سرعت و جابجایی رو به ما اعمال میکنه. که ما هم میتونیم با اطلاعاتی که از سرعت و جابجایش میده موقعیت ربات رو کنترل کنیم. البته اینم بگم که حتما نباید دوربین گذاشت و الگوریتم رو روش اجرا کرد، از سنسور های optical flow هم میشه کمک گرفت که خودشون همه کارو انجام میدن.البته این نکته رو نباید فراموش کنیم که سطح زمین هم بایستی دارای feature (دارای رنگ ها و یا اشکال متنوع)باشه تا الگوریتم به خوبی کار کنه.

راه های دیگه ای هم برای مکان یابی و ناوبری شی و یا ربات وجود داره که الگوریتم optical flow فقط یدونش بود.