PDA

View Full Version : یه راهکار لازم دارم(در مورد ربات)



Himalaya
پنج شنبه 25 بهمن 1386, 09:27 صبح
بزارید اول تصویر رو تو ذهن شما ترسیم کنم که اصلا چی داریم و چی میخوام...یه ربات فوتبالیست و یک توپ ویک دوربین بالای زمین ویک کامپیوتر و ... تا همین جا کافیه...بالای ربات 4 تا کاغذ رنگی دایره ای قرار گرفتن...2تا عقب و جلو و 2 تا چپ و راست...به حالت لوزی...کاغذ جلو به رنگ صورتی جلوی ربات رو مشخص میکنه و کاغذ عقب(آبی)پشت ربات رو مشخص میکنه(دقیقا در یک راستا)...یه توپ هم داریم به رنگ نارنجی...در ضمن من عکسها رو به صورت پیکسلی (rgb) چک میکنم(برای تشخیص رنگا...هر ثانیه 20 تا عکس چک میشن...حرکتهای ربات برای جلو و عقب و چپ و راست و چرخش به راست وچپ تعریف شده...مشکل اینه که من چطوری میتونم سر رباتو به طرف توپ بچرخونم...من خودم یه کاری کردم ولی خوب جواب نمیده...دلیلشو هم میگم...(در ضمن اینو هم بکم که کاغذهای رنگی
دایره ای قطرشون تقریبا 4 سانته)...توضیح کاری که کردم...وقتی چک کردن یک عکس تموم میشه من 1 پیکسل از کاغذ جلوی ربات و یک پیکسل از کاغذ عقب ربات دارم که مختصات هردوی اونا رو هم تو متغیرهایی ذخیره کردم...از طریق این دو نقطه 1 معادله خط تشکیل دادم و گفتم اگه هنگام چرخش ربات (تو هر عکس این معادله عوض میشه...چون مختصات اون 2 نقطه در حال تغییره) تو معادله بدست آمده از اون 2 نقطه در اون تصویر، مختصات پیکسل پیدا شده از توپ رو قرار بدم هر دو طرف اون معاده در صورتی صفر میشه که پیکسل مربوط به توپ جزء اون خط باشه(یا X توپ رو بذارم تو معادله و Y توپ بدست بیاد)..در این صورت اون 3 نقطه روی 1 خط هستن...پس سر ربات به سمت توپه...اما مشکل این روش...
1.ممکنه2 پیکسل از ربات به صورتی انتخاب بشن که راستای خط تشکیل شده توسط اون 2 نقطه دیگه به سمت سر ربات نباشه...
2.اصلا ممکنه حتی تو تصویر مثلا شماره 1 ، راستای اون خط ، در جهت سر ربات باشه..اما اصلا تضمینی وجود نداره که تو تصویر شماره 2 هم راستای خط در همون جهت باشه .. چون ممکنه تو دفعات بعد پیکسلای دیگه ای از اون 2 تا کاغذ رنگی جلو و عقب ربات انتخاب بشن..که به تناسب اون مختصات اون 2 نقطه و در نتیجه مختصات خط تغییر میکنه...در حالی که راستای خط قبلی در جهت توپ بوده...واین باعث میشه همه چی بهم بخوره...شرمنده که یه کم (ببخشید زیاد)طولانی شد...ممنون..]

someCoder
پنج شنبه 25 بهمن 1386, 14:33 عصر
تو باید از مرکز دایره ها استفاده کنی، نه از هر نقطه ای که شد. برای پیدا کردن مرکز دایره ها هم با یک بار اسکن کردن تصویر از بالا به پایین و شمردن تعداد پیکسلهای رنگ خاص در هر سطر میتونی مولفه y مرکز رو پیدا کنی (هم وسط پیکسلهاست و هم تعداد نقاط اون رنگ در سطر مرکز بیشتره). بعدش همین کار رو از چپ به راست انجام میدی و مولفه x رو پیدا میکنی.

ضمنا شکلی هم نبود! احتمالا پاک شده تاپیکت.

kernel
جمعه 07 تیر 1387, 11:14 صبح
گرفتن مرکز دایره ها روش درسته که دوستمون معرفی کردن

حالا من هم بر اساس تجزبه ای که تو مسابقات روباتیک مختلف داشتم می خوام چند تا نکته رو بگم !

1- از کاغذ های شبرنگ برای علامت در 4 طرف روبات استفاده کن

2- تصویر ورودی رو قبل از پردازش با فیلتر هایی مثل Haue و ... تنظیم کن طوریکه کمترین نویز رو برای پیدا کردن محل علامت ها داشته باشی ، استفاده از اون کاغذ هایی که گفتم کارت رو راحت تر می کنه

3- برای رسیدن به سرعت Realtime تو پردازش تصویرکافیه برای بار اول تمام تصویر رو اسکن کنی و بعد از پیدا کردن محل روبات فقط محدوده مورد نظر رو اسکن کنی مثل کاری که جنگنده های هوایی انجام میدن که اصطلاحا بهش میگن Look کردن

برای اینکه ببینی سر روبات سمت توپ هست یا نه کافیه مختصات وسط روبات رو پیدا کنی و از اونجا محور مختصات مبنا رو تشکیل بدی ، بعد ببینی توپ تو کودوم قسمته ( شمال شرقی / غربی یا جنوب شرقی / غربی ) محور مختصاته و بعد روبات انقدر دور خودش بچرخه تا شمال و جنوب روبات با توپ تشکیل یک خط رو بدن به طوریکه سر روبات بین دو نقطه توپ و ته روبات باشه و این خط قطر محور مختصات باشه !