جلسه هفتم : آشنایی با سایر ابزار های شبیه سازی فوتبال
نرمافزار RCSSServer بازی فوتبال را شبیهسازی میکند اما آن را به تصویر نمیکشد. نرمافزار نمایشگر شبیهساز فوتبال روبوکاپ (RoboCup Soccer Simulation Monitor) بهعنوان یک سرویس گیرنده (Client) به سرور شبیهساز فوتبال متصل شده، وقایع درون آن را بهصورت گرافیکی بهتصویر کشیده و همانند یک بازی ویدئویی به نمایش در میآورد.
نام و تعداد گل های هر تیم، شماره Cycle بازی، موقعیت توپ و بازیکنان در زمین و … از جمله مواردی است که نرمافزار RCSSMonitor در هر لحظه به تصویر میکشد. از طرفی این نرمافزار رابط داور انسانی (Human Referee) با نرمافزار سرور شبیهساز نیز است. بهعنوان مثال پس از اتصال Agent ها به Server شبیهساز، داور انسانی با کلیک
کردن بر روی دکمه Kick-Off در نرمافزار RCSSMonitor، دستور آغاز بازی
فوتبال را به Server میدهد. علاوه بر نرمافزار استاندارد RCSSMonitor،
نرمافزارهای Monitor دیگری نیز توسط افراد و تیمهای مختلف و با اهداف گوناگون منتشر شدهاند که هر یک در جایگاه خود هنگام تحلیل رفتار تیم میتوانند مفید واقع شوند. اما نمایشگر اصلی در مسابقات RoboCup همان RCSSMonitor است. لازم به ذکر است که همزمان میتوان بیش از یک Monitor را به سرور شبیهساز متصل کرد. در این صورت هر Monitor به شیوه خود بازی را به تصویر میکشد.
و این هم شاید نوعی مانیتور…!
RCSSLogPlayer: |
در یک مسابقه فوتبال واقعی، مربیان و تحلیلگران برای بررسی عملکرد تیمها در یک بازی انجام شده، از بازی فیلمبرداری کرده و تصاویر ضبطشده را بارها مورد بازبینی و مطالعه قرار میدهند.
در شبیهسازی فوتبال نیز آنالیز بازیای که قبلا انجام شده، برای کشف نقاط قوت و ضعف یک تیم بسیار مهم است. از این رو نرمافزار Server شبیهساز هنگام اجرای هر بازی از آن یک گزارش لحظه به لحظه (Log) تهیه نموده و بر روی حافظه جانبی رایانه ذخیره میکند. این گزارش همانند ویدئوی ضبط شده از مسابقه فوتبال است.
در واقع پس از اتمام بازی، دو فایلِ Log با پسوندهای .rcg و .rcl در مسیری که Server شبیهساز قرار دارد ایجاد میشوند که از آنها میتوان برای تحلیل استراتژی تیمها و یافتن اشکالات احتمالی بهره برد.
فایل با پسوند rcl، یک فایل متنی (کد شده به صورت ASCII) شامل کلیه Message هایی است که Agent های دو تیم به Server شبیهساز ارسال نمودهاند. در این فایل شماره Cycle و شماره Agent ارسالکننده پیام (شماره پیراهن بازیکن) نیز در کنار هر پیام آمده است و شما میتوانید با خواندن محتوای این فایل، عملکرد تیم در بازی مربوطه را تحلیل نمائید. به عبارت دیگر، فایل با پسوند rcl برای خوانده شدن توسط انسان، تولید میشود (Human Readble است).
اما فایل با پسوند rcg یک فایل Binary (به زبان ماشین) بوده و برای انسان خوانا نیست (Machine Readble است). این فایل که شامل کلیه Message ها و دانشهای محیطی سرور است، توسط نرمافزار استانداردی بهنام RoboCup Soccer Simulation Log Player قابل خواندن است. این نرمافزار، فایل با پسوند rcg را گرفته و همانند یک دستگاه Video Player بازی انجام شده را بازپخش مینماید.
RCSSLogPlayer نیز همانند RCSSServer برای به تصویر کشیدن مسابقه در حال بازپخش، به یک Monitor مثل نرمافزار RCSSMonitor نیاز دارد. پس از اتصال RCSSMonitor به RCSSLogPlayer، دقیقا همانند یک دستگاه Video Player میتوانید از دکمههای Play، Stop، Fast Forward و Rewind برای کنترل اجرای بازپخش و رسیدن به یک Cycle خاص از بازی استفاده نمائید. همچنین امکان پرش مستقیم به یک Cycle خاص با دادن شماره آن Cycle نیز امکانپذیر است.
برای اجرای یک فایل با پسوند rcg توسط RCSSLogPlayer از فرمان زیر در Terminal استفاده میشود:
rcsslogplayer LogName.rcg
توجه کنید که برای اجرای فرمان بالا ابتدا باید نرمافزار RCSSLogPlayer را نصب کرده باشید.
برای دریافت Log بازیهای معروف از جمله مسابقات RoboCup میتوانید به لینک زیر مراجعه نمائید:
http://www.socsim.robocup.org/files/2D/log/
تحلیل Log بازیهای معروف میتواند به شما برای تعیین استراتژیهای تیمتان کمک نماید.
RCSSClient: |
نرمافزار RCSSClient ابزاری است که همراه با RCSSServer نصب شده و توسط آن میتوانید خودتان به صورت دستی به Server شبیهساز Message ارسال کرده و نتیجه آن را مستقیما مشاهده کنید. این نرمافزار معمولا برای تست و مشاهده عملکرد پیامها در Server شبیهساز مورد استفاده قرار میگیرد و به اندازه سه ابزار قبلی کاربرد ندارد. به دانشپژوهان توصیه میگردد Message هایی را که با آنها آشنا شدهاند توسط این ابزار به Server شبیهساز ارسال کرده و نتیجه آن را روی نرمافزار Monitor مشاهده نمایند.
جلسه پنجم: ارتباط با سیستم عامل لینوکس از طریق محیط Terminal
در
این جلسه با محیط Terminal در سیستم عامل Linux و برخی از مهم ترین فرمان
های آن آشنا خواهید شد. این محیط نسبت به محیط Desktop منعطف تر بوده و
سرعت و قدرت بیشتری دارد، با این حال کاربری آن به سادگی محیط Desktop
نیست.
برای گشودن محیط Terminal در سیستم عامل Ubuntu می توانید عبارت “terminal”
را در Dash جستجو نموده و یا از کلید های ترکیبی Ctrl+Alt+T استفاده
نمایید.
پس از گشوده شدن پنجره Terminal عبارت USERNAME@ubuntu:~$ در آن ظاهر می
شود که USERNAME نام حساب کاربری در Ubuntu است. هر زمان که این عبارت را
در Terminal مشاهده نمودید، می توانید فرمان خود را به صورت کد در محیط
ترمینال صادر کنید. Terminal، این فرمان را دریافت کرده و برای سیستم عامل
تفسیر می نماید.
در ادامه با تعدادی از مهم ترین فرمان ها در محیط Terminal آشنا خواهید شد.
pwd |
این
فرمان سرنام عبارت Print Working Directory بوده و همانطور که از نامش
پیداست مسیر (Path) پوشه جاری در محیط Terminal را نمایش می دهد. مثال:
cd |
این فرمان سرنام عبارت Change Directory بوده و برای تغییر مسیر جاری در محیط Terminal به صورت های زیر مورد استفاده قرار می گیرد.
cd PATH |
پوشه ای که مسیر آن به جای PATH قرار گرفته، به عنوان پوشه جاری در Terminal انتخاب می شود. مثال:
cd SUBDIRECTORY |
SUBDIRECTORY نام یک پوشه در مسیر جاری بوده که به عنوان پوشه جاری جایگزین خواهد شد. مثال:
cd |
پس از تفسیر و اجرای این فرمان، مسیر جاری در Terminal هر چه باشد، به پوشه کاربر تغییر خواهد کرد. مثال
cd / |
بالا ترین پوشه (پوشه ریشه) را به عنوان مسیر جاری، فعال می کند. مثال:
cd .. |
این دستورالعمل، پوشه بالایی (پوشه ای را که پوشه جاری، عضو آن است) به عنوان پوشه جاری، فعال می کند. مثال:
cd – |
این فرمان، مسیر جاری قبلی (مسیری که قبل از مسیر فعلی فعال بوده) را مجدداً به عنوان مسیر جاری فعال می کند. مثال:
ls |
نام این فرمان از واژه List گرفته شده زیرا با اجرای آن، نام محتویات داخل پوشه جاری به ترتیب حروف الفبا لیست می شوند. مثال:
فرمان فوق را برای نمایش محتویات یک پوشه غیر جاری نیز می توان به کار برد.
در این حالت آدرس پوشه مورد نظر با یک فاصله بعد از فرمان ls می آید.
مثال:
mkdir DIR_NAME |
این فرمان، سرنام عبارت Make Directory بوده و یک پوشه جدید به نام DIR_NAME در مسیر جاری ایجاد می کند. مثال:
cp SOURCE_FILE DETINATION_DIR |
این
فرمان، یک رونوشت (Copy) از پرونده ای که مسیر آن به جای SOURCE_FILE
نوشته شده است را در پوشه به مسیر DESTINATION_DIR می نویسد. مثال:
فرمان بالا برای رو نوشت گرفتن از پرونده ها است و اگر بخواهیم از یک پوشه رونوشت تهیه کنیم، از فرمان زیر بهره می بریم:
cp -r SOURCE_FILE DETINATION_DIR |
mv SOURCE DETINATION |
فرمان
فوق برای انتقال (Move) یک پرونده یا پوشه با مسیر SOURCE به پوشه ای با
مسیر DESTINATION استفاده می شود و معادل Cut و Paste در محیط گرافیکی است.
مثال:
فرمان بالا هم برای انتقال پرونده ها کاربرد دارد و هم انتقال پوشه ها!
rm FILE_NAME.FILE_EXTENTION |
این فرمان، پرونده ای به نام FILE_NAME و پسوند FILE_EXTENSION را از مسیر جاری حذف (Remove) می کند. مثال:
برای حذف کردن یک پوشه و محتویات آن به جای فرمان فوق، از فرمان زیر استفاده می شود:
rm -r DIR_NAME |
همچنین
می توان پرونده ها و پوشه ها در مسیری غیر از مسیر جاری را نیز حذف نمود
که این امر با استفاده از محیط گرافیکی مقدور نمی باشد.
توجه: اقلام حذف شده توسط فرمان rm به سطل بازیافت منتقل نمی شوند. بنابراین در استفاده از این فرمان دقت کنید!
>NEW_FILE.EXTETION |
این
فرمان، یک پرونده جدید به نام NEW_FILE و با فرمتِ EXTENSION در مسیر جاری
ایجاد می کند. مثلا برای ایجاد یک پرونده متنی به نام textFile و با پسوند
txt فرمان زیر صادر می شود:
>textFile.txt
و برای ایجاد یک کد منبع به زبان C++ می توان فرمان فوق را به فرم زیر به کار برد:
>Source.cpp
clear |
این
فرمان موجب پاک شدن صفحه Terminal از دستوراتی که اجرا شده اند می شود.
برای راحتی بیشتر می توانید از کلید های ترکیبی Ctrl+L به جای این فرمان
استفاده کنید.
man COMMAND |
اگر
در استفاده از یک فرمان مشکل یا سوالی داشته باشید می توانید با اجرای این
دستور، راهنما (Manual) آن فرمان را مشاهده نمایید. مثال:
man clear
exit |
این فرمان باعث بسته شدن پنجره Terminal و خروج از آن می شود. به جای آن می توانید از دکمه Close در بالای پنجره استفاده کنید.
./FILE_NAME.EXTENTION |
این فرمان باعث اجرای پرونده به نام FILE_NAME و پسوند EXTENSION در مسیر جاری می شود.
sudo |
اجرای
برخی از فرمان ها نیاز به سطح دسترسی مدیر دارد. برای مثال نوشتن پرونده
ها در پوشه های سیستمی برای کاربران معمولی امکان پذیر نمی باشد. برای
اجرای یک فرمان با اجازه مدیر، قبل از آن فرمان از عبارت sudo استفاده می
شود. واضح است که در این صورت کاربر مجبور به وارد نمودن گذر واژه می باشد.
add-apt-repository PPA/APT LINE |
این
فرمان برای افزودن یک مخزن اینترنتی به لیست مخازن قابل دسترسی استفاده می
شود. این فرمان نیاز به سطح دسترسی مدیر دارد. از این رو قبل از آن
ازفرمان sudo استفاده می شود. مثال:
apt-get install PACKAGE_NAME |
این فرمان برای نصب پکیج های نرم افزاری از اینترنت استفاده می شود. واضح
است که مخزن شامل این پکیج باید در لیست مخازن قابل دسترسی اضافه شده باشد.
نصب نرم افزار ها نیز نیاز به سطح دسترسی مدیر دارد از این رو از فرمان
sudo کمک می گیریم.
به عنوان مثال برای نصب بسته نرم افزاری GCC که در جلسه هشتم معرفی خواهد شد، از دستور زیر استفاده می کنیم:
sudo apt-get install gcc
نصب پکیج های نرم افزاری به صورت Offline (بدون استفاده از اینترنت):
نرم افزار های دانلود شده از اینترنت، معمولا با فرمت tar یا tar.gz فشرده شده اند. بنا بر این در ابتدا با استفاده از فرمان tar آنها را از حالت فشرده خارج می کنیم.
برای بسته های فشرده شده به صورت tar | tar -xvf PACKAGE_NAME.tar |
برای بسته های فشرده شده به صورت tar.gz | tar -xvzf PACKAGE_NAME.tar.gz |
خارج نمودن پرونده ها از حالت فشرده، با راست-کلیک نمودن در محیط گرافیکی و انتخاب گزینه Extract Here نیز امکان پذیر می باشد.
پوشه ای که از حالت فشرده خارج شده معمولا
شامل تعدادی کد منبع (Source Code) و یک پرونده به نام configure می باشد.
پرونده configure وظیفه پیکربندی نصب نرم افزار را بر عهده دارد. بنابراین
در ابتدا پرونده مذکور را اجرا می نماییم.
./configure
این پرونده، وجود بسته های مورد نیاز نرم افزار را بر روی کامپیوتر کاربر
بررسی نموده و در صورتی که بسته ای بر روی کامپیوتر نصب نباشد به کاربر
اطلاع می دهد. در آخر نیز با توجه به مشخصات کامپیوتر و سیستم عامل، یک
پرونده به نام make را درون همان پوشه ایجاد می کند که طریقۀ کامپایل
(آماده اجرا) شدن کد های منبع در آن وجود دارد. برای کامپایل شدن کد های
منبع به طریق درج شده در پرونده make از دستور make استفاده می کنیم.
make
پس از کامپایل شدن کد های منبع و تولید پرونده های اجرایی، لازم است نرم
افزار بر روی کامپیوتر نصب شود. نصب نرم افزار به معنی کپی نمودن پرونده
های اجرایی در مسیر های سیستمی نظیر bin، lib، include و … است. بنابر
این نیاز به سطح دسترسی مدیر دارد. یک نرم افزار پس از نصب، از هر مسیری در
Terminal قابل اجرا است.
برای نصب نرم افزار نیز از فرمان زیر استفاده خواهیم کرد:
sudo make install
در این جلسه با مفسر خط فرمان در لینوکس و برخی از مهم ترین دستورات آن آشنا شدید.