مقدمه ای بر شبیه سازی فوتبال

شبیه سازی یعنی چی؟
شاید این اولین سوالی باشه که بعد از شنیدن شبیه سازی فوتبال یا Soccer Simulation به ذهنتون برسه! به طور کلی شبیه سازی تو رایانه یعنی محیطی مثل واقعیت توی رایانه بسازیم و عملیاتی روی محیط شبیه سازی شده انجام بدیم و نتیجه ی اون رو ببینیم!

Question level 3 حالا چرا شبیه سازی کنیم وقتی می تونیم تمام جوانب رو در واقعیت بررسی کنیم؟
Answer ” بعضی از وقایع یا آزمایش ها بسیار پر هزینه هستند و حتی بعضی از اونا در زمان مورد نظر قابل آزمایش نیستند. به عنوان مثال می خوایم روش های مختلف مدیریتی رو بعد از وقوع زلزله بررسی کنیم! واضحه که ایجاد یک زلزله ممکن نیست و حتی اگر ممکن بود خسارت مالی و جانی فراوانی به همراه داشت. اینجاست که شبیه سازی به کمک ما میاد. در حال حاضر در زمینه ی مدیریت پس از زلزله هر سال مسابقاتی در سطح جهان برگزار میشه!. “
Question level 4 در زمینه ی فوتبال هم مسابقه برگزار می شه؟
Answer ” بله، هر سال مجموعه مسابقاتی با نام روبوکاپ برگزار میشه که در زمینه ی شبیه سازی میشه از شبیه سازی نجات، شبیه سازی فوتبال دوبعدی و سه بعدی و شبیه سازی روبات های مجازی یا Virtual Robots نام برد!
این مسابقات هر سال توی یکی از نقاط دنیا برگزار میشه، امسال توی آمریکا بود و سال دیگه توی چین خواهد بود. “
Question level 5 جریان مسابقات اپن چی هست؟
Answer ” این سوالت نشون میده تا حدودی در جریان مسابقات روباتیک هستی! هر سال توی چند کشور مسابقات اپن در رشته های مختلف انجام میشه که از جاهای مختلف دنیا توی این مسابقات شرکت میکنند. هر تیم بخواد توی مسابقات جهانی شرکت کنه اول باید یک بار مینیمم توی مسابقات اپن شرکت کرده باشه. اتفاقا هر ساله توی کشور خودمون هم مسابقات اپن به پشتیبانی دانشگاه آزاد اسلامی واحد قزوین که تیم روباتیک بسیار قدرتمندی داره برگزار میشه! و جالب تر از اون این نکته هست که ایران در زمینه ی شبیه سازی در دنیا حرف برای گفتن داره و توی شبیه سازی نجات هر سال دو تیم از چهار تیم اول جهان (یا حتی بیشتر) از ایران هست! “
Question level 2 وااای، چه عااالییی!

عجیبه که هیچ کدومتون این سوال رو نپرسیدین که چرا فوتبال رو شبیه سازی می کنیم؟ فوتبال که نه هزینه ی زیادی می خواد نه سخته بازی کردنش! دلیل شبیه سازی فوتبال خیلی چیزا میتونه باشه که از مهمترین دلایلش تمرین هوش مصنوعی، شبیه سازی شبکه های عصبی و منطق فازی رو میشه نام برد! در ضمن قراره در آینده ی نه چندان دور تیم فوتبال روبات ها با قهرمان فوتبال دنیا مسابقه بده و اونو ببره! از اونجایی که هنوز سخت افزار روبات ها زیاد پیشرفت نکرده الان دارن روی تصمیم گیری روبات ها جلوتر کار می کنند! پس یه دلیل شبیه سازی فوتبال این هست که هنوز بدنه ی مناسبی برای بازی فوتبال برای روبات ها درست نشده!

شروع می کنیم

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

Question level 4 کلاینت باید به زبان خاصی نوشته شه؟
Answer ” خوشبختانه در این زمینه محدودیتی وجود نداره! کلاینت به وسیله ی پروتکل UDP/IP به سرور وصل میشه در نتیجه هر زبان برنامه نویسی که این پروتکل رو ساپرت کنه قابل استفاده هست، البته اکثر تیم ها C++ یا Java استفاده می کنن! “

شاید بد نباشه قبل از شروع به نصب شبیه ساز فوتبال چند تا عکس از محیط شبیه سازی شده ببینیم!

محیط شبیه سازی فوتبال قبل از وصل شدن کلاینت ها

بعد از اینکه کلاینت ها (دو تیم) به سرور وصل شدن بازیکن های هر تیم در جایگاه های خودشون با توجه به چینش اولیه ی انتخاب شده قرار می گیرن

محیط شبیه سازی فوتبال بعد از وصل شدن کلاینت ها

بازی دقیقا بعد از اینکه داور دکمه ی کیک آف رو بزنه شروع میشه

محیط شبیه سازی فوتبال بعد از شروع بازی

نصب شبیه ساز فوتبال

توجه

تمامی فایل های مورد نیاز در این آموزش به جز پکیج Boost (به علت حجم زیاد) در این فایل موجود است، در صورتی که این فایل را دریافت کنید نیازی به گرفتن فایل هایی که در ادامه ی این آموزش آمده نیست!
پکیج بوست را میتوانید از اینجا بگیرید!

مراحل نصب

برای نصب پکیچ Soccer Simulation شما باید یه کامپیوتر با سیستم عامل لینوکس داشته باشید!

Question level 5 به جای لینوکس میشه از Cygwin توی ویندوز استفاده کرد؟
Answer ” خوشبختانه شما می تونید از Cygwin برای نصب و اجرای سرور استفاده کنید! راه دیگه برای نصبش تو ویندوز هم اینه که برنامه ی VMWare Workstation رو نصب کنید و روی اون لینوکس نصب کنید! اینطوری به محیط گرافیکی لینوکس هم توی ویندوز دسترسی خواهید داشت! “

من روی کامپیوتر خودم از Linux Suse 10.1 استفاده کردم، اما شما می تونید از هر کدوم از ورژن های لینوکس چه تو محیط KDE چه محیط Gnome استقاده کنید!
از اینجا به بعد رو باید با یوزر root تولی لینوکس لاگین کنید!
قبل از شروع نصب باید مطمئن شید که gcc روی لینوکستون نصب هست! اگر نیست می تونید از توی سی دی لینوکستون و با استقاده از Software Management توی YaST اونو نصبش کنید یا توی Terminal بزنید:

yum install gcc
Question level 3 ببخشید، gcc دقیقا چیکار می کنه؟
Answer ” gcc یکی از کمپایلر های C هستش که توی لینوکس خیلی استفاده میشه. “

بعد از اینکه مطمئن شدید gcc نصب هست باید یه پکیج دیگه بنام boost رو نصب کنید!
توی این صفحه آموزش نصب این پکیج هست! نصب این پکیج زمان خیلی زیادی می گیره و حدود ۱ گیگ هم هارد نیاز داره! البته سرور شبیه ساز فوتبال فقط نیاز به دو تا از Library های اون داره، شما می تونید فقط همون دو تا رو make و make install کنید:

libboost_filesystem-gcc.so
libboost_program_options-gcc.so

بصورت پیش فرض این Library ها توی /usr/local/lib ذخیره میشن! اما یه مشکلی که وجود داره اینه که اسم این Library ها توی پکیج جدید Boost نسبت به زمانی که Soccer Simulation Server ساخته شده فرق کرده پس باید اسم اونا رو عوض کنیم!
برای این کار به /usr/local/lib برین و اسم دو تا فایل رو با این دوخط دستور عوض کنید:

mv libboost_filesystem-gcc41-1_34_1.so libboost_filesystem-gcc.so
mv libboost_program_options-gcc41-1_34_1.so libboost_program_options-gcc.so

اگه ورژن Boostای که گرفتین فرق داشته باشه ممکنه اون عدد های آخر فرق کنن!خوب حالا رسیدیم به مرحله ی اصلی یعنی نصب rcssbase و rcssserver که سرور رو تشکیل میدن!
برای این کار باید دو تا پکیج RoboCup Soccer Simulator Base Code و Robocp Soccer Simulator Server رو از اینجا بگیرید!
بعد از گرفتن این دو تا فایل اونا رو توی یه فولدر که دوست دارین قرار بدین و اونا رو Untar کنید! برای Untar کردن کافیه توی Terminal بنویسید:

tar --bzip2 -xf FileName

هر دو تا فایل رو با استفاده از این دستور Untar کنید، یادتون نره بجای FileName اسم فایلی که میخواین Untar شه رو بزنید!
بعد از اینکه Untar کردید اول توی فولدر rcssbase-… برید و دستورای زیر رو بزنید:

./configure
make
make install

اکثر برنامه ها که با سورس ارائه میشن نصبشون به این شکل هست. ./configure با توجه به مشخصات رایانه و سیستم عاملتون یه MakeFile میسازه و اون MakeFile هم طریقه ی کمپایل شدن فایل ها رو تو خودش داره! وقتی دستور make رو می زنید اون فایل ها کمپایل میشن و make install هم اون فایل ها رو نصب می کنه! ممکنه هر کدوم از این مرحله ها یه مقدار وقت بگیره البته از دفعه قبلی که این کار رو برای boost انجام دادین کمتر وقت می گیره.
حالا برید توی فولدر rcssserver-… و همین دستور هارو برای اون بزنید.
به این ترتیب شما سرور رو نصب کردید! اما سرور چیزی رو به شما نمایش نمیده برای اینکه بتونید فعالیت سرور رو ببینید نیاز به Robocup Soccer Simulator Monitor دارین! و برای اینکه بتونید عملیات سرور و کلاینت رو بعدا دوباره بررسی کنید باید Robocup Soccer Simulator Log Player رو نصب کنید که مثل این میمونه که یه مسابقه ی فوتبال رو رکورد کنید و بعد اونو تماشا کنید!
نصب این دو تا برنامه دقیقا مثل rcssbase و rcssserver هست! یعنی Untar می کنید و توی فولدرشون میرید و اون دستور هارو می زنید!
الآن باید دیگه بتونید پکیج Robocup Soccer Simulator رو بطور کامل اجرا کنید!
برای اینکار اول برید توی فولدر /rcssserver-…/src و بعد توی ترمینال بزنید:

./rcssserver

اگه ارور گرفتین که گفته دایرکتوری یا فایل مورد نظر موجود نیست و اسم یه .so فایل رو به شما داده وحشت نکنید!
تو بعضی از ورژن های لینوکس این مشکل با یه Restart حل میشه! اما اگر نشد کافیه این کار هارو بکنید!
اگر فرض کنیم پکیچ rcssserver و rcssbase رو توی /home/siavash/rcssserver-11.1.1 و /home/siavash/rcssbase-11.1.0 ریختید این دستور ها رو توی Terminal اجرا کنید:

cp /home/siavash/rcssbase-11.1.0/rcssbase/conf/.libs/* /home/siavash/rcssserver-11.1.1/src/
cp /home/siavash/rcssbase-11.1.0/rcssbase/net/.libs/* /home/siavash/rcssserver-11.1.1/src/
cp /home/siavash/rcssbase-11.1.0/rcssbase/lib/.libs/* /home/siavash/rcssserver-11.1.1/src/
cp /home/siavash/rcssbase-11.1.0/rcssbase/gzip/.libs/* /home/siavash/rcssserver-11.1.1/src/

یادتون نره /home/siavash/ رو با جایی که سرور و بیس رو نصب کردین عوض کنید! این دستورا در اصل Library هارو در دسترس rcssserver قرار میده! البته راه بهتر این بود که path این فایل هارو به rcssserver بدیم اما این راه برای افرادی که برای اولین بار این کار رو انجام میدن راحت تره!
اگر باز هم با مشکل روبرو شدید لطفا تو همین صفحه گزارش بدین! حالا دوباره میریم سر اجرای سرور!
برای این کار اول برید توی /rcssserver-…/src/ و دستور زیر رو توی Terminal وارد کنید:

./rcssserver

قاعدتا نباید با پیغام خطا روبرو بشید. حالا باید مونیتور رو اجرا کنید!
برای این کار کافیه به فولدر rcssmonitor-…/src/ برید و توی Terminal بزنید:

./rcssmonitor

حالا دیگه تنها قسمتی که مونده وصل کردن کلاینت یا کد خودتون هست! می تونید برای شروع این کد رو بگیرید!. که یک نمونه برای شروع هست با نام Trilearn base sources.این برنامه نصبش مثل پکیج های قبلی هست! برای اجراشم کافیه به فولدر trilearn_base_sources-3.3 برید و توی Terminal دستور زیر رو بزنید:

./start.sh localhost TeamName

واضح هست که باید دو بار این دستور رو تو دو تا صفحه ی Terminal مجزا با دو TeamName مختلف بزنید چون وگرنه یه تیم بدون رقیب توی زمین خواهد بود. برای شروع بازی هم کافیه kick-off رو توی rcssmonitor بزنید! می تونید برای شرکت توی مسابقات همین سورس کد کلاینت رو توسعه بدید یا اینکه از base client های دیگه استفاده کنید! با کمی Search کلاینت هایی به زبون های دیگه مثل Java هم پیدا میشه!
انشاالله در جلسات بعدی درباره ی Objectها و Classهای شبیه سازی فوتبال و طریقه ی کد نویسی برای اون صحبت می کنیم. و البته کمی هم در رابطه با شبیه سازی زلزله که به نظر من خیلی جالب تر هست!

شبیه سازی فوتبال در عمل

قطعه ای از بازی دو تیم مشابه در مقابل هم!

لینک های داخلی

لینک های خارجی

59 فکر می‌کنند “مقدمه ای بر شبیه سازی فوتبال

  1. Stabber

    بابا ایولا ، حال عظیمی نصیب ما شد ! بذار یه ذره باهاش ور برم بعد میام موختو با سوالام میخورم D:
    راستی هرکی بخواد اینجا غلط املایی ( هوش مسنویی !!) بگیره میزنم شل و بلش میکنما ! D:

    پاسخ
  2. christian

    با سلام
    نحوه بازی که دیدم کاملا ساده وابتدایی بود
    بدون هیچ تاکتیکی
    با توجه به اینکه هم مهندس برق هستم و هم با مربیگری فوتبال آشنا هستم (کردم) شاید بتونم کمکی بکنم
    در صورت تمایل تماس بگیرید

    پاسخ
  3. Neutral

    یه سوال : وقتی یه EMP منفجر میشه هیچکدوم از وسایل الکترونیکی کار نمیکنن. چه جوری میشه این شرایط رو شبیه سازی کرد؟ که کم هزینه باشه و جلوی قدرت بمب رو بگیره؟!! :)

    شاد باشی.

    پاسخ
  4. NN

    salam, khaste nabashid . man sal ha pish bar name nevisi to mohite C va C ro yad gereftam yekami ham ba shabih sazi ashna hastam alan ke darsam tamoom shode doos daram edamash bedam . chan rooz pish ke raftam soraghe code nevisi didam ye code sadeye harekat ro ham nemitoonam benevisam hala mikhastam az shoma komak begiram masalan age momkene nahveye estefade az tavabee mesle moveToPos ya dashToPoint va ya turnbody To point ro vasam befrestid albate be soorate kheyli sade mamnoon misham age komakam konid ba tashakkor az shoma

    پاسخ
  5. اسماعیل

    عالی عالی ۱۰۰۰*عالی
    من یک ساله دارم تو نت پرسه میزنم راجع به شبیه سازی ولی چیزی پیدا نمی کنم خیلی خیلی مچکرم و یک سوال دارم اگر برای روبات های انسان نما بخواهیم باید چی کار کنیم باز هم مچکرم

    پاسخ
  6. بنده ای از بندگان خدا

    خیلی عالیه
    فقط اینها توی فدورا به این شکل قابل اجرا نیست. اگه میشه بگین تو فدورا چی؟
    ممنون

    پاسخ
  7. من

    به نام خدا
    سلام
    از مطلب مفیدتون خیلی خیلی متشکرم
    من کاملا مبتدی ام و پروژه ی پایان دوره امم رو در این زمینه برداشتم می شه توضیحات بیشتر بدید؟
    بسیار متشکرم

    پاسخ
  8. m.p

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

    پاسخ
  9. ارش

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

    پاسخ
  10. آسمان

    لطفا میشه بگید آیا برای نصب برنامه های مورد نیاز شبیه سازی فوتبال به یک سیستم با مشخصات خاصی نیاز هست؟ یا با یه سیستم معکمولی هم میشه؟؟؟

    پاسخ
  11. سید محمد رضا

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

    پاسخ
  12. azam

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

    پاسخ
  13. نیلوفر

    سلام من ۱۶ سالمه و عضو تیم ربوکاپ شیراز هستم و مطالب یه کم برام سنگین هست اما از مطالبتون خیلی استفاده کردم خیلی خیلی ممنووووووووووووووووووووووون سیاوش جووووووووووووووووووون

    پاسخ
  14. mahdiyar

    سلام
    واقعا عالی بود تا به حال انقدر از اینترنت استفاده درست وحسابی نبرده بودم .میشه بگید شما چه ساعت هایی onهستید تا من سوالاتم را بپرسم.راستی توابع یادتون نره.
    یا علی

    پاسخ
  15. sahar

    سلام وقتی من فایل configure می کنم روی cppایراد میگیره وقتی می خوام اونو نصب کنم میگه public key for cpp نصب نیست لطفا یکی کمکم کنه خیلی فوریه ممنون

    پاسخ
  16. real-life

    سلام.من الان سال دوممه که شبیه سازی کار میکنم پارسال تیممون رو روونه ی جشنواره خوارزمی کردیم.ولی الان مانیتور با سرور ۱۲٫۱ نصب کردم الانم هر چی میکنم فایل های استارت کانکت نمیشن مشکل چیه من که دو روزه هر کاری کردم درست نشده!

    پاسخ
  17. بهنام

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

    پاسخ
  18. نوید

    سلام از اینکه این همه اطلاعات مفید در اختیار همه قرار دادین ممنونم و من میخواستم ببینم در باره fbes , lom در هوش مطلب فارسی دارین و اگه دارین اگه ممکنه به e-mail من بفرستینش خیلی ضروری بهش احتیاج دارم

    پاسخ
  19. aa

    با سلام من روی سیستم خودم لینوکس و شبیه ساز رو نصب کردم اما برای باز کردن صفحه بازی خطا می گیره مشکل از کارت گرافیکمه می دونید کارت گرافیک مناسبش چیه؟
    ممنون

    پاسخ
  20. فاطمه

    خیلی خوب بود. دوسوال دارم:۱- زمین بازی چگونه قابل مشاهده است؟ ۲-تیمها چگونه به زمین بازی فراخوانی می شوند؟

    پاسخ
  21. فاطمه

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

    پاسخ
  22. زهرا

    kheili mamnun. man ba yeki az bozorgtarin ostadan robatice iran ashna shodam va ghasdam ine ke ta sale bad hame chizo yad begiram va dar mosabeghate iran open sale bad sherkat konam. mamnunam az tozihat.

    پاسخ

پاسخ دادن به m.p لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>