کنترل خودکار موقعیت کوادروتور بر اساس بینایی ماشین

 

 

مدتی هست که بیشتر مشغول انجام پایان نامه دانشگاه هستم و یک بخش از پایان نامه در مورد کنترل خودکار موقعیت کوادروتور تو محیط بسته (داخل ساختمان) هست. یکم درمورد روش این کار توضیح میدم.

مهمترین بخش کنترل موقعیت کوادروتور ، اندازه گیری موقعیت هست! از اونجایی که GPS تو محیط داخل ساختمان آنتن نمیده و اگر هم بده خطای بیش از 2-3 متر داره، به هیچ عنوان قابل استفاده نیست.

برای همین من از پردازش تصویر برای اندازه گیری حرکت کوادروتور (سرعت) استفاده کردم. این روش اندازه گیری سرعت از تصویر که اصطلاحا شارنوری (Optical Flow) گفته میشه خودش چندین متد مختلف داره. من از متد LK که یک روش مبتنی بر ویژگی تصویر (Feature based) هست استفاده کردم.

برای اینکه حرکت کوادروتور کاملا خودمختار یا اصطلاحا Fully Autonomous باشه لازمه که پردازش تصویر هم روی کواد روتور انجام بشه. به عبارت دیگه همونطور که از اسم "خودمختار" مشخصه، نباید به تجهیزات خارج از ربات وابستگی داشته باشه.

 مثلا تو ویدئو های هیجان انگیزی که از آزمایشگاهای دانشگاه زوریخ و پنسیلوانیا در مورد پرواز عجیب غریب کوادروتور تو اینترنت هست و احتمالا دیده اید، اندازه گیری موقعیت ربات (یکی از مهمترین بخشها) توسط دوربین های نصب شده در بالای اتاق انجام میشه و خود کوادروتور به تنهایی یک سیستم خودمختار نیست! بلکه کوادروتور + دوربینهای مخصوص اتاق + سوپر کامپیوتر اونجا، روی هم میشن یک سیستم خودمختار. به عبارت دیگه، اگه همون کوادروتور را ببرن خارج اون اتاق، حتی نمی تونه سرجای خودش بایسته! لبخند

خلاصه اینکه من برای خودمختار کردن ربات، یک پردازنده نسبتا قوی ARM دو هسته ای با کلاک 1.6 گیگا هرتز روی خود کوادروتور سوار کردم و پردازش رو روی همون انجام میدم. تو لینک زیر در مورد جزییاتش صحبت کردم:

 پردازش تصویر روی مارس بورد

  با استفاده از اطلاعات سرعتی که پردازش تصویر در اختیار میده میشه موقعیت کوادروتور رو کنترل کرد.

تا اونجایی که من اطلاع دارم توی ایران تا این لحظه کسی موفق به انجام این کار نشده بوده!نیشخند خب برای همین منم کلی ذوق زده شدم و یه ویدئو از تست های اولیه گرفتم که تو اینجا می تونید ببینیدش:

لینک ویدئو

البته باید یکسری بهینه سازی تو نرم افزار انجام بشه که بعد 20 دی روش کار خواهم کرد.  

بخش دیگه ای که انجام شده (ولی تو ویدئو بالایی استفاده نشده) کنترل ارتفاع بر اساس سنسور سونار هست. در مورد روشهای مختلف این کار هم کمی تو تاپیک زیر صحبت شده (یکم قدیمیه) :

 خودکار سازی کوادروتور

 

قبلا در مورد مراحل خودکار سازی کوادروتور تو فروم های مختلف صحبت کردم ولی گفتم اینجا یک مطلب کلی تر قرار بدم تا بقیه دوستان هم تشویق بشن به سمت این کار برن و مسابقات رباتهای پرنده تو ایران یکم از حالت کنترل دستی دربیاد و بیشتر شبیه مسابقات رباتیک بشه.

*ویدئو جدید تر  

 

/ 12 نظر / 132 بازدید
نمایش نظرات قبلی
علی

سلام.با تشکر از پست خوبتون با توجه به اینکه منابع در مورد کنترل کوادروتور با پردازش تصویر خیلی گنگ و کمه میشه یه خورده بیشتر در این زمینه توضیح بدید؟مثلا اگه از مارس برد استفاده کنیم باید بازم از کنترلر استفاده کنیم.یا در صورت استفاده ازپردازش تصویر باید تا چه حد از سنسور های دیگه مثل شتاب سنج و ... استفاده کنیم؟اگر در این زمینه ها راهنمایی کنید واقعا ممنون میشم.

حسین

بسیار مفید بود. یکی از کاربردهای مورد علاقه من در حوزه پردازش تصویر و بینایی ماشین به صورت بلادرنگ !!!!!!!! : http://www.engadget.com/2014/02/10/fish-on-wheels/ http://www.aparat.com/v/qapuY موفق باشین.

علی

بسیار ممنونم

سید علی

ببخشید چند تا سوال برام پیش اومده: 1-این sbc ها مثل marsboard یا beaglebone برای پردازش تصویر کند نیستند؟ 2-با اتصال usb میشه وب کم ها رو به marsboard وصل کرد دیگه؟! 2-اگر بخوام کار پردازش تصویر ربات پرنده رو روی لپ تاپ وبا متلب انجام بدم دوربینی داریم که به صورت وایرلس اطلاعات رو بفرسته واسه متلب؟

حسین

سلام در مورد سوال قبلی دوستمون "سید علی" ، بخش آخر : آقا فرزاد اینکه گفتین دوربین مناسبی سراغ ندارین ، این معنی رو میده که در صورت وجود دوربین مناسب این راه عملی و منطقیه ؟ چون من خیلی وقته از ارتباط با کامپیوتر قطع امید کردم ، الان پیش خودم گفتم شاید یه بار دیگه این راه رو باید بررسی کنم . البته به کار مورد نیاز هم بستگی داره فکر کنم ، بالاخره باید دید چه مقدار تاخیر مشکل ساز نیست برامون. یه مورد دیگه : آیا این دوربین های وایرلس کارت کپچر هم میخواد؟ نظرتون در مورد آی پی کم ها چیه؟ البته کم و بیش در جریان بحث های قبلی تون (فروم های مختلف) هستم. سپاس

حسین

سلام من هرچی در مورد پردازش تصویر روی این بوردها میخونم گیج تر میشم ! این لینوکس روی این بوردها چجوریه؟ زمان بالا اومدن داره؟ شما برای کار بر روی این بوردهای با سیستم عامل لینوکس ، از lcd استفاده میکنید دیگه؟ یعنی بورد، خروجی تصویر داره؟ برای استفاده از opencv فرق بین روش مسقیم و کراس کامپایل چیه؟ آیا برنامه ی پردازش تصویر ما ، مثلا تعقیب رنگ ، به محض روشن شدن بورد و بالا آمدن سیستم عاملش ، شروع به اجرا میشود؟ یا اینکه برنامه ما ، همانند یک app عمل خواهد کرد؟(مثل اپ های اندرویدی). آیا خود وجود سیستم عامل ، ما رو از هدفمون ، یعنی ساخت یک دیوایس embed دور نمیکنه؟ (دردسر نداره لینوکس؟، هنگ کنه ،تاخیر داشته باشه و ...) زبان برنامه نویسی اتون بر روی لینوکس چی هست؟ (java ؟ ) IDE اتون چی هست ؟ (eclipse ؟ ) اگه opencv رو روی خود بورد کامپایل کنید ، اون موقع رو چه IDE کد میزنید پس ؟! یعنی به بورد اتون ، کی بورد و موس و ال سی دی وصل میکنید و همونجا برنامه نویسی میکنید ؟! اصلا چطوره خود متلب رو کامپایل کنم رو همین بوردها؟! یا یه تبلت ویندوزی که متلب روش بالا میاد(مثلا سرفیس ماکروسافت) رو بذارم تو دیوایسم ؟ [نیشخند]

حسین

... ابته این قسمت آخر شوخی بود [لبخند] خیلی سوال پرسیدم . شرمنده بسیار ممنونم

حسین

از دیگر کاربردهای این حوزه : Eye Tracking [ Surface + Kinect ] http://www.youtube.com/watch?v=JObFlEvc-Eg [لبخند]

حسن

سلام .خوشحالم از اینکه با شما اشنا شدم.من دانشجوی ارشد مکاترونیک دانشگاه ازاده قزوینم.یه سوال داشتم اونم اینکه بخوام انلاین از کوادروتورر تصویر بگیرم و پردازش بکنم بحث لرزش و نویز روی تصویرم تاثیر داره یا نه واینکه میتونم به عنوان پایان نامه روش کار کنم یا نه .اگه کمکم کنید ممنون میشم

mehra kazemi

سلام دوست عزیز ببخشید یه سوال من می خوام به زبان c++ برنامه ای بنویسم و احتیاج دارم اونو روی avr لود کنم آیا واقعا نرم افزار atmel studio این کار رو برامون انجام میده آیا این توانایی رو داره برنامه رو به زبان ماشین (فایل هگز) تبدیل کنه ؟ ممنون میشم منو راهنمایی کنی با تشکر