مقدمه ای بر شبیه سازی فوتبال
به نام خدا
شبیه سازی یعنی چی؟
به طور کلی شبیه سازی تو رایانه یعنی محیطی مثل واقعیت توی رایانه بسازیم و عملیاتی روی محیط شبیه سازی شده انجام بدیم و نتیجه ی اون رو ببینیم!
چرا شبیه سازی می کنیم؟
بعضی از وقایع یا آزمایش ها بسیار پر هزینه هستند !
بعضی از وقایع یا آزمایش ها در زمان مورد نظر قابل آزمایش نیستند !
چرا فوتبال رو شبیه سازی می کنیم؟
دلیل شبیه سازی فوتبال خیلی چیزا میتونه باشه که از مهمترین دلایلش تمرین هوش مصنوعی، شبیه سازی شبکه های عصبی و منطق فازی رو میشه نام برد!
در ضمن قراره در آینده ی نه چندان دور (سال 2050) تیم فوتبال روبات ها با قهرمان فوتبال دنیا مسابقه بده و اونو ببره! از اونجایی که هنوز سخت افزار روبات ها زیاد پیشرفت نکرده الان دارن روی تصمیم گیری روبات ها جلوتر کار می کنند! پس یه دلیل شبیه سازی فوتبال این هست که هنوز بدنه ی مناسبی برای بازی فوتبال برای روبات ها درست نشده!
در زمینه ی شبیه سازی هم مسابقه برگزار می شه؟
بله، هر سال مجموعه مسابقاتی با نام روبوکاپ برگزار میشه که در زمینه ی شبیه سازی میشه از :
شبیه سازی نجات (Rescue Simulation)
شبیه سازی فوتبال دوبعدی (Soccer Simulation 2D)
شبیه سازی فوتبال سه بعدی (Soccer Simulation 3D)
شبیه سازی روبات های مجازی (Virtual Robots Simulation)
نام برد!
شروع می کنیم!
برای وارد شدن به دنیای شبیه سازی فوتبال اولین کاری که باید بکنیم اینه که برنامه های شبیه سازی رو نصب کنیم!
چه برنامه هایی را باید نصب کنیم؟
Robocup Soccer Simulator Server
Robocup Soccer Simulator Base Code
Robocup Soccer Simulator Monitor
Robocup Soccer Simulator Log Player
برنامه های شبیه سازی!
اصولا برنامه های شبیه سازی که تو مسابقات مرسوم هستند دو بخش دارند! یک بخش سرور که قوانین محیط توش قرار داره و یه بخش کلاینت که نمیتونه قوانین رو تغییر بده اما می تونه با توجه به قوانین محیط و اختیاراتی که داره تصمیم گیری کنه و دستور بفرسته. مثلا سرور زمین فوتبال و جهت باد و تغییر موقعیت توپ و قوانین فیزیکی و خیلی چیز های دیگرو شبیه سازی می کنه و کلاینت که مسابقه سر بهتر شدن اونه دستورات رو می ده که بازیکن ها و Coach چطور بازی کنند!
کلاینت باید به زبان خاصی نوشته شه؟
خوشبختانه در این زمینه محدودیتی وجود نداره! کلاینت به وسیله ی پروتکل UDP/IP به سرور وصل میشه در نتیجه هر زبان برنامه نویسی که این پروتکل رو ساپرت کنه قابل استفاده هست، البته اکثر تیم ها C++ یا Java استفاده می کنن!
چند تا عکس از محیط شبیه سازی!
چند تا عکس از محیط شبیه سازی!
چند تا عکس از محیط شبیه سازی!
نصب شبیه ساز فوتبال!
برای نصب پکیچ Soccer Simulation شما باید یه کامپیوتر با سیستم عامل لینوکس ( شما می تونید از هر کدوم از ورژن های لینوکس چه تو محیط KDE چه محیط Gnome استفاده کنید ) داشته باشید!
از اینجا به بعد رو باید با یوزر root توی لینوکس لاگین کنید!
نصب پکیچ Soccer Simulation
خوب حالا رسیدیم به مرحله ی اصلی یعنی نصب rcssbase و rcssserver که سرور رو تشکیل میدن!
برای این کار باید دو تا پکیج
RoboCup Soccer Simulator Base Code
و RoboCup Soccer Simulator Server
را داشته باشید!
نصب پکیچ Soccer Simulation
بعد از گرفتن این دو تا فایل اونا رو توی یه فولدر که دوست دارین قرار بدین و اونا رو Untar کنید! برای Untar کردن کافیه توی Terminal بنویسید:
Tar –bzip2 -xf FileName
هر دو تا فایل رو با استفاده از این دستور Untar کنید، یادتون نره بجای FileName اسم فایلی که میخواین Untar شه رو بزنید!
نصب پکیچ Soccer Simulation
بعد از اینکه Untar کردید اول توی فولدر rcssbase-… برید و دستورای زیر رو بزنید:
./configure
make
make install
نصب پکیچ Soccer Simulation
اکثر برنامه ها که با سورس ارائه میشن نصبشون به این شکل هست. ./configure با توجه به مشخصات رایانه و سیستم عاملتون یه MakeFile میسازه و اون MakeFile هم طریقه ی کمپایل شدن فایل ها رو تو خودش داره! وقتی دستور make رو می زنید اون فایل ها کمپایل میشن و make install هم اون فایل ها رو نصب می کنه! ممکنه هر کدوم از این مرحله ها یه مقدار وقت بگیره .
نصب پکیچ Soccer Simulation
حالا برید توی فولدر rcssserver-… و همین دستور هارو برای اون بزنید .
به این ترتیب شما سرور رو نصب کردید! اما سرور چیزی رو به شما نمایش نمیده برای اینکه بتونید فعالیت سرور رو ببینید نیاز به Robocup Soccer Simulator Monitor دارین! و برای اینکه بتونید عملیات سرور و کلاینت رو بعدا دوباره بررسی کنید باید Robocup Soccer Simulator Log Player رو نصب کنید که مثل این میمونه که یه مسابقه ی فوتبال رو رکورد کنید و بعد اونو تماشا کنید!
نصب این دو تا برنامه دقیقا مثل rcssbase و rcssserver هست! یعنی Untar می کنید و توی فولدرشون میرید و اون دستور هارو می زنید!
اجرای نرم افزار شبیه ساز فوتبال!
الآن باید دیگه بتونید پکیج Robocup Soccer Simulator رو بطور کامل اجرا کنید! برای اینکار اول برید توی فولدر /rcssserver-…/src/ و بعد توی ترمینال بزنید:
./rcssserver
اگه ارور گرفتین که گفته دایرکتوری یا فایل مورد نظر موجود نیست و اسم یه .so فایل رو به شما داده وحشت نکنید! تو بعضی از ورژن های لینوکس این مشکل با یه Restart حل میشه!
اجرای نرم افزار شبیه ساز فوتبال!
حالا باید مونیتور رو اجرا کنید! برای این کار کافیه به فولدر /rcssserver-…/src/برید و توی Terminal بزنید:
./rcssmonitor
اجرای نرم افزار شبیه ساز فوتبال!
حالا دیگه تنها قسمتی که مونده وصل کردن کلاینت یا کد خودتون هست!
برای این کار هم کافیه به فولدر کدتون برید و توی Terminal دستور زیر رو بزنید:
./start.sh localhost TeamName
اجرای نرم افزار شبیه ساز فوتبال!
واضح هست که باید دو بار این دستور رو تو دو تا صفحه ی Terminal مجزا با دو TeamName مختلف بزنید چون وگرنه یه تیم بدون رقیب توی زمین خواهد بود. برای شروع بازی هم کافیه kick-off رو توی rcssmonitor بزنید!
توصیه ای برای شروع برای مسابقات!
می تونید برای شرکت توی مسابقات سورس کد کلاینت های دیگران رو توسعه بدید! با کمی Search کلاینت هایی به زبون های مختلف مثل C++ یا Java هم پیدا میشه!
فایل های مورد نیاز برای نصب شبیه ساز!
فایل های مورد نیاز این آموزش را می تونید از وبسایت رسمی شبیه سازی فوتبال
http://sserver.sourceforge.net
دانلود کنید!
Football (or soccer) was the original motivation for RoboCup. Besides being a very popular sport worldwide, soccer brings a significant set of challenges for researchers while attracting people to the event. it contains a significant set of challenges for researchers:
-A collective game, for which more than one agent/robot is required to play.
-Individualistic (each agent/robot must identify relevant objects, self-localize, dribble) and cooperative (passes, complementary roles) elements.
-A dynamic and adversarial environment, with moving objects, some of them rational agents that play against your team.
In Soccer 2D Simulation League, two teams of eleven virtual agents each play with each other, based on a computer simulator that provides a realistic simulation of soccer robot sensors and actions. Each agent is a separate process that sends the simulation server communication and motion commands regarding the player it represents, and receives back information about its state, including the (noisy and partial) sensor observations of the surrounding environment.