صفحه اصلی برنامه دارای قسمت های مختلف می باشد See MainForm  که مهمترین آنها

 (CMD) restart contest: یک مسابقه را بطور کامل انجام می دهد، در داخل این دکمه یک حلقه ی  تکرار قرار دارد که تا وقتی که دستوری برای توقف رباط داده نشده رباط بصورت منطقی به حرکت خود ادامه می دهد حرکت منطقی رباط از لحاظ مکانیکی دارای بخش های زیر می باشد .

1- جلو یا عقب رفتن

2- چرخیدن

3- برداشتن شیي

4- رها کردن شیي

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

 

1-    پردازش تصویر: گرفتن عکس ازمیدان مسابقه

                                تشخیص موقععیت هدفها

                                تشخیص موقعیت موانع

                               تشخیص موقعیت خطوط راهنما

اطلاعات خروجی از توابع پردازش تصویر بر حسب پیکسل های مونیتور و دارای خطا می باشند که به وسیله ی  توابع واسطه: با انجام محاسبات منطقی و ریاضی پیکسل ها به موقعیت های x,y  واقعی میشوند و با محاسبات آماری خطا به مقدار زیاد کاهش می یابد.

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

یافتن و محاسبه ی موقعیت هدف: این مرحله از مرحله ی قبل مشکل تر بوده، یافتن موقعیت شیي یا توجه به مرکز جرم اجتماع  نقاط  روی صفحه نمایش بدست آمده موقعیت آن بر روی زمین محاسبه میشود. در ضمن در این قسمت نوع شیي نیز مشخص می گردد. در این مرحله کلیه ی اشیاء در زاویه دید رباط پیدا شده اطلاعات مربوط به آنها ذخیره می گردد.

یافتن مسیر: در این قسمت با حذف مسیرها که به مانع برخورد می کنند حدود45-20 مسیر برای حرکت رباط تشکیل می گردد که فقط حرکت هایی که در حدود 30cm   ربات اتفاق می افتند معتبر باشند این حرکت ها 90 درصد مسیرهای یاد شده را تشکیل می دهند .

 

2 - بهترین و کوتاهترین مسیر:

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

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

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

 

نرم افزار شامل قسمت های جانبی 1- درایورهای نرم افزاری برای استفاده از موتورها و سایر قسمتها ی ا لکترونیکی و مکانیکی ربات 2- عملیات مربوط به ذخیره سازی تصاویر خام وپردازش شده و حرکت های ربات برای باز نگری های بعدی 3- فراهم اوردن بستر پردازش تصویر بر روی هارد دیسک میباشد که برای کنترل این قسمتها دکمه ها و فرم هایی  تعبیه شده است مثل دکمه ی load camera  بر روی فرم اصلی

 

نکات قوت برنامه :

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

2- ربات همه ی اشیائ روی زمین را در مدت کافی جمع میکند

3-احتمال برخورد ربات به موانع و هدف ها به دلیل الگوریتم های استاندارد وابتکاری استفاده شده در توابع مسیریابی خیلی کم است با اینحال برخورد ربات مورد خاصی ایجاد نمی کند.

4- ربات با دقت خیلی زیاد اشیا را مشخص میکند در دروازه ی مربوطه قرار میدهد

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

نقاط ضعف برنامه :

1- مهمترین نقطه ضعف برنامه موازی نبودن پردازش تصویر با حرکات دیگر ربات است . ربات باید همانند انسان که در حالی که میبیند راه رفته، مسیر خود را انتخاب میکند، عمل نماید ولی چنین نیست و این موضوع باعث مقطع شدن و کند شدن حرکات ربات میشود و با توجه به اینکه اعتمادی به شرایط مکانیکی مثلا دقت کم استپرموتور نیست ، این موضوع جدی تر  میشود.  موازی کردن پردازش تصویر با سایر حرکات کاری مشکل است چون پردازش تصویر هزینه زیادی برای پردازش گر( CPU) ایجاد میکند و عملا موازی سازی کامل بصورت  Real-Time با تمام حرکات دیگر ربات با یک CPU غیر ممکن به نظر میرسد.

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

2- نرم افزار احتیاج به باز نگری کلی و جزئی به صورت خط به خط برای تصحیح نکات غلط مهندسی نرم افزار که باعث ناخوانا شدن و احتمالا کند شدن بعضی توابع گردیده، دارد.

3- توابع پایه نرم افزار بایستی به صورتِ DLL (Dynamic Link Library ) پک شده تا ضمن خارج شدن این توابع از محیط برنامه نویسی امکان debugging (اشکال زدایی) و همچنین خوانایی برنامه افزایش یابد .