فروشگاه ساز فایل و همکاری در فروش سل یو
ساخت و تولیدWeblog, Persian,Iran, Iranian, Farsi, Weblogs">
لینک های وب
..
پروژه دیفرانسیل

دانلود پروژه تحقیقاتی با موضوع دیفرانسیل

دانلود پروژه دیفرانسیل
تحقیق کوپلینگ ها و کلاچ ها

تحقیق در مورد کوپلینک ها و کلاچ ها

دانلود تحقیق کوپلینگ ها و کلاچ ها
کتاب ریاضیات مهندسی پیشرفته اونیل

دانلود کتاب ریاضیات پیشرفته اونیل

دانلود کتاب ریاضیات مهندسی پیشرفته اونیل
شکل دهی هیدروفرمینگ یا Hydroforming

تحقیق شکل دهی فلزات با موضوع هیدروفرمینگ

دانلود شکل دهی هیدروفرمینگ یا Hydroforming
پاورپوینت مدیریت خطوط کالا، نام های تجاری و بسته بندی (فصل پانزدهم كتاب اصول بازاریابی كاتلر )

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

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

عنوان دانلود پاورپوینت تجزیه و تحلیل اقتصاد بازار (فصل دوازدهم کتاب مدیریت سرمایه گذاری تألیف جونز ترجمه تهرانی و نوربخش)
دسته مدیریت سرمایه گذاری، مدیریت سرمایه گذاری پیشرفته مدیریت مالیحسابداری اقتصادفرمت پاورپوینت(Powerpoint)
تعداد اسلاید 14 اسلاید
کتاب مدیریت سرمایه گذاری تالیف جونز ترجمه دکتر رضا تهرانی و عسکر نوربخش از جمله منابع مهم درس

دانلود دانلود پاورپوینت تجزیه و تحلیل اقتصاد بازار (فصل دوازدهم کتاب مدیریت سرمایه گذاری تألیف جونز ترجمه تهرانی و نوربخش)
دانلود پاورپوینت قیمت و بازده اوراق قرضه (فصل هفدهم کتاب مدیریت سرمایه گذاری تألیف جونز ترجمه تهرانی و نوربخش)

عنوان دانلود پاورپوینت قیمت و بازده اوراق قرضه (فصل هفدهم کتاب مدیریت سرمایه گذاری تألیف جونز ترجمه تهرانی و نوربخش)
دسته مدیریت سرمایه گذاری، مدیریت سرمایه گذاری پیشرفته مدیریت مالیحسابداری اقتصاد
فرمت پاورپوینت(Powerpoint)
تعداد اسلاید 39 اسلاید
کتاب مدیریت سرمایه گذاری تالیف جونز ترجمه دکتر رضا تهرانی و عسکر نوربخش از جمله منابع مهم درس مدی

دانلود دانلود پاورپوینت قیمت و بازده اوراق قرضه (فصل هفدهم کتاب مدیریت سرمایه گذاری تألیف جونز ترجمه تهرانی و نوربخش)
دانلود پاورپوینت تصمیم گیری و حل مسأله (فصل چهارم کتاب مبانی سازمان و مدیریت رضائیان)

عنوان دانلود پاورپوینت تصمیم گیری و حل مسأله (فصل چهارم کتاب مبانی سازمان و مدیریت رضائیان)
فرمت پاورپوینت (قابل ویرایش)
تعداد اسلاید 33 اسلاید
دسته مدیریت( مبانی سازمان و مدیریت اصول مدیریت مدیریت عمومی)
طراحی با سالایدهای بسیار زیبا
کتاب مبانی سازمان و مدیریت دکتر علی رضائیان از جمله ی مهمترین منابع درس مبانی سازمان و مدیریت، اصول مدیریت و

دانلود دانلود پاورپوینت تصمیم گیری و حل مسأله (فصل چهارم کتاب مبانی سازمان و مدیریت رضائیان)
جزوه آموزشی رویكردی به نگهداری و تعمیر برنامه ریزی شده سطح1

فهرست مندرجات
عنوان صفحه
بخش اول اهداف نگهداری و تعمیر برنامهریزی شده
1 مقدمه 3 1
5 BS 2 نگهداری و تعمیر برنامهریزی شده و تقسیمبندی 1
3 مزایای نگهداری و تعمیر برنامهریزی شده 11 1
بخش دوم فازبندی پروژه طراحی و اجرای سیستم نگهداری و تعمیر
بخش سوم طراحی سیستم نگهداری و تعمیر برنامهریزی شده
1 ایجاد سیستم 21 3
2 طراحی فرمها و ساختار اطلاعاتی

دانلود جزوه آموزشی رویكردی به نگهداری و تعمیر برنامه ریزی شده سطح1

 

طراحی ابتدایی نرم افزار webot  در آزمایشگاه LAMI  در انستیتو تکنولوژی فدرال سوییس در لوزان سوییس انجام شده است.این انستیتو هیچ نوع ضمانتی برای این نرم افزار نمی دهد .EPFL هیچ مسئولیت برای بهره برداری از این نرم افزار نمی پذیرد .

 

Trademark information

AiboTM is a registered trademark of SONY Corp.

RadeonTM is a registered trademark of ATI Technologies Inc.

GeForceTM is a registered trademark of nVidia, Corp.

JavaTM is a registered trademark of Sun MicroSystems, Inc.

KheperaTM and KoalaTM are registered trademarks of K-Team S.A.

LinuxTM is a registered trademark of Linus Torvalds.

Mac OS XTM is a registered trademark of Apple Inc.

MindstormsTM and LEGOTM are registered trademarks of the LEGO group.

IPRTM is a registered trademark of Neuronics AG.

PentiumTM is a registered trademark of Intel Corp.

Red HatTM is a registered trademark of Red Hat Software, Inc.

Visual C++TM,WindowsTM,Windows 98TM,Windows METM,Windows NTTM,Windows 2000TM,

Windows XPTM and Windows VistaTMare registered trademarks of Microsoft Corp.

UNIXTM is a registered trademark licensed exclusively by X/Open Company, Ltd.

 

 

 

 

 

 

پیشگفتار

Webot  یک  شبیه ساز سه بعدی روبات متحرک است .این بر اساس تحقیقات دقیق و گوناگون از رباتهای متحرک است .

این راهنما به شما طرز استفاده از webot  را یاد می دهد و خواننده باید  اطلاعاتی مختصر در رابطه با روباتهای متحرک  و C , C++, Java programming

  (Virtual RealityModeling Language) VRML97داشته باشد .

Webot 6  با طراحی جدید و تسهیلات گرداوری شده در آن مانند منبع کدها و ویرایشگر متحرک و غیره امکان طراحی گسترده ای به مصرف کننده می دهد .

امیدواریم  شما از کارکردن با Webot 6  لذت ببرید .

 

 

 

با تشکر از

Cyberbotics is grateful to all the people who contributed to the development of Webots, Webots

sample applications, the Webots User Guide, the Webots Reference Manual, and the Webots

web site, including Yvan Bourquin, Fabien Rohrer, Jean-Christophe Fillion-Robin, Jordi Porta,

Emanuele Ornella, Yuri Lopez de Meneses, S´ebastien Hugues, Auke-Jan Ispeert, Jonas Buchli,

Alessandro Crespi, Ludovic Righetti, Julien Gagnet, Lukas Hohl, Pascal Cominoli, St´ephane

Mojon, J´erˆome Braure, Sergei Poskriakov, Anthony Truchet, Alcherio Martinoli, Chris Cianci,

Nikolaus Correll, Jim Pugh, Yizhen Zhang, Anne-Elisabeth Tran Qui, Gr´egory Mermoud, Lucien

Epinet, Jean-Christophe Zufferey, Laurent Lessieux, Aude Billiard, Ricardo Tellez, Gerald

Foliot, Allen Johnson, Michael Kertesz, Simon Garnieri, Simon Blanchoud, Manuel Jo˜ao Ferreira,

Rui Picas, Jos´e Afonso Pires, Cristina Santos, Michal Pytasz and many others.

Moreover, many thanks are due to Cyberbotics’s Mentors: Prof. Jean-Daniel Nicoud (LAMIEPFL),

Dr. Francesco Mondada (EPFL), Dr. Takashi Gomi (Applied AI, Inc.).

Finally, thanks to Skye Legon and Nathan Yawn, who proofread this guide.

 

 

 

 

بخش 1

نصب webot

1.1           سخت افزار مورد نیاز

سخت افزارهای مورد نیاز برای اجرای webot  به شرح ذیل می باشد :

یک pc  مناسب یا کامپیوتر مکینتاش با 1ghz  یا یک پردازنده با clock speed بالا.

کارت گرافیک  opengl با رم 128mb .webot  آزمایش شده با کارتهای گرافیکی NVIDIA  و ATI  .پیشنهاد ما برای کاربرهای لینوکس NVDIA است .ما توصیه نمی کنیم سایر کارتهای گرافیک و ضمانت نمی کنیم سایر کارتهای موجود در بازار را برای اجرای خوب opengl  .

Webot  با همه کارتهای گرافیک در کامپیوترهای جدید Apple خوب کار می کند.

سیستم عامل های مورد پشتیبانی به شرح ذیل می باشد :

لینوکس : webot  رسما در UBUNTU امتحان شده ولی webot  اجرا می شود در اغلب نسخه های لینوکس شامل Redhat ,mandrake,debian ,gentoo,SuSE,و Slackware

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

 

rpm (Redhat Package Manager)

and .deb (Debian) install packages and both i386 and x86-64

 

ویندوز :قابلیت اجرا بر روی ویندوز ویستا ، XP  ،2000 و 2003.بر روی ویندوز 98 ،me  یا NT4 قابل اجرا نیست.

مکینتاش :بر روی نسخه های X10.4(Tiger) و 10.4 (leopard)  اجرا می شود.اساس این نوع بر مبنای باینری می باشد و به سادگی بر روی power pc ,Intel base macintosh  اجرا می شود و لی بر روی نسخه های مکینتاش قدیمی آزمایش نشده است.

دیگر نسخه هایی که webot  بر روی آنها اجرا می شود شامل سیستم عامل UNIX(Solaris,Linux ppc,Irix)  می باشد.

 

 

1.2           :مراحل نصب

معمولا به یک “administrator” برای نصب نیازمندید .نصب Webot  میتواند توسط یک کاربر مبتدی انجام گیرد.

  1. مراحل ارزیابی برای نصب webot  روی سیستم عامل شما در زیر توضیح داده شده

است.

  1. نصب USB DONGLE  شما در بخش بعد توضیح داده شده است.

توجه :بعد از نصب USB DONGLE  مراحل ارزیابی EDU و PRO  بیان خواهد شد.بعد از نصب اکثر قطعات webot  قابلیت اجرایی خواهند داشت .

در حقیقت برخی ابزار اضافی نظیر java,pithon  لازم هستند برای اجرا یا کامل کردن برنامه های اختصاصی.در بخش 5 توضیح مفصل در مورد این ابزار بیان خواهد شد.

1.2.1   :

لینوکس:webot بر روی اغلب نسخه های جدید  glibc2.3 اجرا می شود .

که شامل جدیدترین نسخه های UBUNTU,DEBIAN,FEDORA,SUSE,REDHAT می باشد.

Webot  در سه بسته مختلف ارائه می شود:tarbal,rpm and deb  که برای اغلب  سیستم عامل های لینوکس مناسب هستند .

محل این بسته  ها بر روی سی دی webot  در پوشه linux/webot یا از طریق دانلود روی وب سایت قابل دسترسی هستند .برای نصب ، مراجعه کنید به نسخه لینوکس و از میان rpm ,deb یا tarbal  یکی را انتخاب کنید.

توجه:اگر درایور opengl  را نصب کرده باشید webot سریعتر اجرا می شود .

کارتها ی گرافیکی ATI و NVIDIA  که opengl   را دارا باشند بهره برداری بهتری از Webot  خواهید داشت .

 

 

Tarbal package  :

Tarbal package بدون هیچ زیر شاخه ای می باشد و تنها فایل tarxjf در آن موجود می باشد بدون فیلهای فشرده شده.

فایل اجرایی webot  داخل مسیر زیر می باشد :

tar xjf webots-6.1.1.tar.bz2

export WEBOTS_HOME=/home/username/webots

خط خروجی شامل پیکربندی متنی شبیه /etc/profile برای هر بخشی می باشد.

 

 

 

RPM package

 

1. Log on as root

2. rpm -Uvh webots-6.1.1-1.i386.rpm

 

1.2: مراحل نصب

DEB package

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

deb http://www.cyberbotics.com/debian/ binary/

 

پیکربندی فایل شما در /etc/apt/sources.list می باشد ،و سپس پیش رفتن عملیات نصب webot  با استفاده از apt-getinstallwebots  .وقتی سیستم شما بروز باشد قابلیت دانلود و نصب آخرین نسخه های webot  را مطمئنا خواهید داشت .

شما مرتبا میتوانید بسته DEB   آماده شده را مستقیما با استفاده از dpkg داشته باشید : 

 dpkg -i webots_6.1.1_i386.deb

1.2.2 

ویندوز xp   یا ویستا

1. برای نصب webot  شما می توانید به منوی start  ،control panel  ،add /remove program  ،مراجعه کنید و همچنین می توانید از منوی start ،cyberbotics ،uninstall webots    استفاده کنید .

2. برای گرفتن فایل نصب webots-6.1.1 setup.exe  می توانید هم از webots CD-ROM(in the windows /webots folder)  یا از وبسایت ما استفاده نمایید .

 

http://www.cyberbotics.com/cdrom/windows/webots/

3.دوبار کلیک بر روی این فایل

4.ادامه نصب بر اساس دستورالعمل میباشد.

برای کنترل و کامپایل کردن برنامه های گردآوری شده در نسخه های ویندوز، webot از کامپایلر MinGW به صورت آزاد استفاده میکند .

توزیع کامپایلر MinGW  در زیر شاخه mingw  قرار گرفته است . MinGW is a

Windows port of the standard GCC compiler tools for C/C++ ،MinGW تماما کامل شده با کدهای ساخته شده در webot

 

دو قطعه مربوطه تحت نرم افزارهای GNU Public   می باشند که دارای مجوز رایگان هستند .

شما همچنین می توانید  Dev-C++ (free of charge) or Microsoft Visual C++TM (commercial product) انتخاب کنید .

1.2.3.Mac OS X

 

1.برای گرفتن فایل نصب webots-6.1.1 setup.exe  می توانید هم از webots CD-ROM(in the mac /webots folder)  یا از وبسایت ما استفاده نمایید .

2.دو مرتبه بر روی فایل مورد نظر کلیک نمایید.

3.این رویه نصب  بایستی بر  روی دسکتاپ با نام پوشه webot    انجام گیرد.انتقال پوشه فوق درون  /applications یا هر جا که شبیه این است برای نصب webot الزامی است .

4.شما می توانید قرار بدهید محیط متغیر WEBOTS_HOME در جهت نصب مستقیم Webot .این میتواند مفید واقع گردد که شما بخواهید کنترل کدها را در ترمینال کاربردی کامپایل کنید.این می تواند انجام گیرد برای تمام کاربرها بوسیله  اضافه کردن    webots exportWEBOTS HOME=/Applications/  به پوشه  /etc/profile .

به عبارت دیگر برای یکسان کردن کنترل کننده ها در مکینتاش شما به نصب Apple’s Xcode Tools نیاز دارید .ابزارهای x code  کامل و رایگان بر روی dvd سیستم عامل مکینتاش نصب هستند .در غیر اینصورت آنها می توانند با ارتباط با وبسایت پیشرفته اپلwebot دانلودبشوند .حتما نیاز بهgcc (GNU C COMPILER)  و فرمانهای ساخته شده از ابزار XCode دارد.

 

1.3

مجوز سیستم webots

 در webot 5.3 مجوز استفاده از امکانات داخل پوشه ای با عنوان Webots.key بوده است در سیستمهای جدید منتقل شده به USB DONGLE که شما به راحتی می توانید آن را از کامپیوتری به کامپیوتر دیگر منتقل نمایید.

ویندوز و سیستم عامل مکینتاش به صورت خودکار webots dongle را شناسایی می کنند .هیچ درایوری برای نصب نیاز ندارد.تحت لینوکس برای Root User بدون نصب هیچ درایوری کار می کند.با وجود اینکه کار میکند برای تمامی کاربرهای لینوکس، شما باید عملیات نصب را که در محل پوشه linux/webots / driver usb dongle  که  در CD_ROM WEBOTS و یا در وبسایت ما دنبال کنید .

اگر این ساختار اشتباه بود بایستی نام /etc/udev/rules.d/00-matrix.rules  به نام

/etc/udev/rules. d/99-matrix.rules تغییر یابد .

در برخی از سیستمهای لینوکس ممکن لازم باشد برای فعال کردن USB از خط فرمان زیر استفاده شود :

export USB_DEVFS_PATH=/proc/bus/usb

این معمولا در /etc/profile قرار دارد بنابراین هر کاربر بعد از وارد کردن USB  نیاز به SET  کردن ندارد.

 

 

Figure 1.1: The Webots USB dongle

 

بعد از تهیه کردن کپی از برنامه WEBOT  شما بایستی USB DONGLE را تهیه نمایید.اطلاعات USB DONGLE محرمانه است و شامل :نام شما ،سازمان ، کشور ، نوع مجوز و زمان پایان سرویس دهی اولیه و غیره می باشد.این اطلاعات می توانند در پنجره Help/About... خوانده شوند.

1.4

لطفا قبل از استفاده از webot  مجوزتان را به دقت مطالعه نمایید.این مجوز در داخل بسته نرم افزار تهیه شده است .با استفاده از این نرم افزار و مطالب شما متعهد به رعایت این قوانین در مجوزتان می شوید .

 

1. 3 .1

مجوز DONGLE

Dongle  دریافتی شما بایستی شامل برچسب طراحی شده با “PRO#” یا “EDU#”  بدنبال یک شماره همراه آن است .اگر برچسب شامل “FLT#”  باشدبدان معنا است که مجوز قابلیت جابجایی را دارد و از این رو می تواند در SERVER استفاده شود . به عبارتی دیگر شما می توانید dongle  را به کامپیوتری متصل کنید که webots  روی آن نصب شده است این مجوز شما مورد قبول است و به شما امکان استفاده از webot  را می دهد .این حقوق مجوز شما را  فعال خواهد کرد و به شما برای استفاده webot  بر روی این کامپیوتر اجازه  خواهد داد .

براحتی می توان در تمامی کامپیوترها از USB DONGLE   استفاده کرد .

USB DONGLE بایستی قبل از راه اندازی webot  به کامپیوتر متصل گردد ،ونباید تا اتمام برنامه از کامپیوتر جدا نمود .

2. 3. 1 Floating licence

اگر خرید یک مجوز webot  شما شامل مجوز تغییر سرور دارا باشد،شما بایستی USB DONGLE  با برچسب “FLT#” به همراه شماره دریافت نمایید.

دستورالعمل چگونگی دانلود و نصب مجوز شناور webot به نام 1serv3 می باشد.

1serv برنامه ای است که اجازه می دهد تا webot  بطور همزمان با تعدادی ماشینهای تعیین شده  دیگر توسط آپی آدرس (یا نام آنها ) اجرا شود.

از این رو با داشتن Floating Licence دیگر برای اجرا webot  بر روی هر کامپیوتر نیاز به یک Dongle  نداریم .

درعوض فقط یک Dongle با برچسب “FLT#”  که باید متصل شود به کامپیوتری که برنامه 1serv3 اجرا می کند.برنامه 1serv3 موافقت می کند دستیابی به webot  را با کامپیوترهای پیشرفته ،وآن همچنین تظمین می دهد تعدادی از کامپیوترهایی که بصورت همزمان در حال اجرا webot  هستند نتوانند از آن تعداد تعیین شده توسط dongle  تجاوز کنند.پیشنهاد میشود 1serv3 بر روی ماشینهای سرور نصب شود که دائما روشن می باشند.1serv3 قابل دسترسی برای سیستم عاملهای linux,windows,mac می باشد.آن از webot  اجازه دارد که اجرا بشود در ماشینهای linux,windows,mac

اگر شما نیاز به اطلاعات بیشتری درباره انواع مجوزها دارید لطفا به آدرس زیر ایمیل بزنید : <license@cyberbotics.com>

 

1.4

ترجمه webot به زبان مورد نیازتان

بخشی از webot به تعدادی از زبانها شامل فرانسوی ،آلمانی ، ژاپنی ،اسپانیا ،هلندی ، چینی ترجمه شده است .در  حقیقت چون Webots  دائما در حال باز شدن است لغات و جملات جدید و تغییر یافته بوجود می آیند این ترجمه ها اغلب نمی توانند کامل و مطمئن باشند .به عنوان یک کاربر webot  ،از کمک شما برای کامل کردن این ترجمه های ناقص و ناصحیح تشکر می کنیم.

در حقیقت این مراحل خیلی ساده است که شامل ویرایش تعداد کمی کدهای مشترک VTF8 از فایلهای متنی است و اختیارا مرتب کردن آنها با یک فایده کمی همراه است  کمک دوستانه شما برای کامل کردن آنچه در webot  وارد شده است به webots  کمک می کند و نام شما در این کتابچه راهنما می آید. حتی اگر زبان شما به صورت صحیح در webot  ظاهر نشده است در اولویت بندی تحت General tab  شما به سادگی می توانید آن را اضافه کنید برای ساخت مراحل  یک موقعیت توسعه یافته از وضعیت موجود لطفا دنبال کنید دستورالعمل واقع شده در فایل  readme.txt در پوشه webots/resources/locale .

 

 

 

بخش دوم

شروع webot

این بخش یک بررسی کامل در webot   GUI را انجام می دهد شامل پنجره اصلی و زیر مجموعه های آن مانند محیط پنجره سه بعدی ،مدیریت کنترل برنامههای که در بخش 5 شرح داده شده اند .

2.1

مقدمه بر Webot

2. 1 .2 webot  چیست ؟

Webot  یک مجموعه نرم افزاری تخصصی شبیه سازی روباتهای متحرک است .در آن یک محیط الگوی ابتدایی سریع ایجاد شده است که به کاربر اجازه می دهد با توجه به خواص فیزیکی مانند نیروی جاذبه ،ترکیبات ،اصطعکاک ،ضریب هم عامل و غیره در یک محیط واقعی به شکل سه بعدی خلاقیت داشته باشد کاربر این چیزهای غیر فعال را فعال می کند که ربات متحرک نامیده می شوند این رباتها می توانند شکلها و حرکات متفاوتی داشته باشند مانند ربات چرخ دار رونده و پرنده آنها ممکن است بیشتر از این مجهز شده باشند به گیرنده ها و بخش های فعال کننده مانند گیرنده فاصله چرخهای حرکتی دوربین فرمان دادن گیرنده های لمسی چنگ زدن نورپردازی کردن و غیره در انتها کاربر می تواند هر  روبات را انحصارا بر اساس خواسته اش طراحی برنامه ریزی و به نمایش درآورد.webot  شامل یک گروه بزرگ از مدلهای روبات است و برنامه های کنترلی و مثالها به کاربر کمک می کند تا شروع کند webot  همچنین دارای تعدادی روباتهای واقعی است که شما بعد ار طراحی و ساخت روبات مورد نظرتان می توانید می توانید برنامه کنترل آن را روی روباتهای واقعی مانند e-puck,khepera,hemisson,LEGO Mindstorms,Aibo وغیره جابجا کنید .

2.1.2

با webot په کاری را میتوانم انجام دهم؟

Webot  برای تحقیقات و پروژه های علمی که به روباتهای متحرک مربوط می شود بسیار مناسب است بسیاری از پروژههای روباتهای متحرک برا اساس اعتماد به webot سالهاست انجام می پذیرد مانند پروژه های زیر :

-       روبات متحرک اساسی (تحقیقات آکادمیک ،محصولات خودرو مربوط به دانش هوایی ،تمیز کننده های صنعتی ، محصولات بازی ،سرگرمی)

-       کاوش و پژوهش در روباط متحرک (رونده ،انسان نما ،روبات چهارپا)

-       تحقیقات چند منظوره (گروه هوشمند ،روبات های کارگر و...)

-       تحقیقات سازگاری رفتار (تکامل ژنتیک ،شبکه اعصاب،یادگیری تطابقی)

-       آموزش روبات متحرک(سخنرانی های روباتیک ،برنامه های C.C++ ،برنامه پیتون،مباحثات روباتیک)

2. 1. 2

برای استفاده از Webot  نیاز به چه معلوماتی دارم ؟

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

 از C,C++ ،زبانهای برنامه نویسی Java یا PITHON  لازم است تا برنامه ریزی کنید کنترل روبات خود را در حقیقت اگر تا حالا شما این زبانها را نمی دانسته اید می توانید برنامه ریزی کنید  e-puck و روبات انسان نما را با استفاده از برنامه های زبانی گرافیکی ساده که  Bot studio  نامیده می شوند .

-       اگر شما از مدلهای موجود در محیط webot  نمی خواهید استفاده کنید و برای ساختن مایلید مدل روبات تخصصی خودتان را بسازید و یا به محیط شبیه سازی چیزهای تخصصی را اضافه کنید به اطلاعات پایه در مورد گرافیک سه بعدی در کامپیوتر و VRML97 نیاز خواهید  داشت که اجازه می دهد شما مدل روبات تخصصی خودتان را بسازید و در محیط سه بعدی وارد کنید و آن را در مدل نرم افزاری webot  جابجا کنید .

4. 1. 2

شبیه سازی با webot

یک شبیه سازی webot  از چیزهای زیر ترکیب شده است :

  1. پوشه World  که شرح می دهد روبات های متحرک را در محیط شان.
  2. برنامه های کنترلی بر روباتهای فوق.
  3. انتخاب یک ناظر

 

5. 1. 2

World چیست ؟

در webot  یک world عبارتست از توصیف جزئیات روباتها در محیطشان به شکل سه بعدی که شامل توصیف هر چیزی است مانند : موقعیت آنها گرایش جهت یابی ، هندسی ، نما و ظاهر آنها مانند :رنگ و نورپردازی ،خواص فیزیکی ، نوع عملکرد آن و غیره.World  به صورت ساختار سلسله مراتبی سازمان یافته شده اند که بعضی از معلومات می توانند معلومات دیگر را پوشش دهند مانند VRLM97 .برای مثال یک روبات که می تواند دو چرخ داشته باشد و یا گیرنده فاصله یاب و یا فرمان خودکار دوربین و غیره  .یک پوشه World  در روبات کنترلکننده کد را شامل نمی شود فقط نام کنترل کننده های کدهای لازم برای هر روبات را اختصاصا دارد Worlds. در فایل .wbt  نگهداری می شود ..wbt فایلهای نگهدارنده زیر شاخه های World  در هر پروژهwebot  هستند .

6. 1. 2

کنترل گرها چیستند؟

یک کنترل گر عبارتست از یک برنامه کامپیوتر که یک روبات تخصصی و شناخته شده را در فایل world کنترل می کند .با هر زبان برنامه نویسی کنترل گرها می توانند نوشته شوند مانند :C.C++ ،Java ،,Urba یا  Pithon که تهیه شده اند در Webot .

وقتی یک شبیه سازی شروع می شود یک کنترل گر تخصص یافته  روبات را Launch می کند .با هر برنامهای ، جدا گانه همکاری می کنند در حقیقیت چند روبات با یک کنترل گر و همان کد می توانند کار کنند  این یک برنامه متمایز برای هر روبات خواهد بود .بعضی از زبانهای برنامه نویسی نیاز به compile  دارند مانند : C.C++ بعضی از زبانها نیاز به ترجمه شدن دارند مانند Urbiو Pithon و بعضی نیاز به compile  و هم ترجمه دارند ماند  Java  برای مثال C.C++ کنترل گرهایی هستند کامپایلی ،که طراحی اجرای آنها بر اساس سیستم Binary می باشد(برای نمونه .exe تحت ویندوز) .مفسر کنترل گرهای URBIو Python بصورت سیستمهای متناظر Run-time می باشند (که باید نصب شوند) . کنترل گرهای Java نیاز دارند تا بصورت کدهای هشتایی یا بایتی کامپایل شوند (پوشه .class یا .Jar )و سپس ترجمه کردن توسط یک ماشین مجازی جاوا صورت می گیرد .

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

7 .1 .2   

Supervisor چیست ؟

Supervisor یک نوع مزیتی از روبات است می تواند عملیات اجرایی که به صورت طبیعی انجام می شود توسط عامل انسانی و نه بوسیله روبات تنظیم شده را انجام دهد Supervisor یک همکاری طبیعی با برنامه کنترلی است که می تواند توسط هر یک از زبانهای برنامه نویسی متذکر در بالا نوشته شود در حقیقت در مقایسه با یک کنترل گر صحیح رباتی ،کنترل گر Supervisor عملیات ویژه را تقویت می کند عملیات ویژه شامل :کنترل شبیه سازی حرکت انتخابی ربات ساختن عکس ویدئویی از شبیه سازی و غیره .

  1. 2

Launching Wbot

  1. 2. 2

در Linux

در یک ترمینال با تایپ Webots ،Webots  فعال می شود.در ابتدا که شما Webots را شروع می کنید این جمله نمایان خواهد شد”Welcome to Webots!”  لیست منو شروع به نمایش می کند آنچه را که می خواهید  با آ ن شروع کنید

 

SYNOPSIS: webots [OPTIONS] [WORLD_FILE]

OPTIONS:

--batch                   batch mode (no display)

--mode=MODE    startup mode (overrides application preferences)

                              MODE argument must be one of: stop, run or fast

--debug                 debug mode (experimental)

--help                    display this message and exit

--version               display version information and exit

 

بدون پنجره و نمایش گری دسته انتخابی، دستهMod  Webot  را برای شروع انتخاب می کند .

این هست مفید برای فعال کردن شبیه سازی از متنهایی که شبیه سازی وسیعی را انجام می دهند با مجموعه ای از پارامترهای مختلف و به صورت خودکار نتایج را برای یک Supervisor و یا روبات کنترل گر برنامه ذخیره می کند.

فعال سازی Webot  در Batch Mod به آسانی یا تایپ webots--batchfilename.wbt در جایی که filename  انجام می شود در جایی که شما خواسته اید از WORLD FILE استفاده کنید .

وقتی در batch mod ،Webot  فعال شد سرعت عملیات به  “fast mod” مربوط می شود (بعدا توضیح داده می شود ).

توجه :Webot  از Open GL برای سایر اهداف پس از تحویل دادن فضای سه بعدی استفاده می کند.بعضی شبیه سازیها در Open GL که برای اهداف خاصی دلالت دارند در Batch Mode کار نمی کنند  این شامل هر شبیه سازی Pen Device یا Floor Sensor  که استفاده می شود می گردد.بعلاوه هر عملیات واقع شده در فضای  سه بعدی ، منتقل خواهد شد همچنین رفتارش در Batch Mod غیر قابل پیش بینی است که این شامل   wb_supervisor_export_image() and wb_supervisor          

_start_movie().

بعلاوه دستگاههای دوربین فقط وقتی کار می کندکه webot  موفق شده باشد یک X server  برای نمایش پنجره های دوربین به دست بیاورد.

انتخاب-Mode=MODE Mode  می تواند  برای شروع Webot  در یک Mode  اجرایی تخصصی استفاده شود.

سه Mode  اجرایی عبارتنداز :Stop,Run,Fast  ; آنها به دکمه های کنترل شبیه سازی Webot مربوط می شوند . این انتخاب جامعی است اما تعریف نشده است که Startup mod در webot preferncec ذخیره می نماید .

برای مثال webots—mode=stop filename . wbt برای شروع webot در stop mode  تایپ کنید.

2. 2. 2

سیستم عامل مکینتاش

راهنمایی را که از بسته webot  نصب کرده اید باز کنید و بر روی آیکون Webot  دوبار کلیک نمایید. “Welcome to Weobots!” اولین باری که webot  شروع به کار می کند ظاهر می گردد وسپس لیست منوها نمایان می گردد و شما می توانید انتخاب نمایید.

  1. 2. 2

در ویندوز

به منوی start رفته و منویprogramfile-cyberbotics را انتخاب کرده سپس روی منوی Webot6.1.1 کلیک نمایید. “Welcome to Weobots!” اولین باری که webot  شروع به کار می کند ظاهر می گردد وسپس لیست منوها نمایان می گردد و شما می توانید انتخاب نمایید.

 

  1. 2

پنجره  اصلی :منوها و دکمه ها

Webots GUI از چهار پنجره اصلی ساخته شده است.اولین ،پنجره شبیه سازی یا سه بعدی است که نمی تواند پنهان شود .آن نمایش می دهد یک فضای مجازی را به صورت درست و دارای یک toolbar با میانبرهایی برای بخشهای مهم منو است.

دومین ،the scene tree window که یک محیط واقعی را نمایش می دهد.

سومین، the text editor window که معمولا کدهای کنترلی و فایلهای متنی را اجازه ویرایش می دهد.و آخرین،the console window که کامپیلها و کنترلگرهای خروجی را نمایش می دهد،این پنجره ها تغییر سایز و جابجایی را دارند.

پنجره اصلی دارای 8 منو می باشد :file,edit,view,simulation,build,tools,wizard,help

 

 

Figure 2.1: Webots main window

  1. 3. 2

File Menu

این منو اجازه طراحی فایل اجرایی: Load ،save و غیره را می دهد .

  The new World دکمه ای است که باعث باز شدن پنجره جدید شبیه سازی میشود که شامل  یک ElevationGrid است که یک صفحه شطرنجی 10 در 10 در سطح1m  در 1m  را نمایش می دهد.

  The Open World دکمه ای است که باز می کند پنجره ای که شما می توانید فایلی با پسوند .wbt برای load کردن انتخاب نمایید.

  The Save World  این دکمه رویدادهای جاری صفحه را با نام فایل جاری ذخیره می نماید(نام فایل در بالای صفحه پنجره اصلی ظاهر می شود )هر یک از محتویات فایل هایی که باWebot ساخته می شوند با پسوند .wbt ذخیره می گردند و بازنویسی می شود  و پشتیبانی کپی انجام نمی گیرد،در نتیجه شما استفاده از این دکمه را با اطمینان و عاقبت امر،با کپی دستی ایمنی به عملتان دهید.

  The Save World As.. این دکمه رویداده های جاری صفحه را با نام وارده توسط کاربر ذخیره می نماید .توجه یک فایل .wbt بایستی همیشه در شاخه Project Webot ذخیره شود،و در زیر شاخه worlds ،درغیر اینصورت باز کردن دوباره فایل امکان پذیر نخواهد بود .

  The Revert World این دکمه رویدادهای جاری صفحه را که ذخیره شده اند Reload در نسخه میکند و دوباره از آنجایی که آغاز کردیم شبیه سازی می کند .

 

  The New Text File این دکمه فایلهای خالی متنی را در ویرایشگر متنی باز می کند.

  The Open Text File این دکمه پنجره ای را باز می کند که شما در آن اجازه دارید تا یک فایل متنی را برای Load کردن، انتخاب کنید(برای مثال یک فایل .java )

  The Save Text File فایلهای متنی جاری را ذخیره می نماید.

The Save Text File  این دکمه تمام فایلهای متنی ذخیره نشده و باز شده را ذخیره می نماید.

  The Save Text File As… این دکمه فایلهای متنی را با یک نام جدید که توسط کاربر وارد شده است، ذخیره می نماید.

 The Revert Text File این دکمه فایلها متنی را از نسخه های ذخیره شده

Reload  می کند.

     The Page Setup این منو پنجره ای باز می کند که به شما اجازه مدیریت طراحی صفحه تحت فرمان، برای چاپ فایل ها مطابق متن ویرایشی می دهد.

The Print این منو اجازه می دهد تا فایلهای ویرایش شده متنی جاری را چاپ نماید.

The Print Selection… این منو اجازه می دهد تا فایلهای ویرایش شده متنی انتخابی جاری را چاپ نماید.

The Import VRML 2.0 … این منو در انتهای Scence Tree موضوعات VRML97 را اضافه می کند.موضوعاتی که در یک فایلVRML97  قرار دارد بایستی توسط شما مشخص شوند.این خصیصه برای وارد کردن اشکال پیچیده مفید است که قبلا در برنامه مدل سازی سه بعدی مدل سازی شده اند سپس در VRML97  یا VRML 2.0قرارگرفته اند.

اغلب نرم افزارهای سه بعدی شبیه 3D Studio Max, Maya, AutoCAD, Pro Engineer, AC3D, or Art Of Illusion بصورت برجسته از VRML97 صادر شده اند.آگاه باشید Webot  نمی تواند فایلها را در VRML 1.0 وارد کند .

با یکبار قرار گرفتن این موضوعات ،به  شکل نودهای Group,transform یاShape در زیر منوی Scence Tree ظاهر می شوند .شما می توانید سپس این موضوعات را هم به سمت نودهایWebots سوق دهید شبیه Solid,DifferentialWheels,…)) یا قطع کنید و آنها را به Children لیست بچسبانید که در نودهای webot موجود است .

VRML 2.0… The Export

این منو اجازه می دهد تا شما Load های جاری صفحه را در یک فایل با پشوند.wrl ذخیره نماید ، که مطابق  با استاندارد VRML97  می باشند.اینگونه یک فایل با هر ناظر VRML97 می تواند تغییر نماید و باز شود .این بخصوص برای انتشار ساخته های webot  در وب سودمند است .

The Make Animation… این منو به شما اجازه می دهد تا یک انیمیشن سه بعدی در فایلی با پسوند .wva بسازید.این قالب فایل اجازه می دهد در نمایشگر webot انیمیشنهای webot  یکبار نمایش داده شود .نمایشگر webot  رایگان است و می تواند از Cyberbotics Website دانلود شود.نمایشگر webot  انیمیشن سه بعدی را می تواند نشان دهد و به کاربر برای تماشای هر زاویه انیمیشن این توانایی را می دهد.آن می تواند با اتصال به Internet Explorer,Firefox,Mozilla اجرا بشود ،البته به تنهایی مورد درخواست می تواند قرار بگیرد.WebotPlayer در ویندوز ،لینوکس و سیستم عامل مکینتاش کار می کند .آن مناسب برای اثبات کردن نتایج webot  است و برای شبکه جهانی اینترنت امکان پذیر است .

The Make Movie…   این آیتم اجازه ساخت Movie با پسوند MPEG برای لینوکس و سیستم عامل مکینتاش  یا پسوند AVI برای ویندوز را فراهم می سازد.

توجه تمام Movie هایی که با Webot  ساخته می شوند دارای فریم ریت 25 تصویر در هر ثانیه می باشند . با این وجود کنترل سرعت اجرا میسر است ،با این وقفه که ایجاد می شود webot  میتواند عکسها را تولید نماید.مدت وقفه بین دو عکس تولید شده، توسط Basic time Step و Display Refresh ساخته می شود که در نود World Info  قرار دارند.بنابراین برای مثال اگر شما به ویدئویی نیاز داشته باشید که در Real Time باشد بایستی زمان وقفه 40 ms باشد بدلیل 1 / F=1 / 25=0.04 s.

شما می توانید برای مثال 10 ms برای Basic Time Step و 4 برای Display Refresh  انتخاب کنید ،بنابراین زمان وقفه 10*4=40 ms خواهد بود ،و Movie در Real Time  اجرا خواهد شد .همینطور هر ترکیبی از Basic Time Step و Display Refresh که حاصل ضربشان 40 شود ،Real Time خواهد داد.

اگر حاصلضرب مربوطه کمتر یا بیشتر از 40 باشد Movie نسبت به Real Time کندتر و یا سریعتر نمایش داده خواهد شد .توجه داشته باشید که اصلاح کردن  Basic Time Step ممکن است روی شبیه سازی شما تاثیر بگذارد بنابراین ایمن تر است  تا آنجا که امکان دارد فقط Displey Refresh  را تغییر دهید .

The Take Screen Shot… این منو به شما اجازه می دهد تا یک Screen Shot  از نمای جاری Webot  بگیرید. باز می شود یک پنجره که نمای جاری آن در عکسی با پسوند  PNG ذخیره می شود .

The Quit Webot ترمینالهای جاری شبیه سازی و بستن Webots را انجام می دهد.

2. 3. 2

منوی ویرایش

The Undo این منو آخرین تغییرات انجام شده در داخل متن ویرایشی را برمی گرداند.

The Redo این منو برای برگرداندن عملکرد Undo استفاده می شود .

The Cut این منو از متن انتخابی کپی و داخل Cleapboard قرار می دهد و متن انتخابی را حذف می کند .

The Copy این منو کپی از متن انتخابی به Cleapboard  را انجام می دهد.

The Past این منو کپی موجود در Cleapboard را به متن ویرایشی مکان نما منتقل می کند.

The Select All این منو تمام متن  موجود در فایلهای متنی ویرایشی را انتخاب می کند .

  ... The Findاین منو یک ابزار برای جستجو در داخل طرحی که  ویرایش فایلهای متنی  در آن صورت می گیرد باز می کند.

  The Replace… این منو یک ابزار برای جستجو و جابجایی در داخل طرحی که  ویرایش فایلهای متنی  در آن صورت می گیرد باز می کند.

The Go to line… ابزاری است که مکان نما را از متن ویرایشی به خط ویژه جابجا می کند.

 

3. 3. 2

منوی نمایش (View Menu)

The View   این منو کنترل نماها را در پنجره شبیه سازی امکان پذیر می نماید .

The follow Object این منو اتصال بین یک نمای  ثابت و یک نمای متحرک را برقرار می کند (معمولا یک روبات).اگر شما بخواهید یک نما را بدنبال یک شی قرار دهید ابتدا نیاز دارید انتخاب کنید آن شی را موس و سپس منوی Follow Object  را بررسی کنید .توجه کنید  مکان ذخیره شدن Follow Object  در فایل .wbt می باشد .

The Restore Viewpoint این آیتم جایگاه و جهت دید مورد نظر را به حالت ابتدایی، load  یا revert می کند  .آن همچنین پروژه را در حالت Perspective بر می گرداند .این خصیصه دستی است هنگامی که شما هدایت را در صفحه گم می کنید،و می خواهید به Viewpoint  اصلی بازگردید .

The Projection این یک زیر منو است برای پنجره شبیه سازی webot که اجازه می دهداز بین Persctive و مدل پروژه Orthographic  انتخاب شود.

حالت Persspective یک پیش فرضی دارد، و به مانند یک پروژه طبیعی ارتباط برقرار می کند ،اشیایی را که دورتر از دید ناظر قرار دارند به حالت کوچکتری در عکس  ظاهر می کند .با پروژه Orthographic فاصله بیننده از اشیا تاثیری بر چگونگی بزرگی یک شی نمی گذارد.با حالت Orthographic خطهایی که در مدل موازی هستند در صفحه هم به شکل موازی ترسیم می شوند .بنابراین گاهی اوقات این پروژه در فاز مدل سازی مفید است.

The Rendering این یک زیر منو است  که اجازه می دهداز بین Regular و Bouding Objectsمدلی را به پنجره شبیه سازی Webot منتقل می کند.در Regular Mode اشیا با صورت هندسیشان،جسمیشان ،رنگیشان و بافتیشان منتقل می شوند،  در تعدادی از سبکها، معمولا در کنار چشم یا دوربین به نظر می آیند . در Mode ، Bounding Object تنها Bounding Object  منتقل می شوند .این می تواند برای اشکال زدایی یک مشکل در جهت ردیابی برخورد مفید باشد.

The Contact Point این آیتم Conact Point تولید شده رابا استفاده از موتور ردیابی برخورد بیرون می کشد . Conact Point هایی (نقطه های ارتباطی) که تولید انجام نمی دهند برابرند با Contact Force (نیروی برقراری ) هایی که نشان داده نمی شود.

یک Contact Force تنها برای اشیائی که فیزیکی هستند تولید می شود (نیاز به nod فیزیکی دارد ).

4. 3. 2

منوی شبیه سازی

The Simulation این منو برای کنترل اعمال شبیه سازی مورد استفاده قرار می گیرد.

  The Stop این دکمه شبیه سازی را متوقف می کند .

  The Step این دکمه شبیه سازی را در یک مرحله اساسی زمانی اجرا می کند.

طول کشیدن این مرحله در محدوده basicTimeStep توسط node ،WorldInfo

تعریف می شود ،و در پنجره Scence tree می تواند تنظیم شود ،در جهت وفق دادن نیاز شما.

  The Run این دکمه شبیه سازی را تا زمانی که توسطStop  یا Step  قطع شود اجرا می کند . در Run Mode صفحات سه بعدی در هر صحنه ،n مرحله اساسی زمانی Refres می کند،جایی که n تعریف می شود در محدوده displayRefresh که در node WorldInfo قرار دارد می باشد .

  The Fast این دکمه شبیه Run می باشد با این تفاوت که انتقال گرافیکی ندارد و تنها Webot PRO را انجام می دهد.موقعی که انتقال گرافیکی غیر فعال می شود این اجازه را به شبیه سازی می دهد تا سریعتر انجام گیرد بنابراین برای عملیات شبیه سازی با تمرکز بیشتر بر CPU مناسب خواهد بود (اگوریتم ژنتیک ،منظره ،آموزشی و...).

5. 3. 2

The Build Menu

   The Compile این منو به شما اجازه می دهد برای Compile متنهای ویرایش شده جاری مطابق با ساخت فایل که در همان شاخه واقع شده است

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

 The Clean این منو به شما اجازه میدهد فایل ساخته شده را از فایل ویرایش شده متنی جاری ،که در همان شاخه قرار دارد پاک نمایید.

The Make JAR file به شما اجازه می دهد یک پسوند .Jar از .Java بسازید.

  The Cross-Compile اجازه می دهد تا فایلهای ویرایش شده متنی جاری را Cross-Compile نمایید .توجه یک فایل ویژه ساخته شده، در هدایت کنترلگرها برای آماده کردن این عملیات ماده کردن ایی لازم است. برای یک روبات e-puck ،این فایل ساخته شده اغلب با این نام Makefile.e-puck می باشد .

 The Cross-Compile Clean اجازه می دهد تا فایلهای ویرایش شده متنی جاری Cross-Compile شده را پاک نمایید .توجه یک فایل ویژه ساخته شده، در هدایت کنترلگرها برای آماده کردن این عملیات ماده کردن ایی لازم است. برای یک روبات e-puck ،این فایل ساخته شده اغلب با این نام Makefile.e-puck می باشد .

6. 3. 2

ابزارهای منو

The Tools  این منو به شما اجازه می دهدتا پنجره های مختلف webot را باز کنید.

The Screen Tree برای شما یک پنجره Screen Tree را باز می کند که شما در Virtul World می توانید ویرایش نمایید .متناوبا این امکان پذیر هست که با دوبار کلیک در پنجره اصلی روی بعضی از چیزها  :این بصورت خودکار Scene Tree را با چیزهای انتخاب شده مربوطه باز می کند .

The Text Editor این منو ویرایشگر متنی webot را باز می کند .این ویرایشگر می تواند برای ویرایش و  Compile کنترل گر کدهای اصلی استفاده بشود.

The Cosole این منو Webot Console را باز می کند ، که فقط خواندنی است و برای نمایش پیغام های اشتباه webot  و کنترل گر خروجی استفاده می شود .

The Robot Window این منو پنجره روبات را باز می کند .نوع این پنجره وابسته به نوع روبات است ،webots دارای پنجره ویژه برای e-puck,khepera و Aibo robots .هر گونه از پنجره روبات تعدادی مرحله در جهت فعل و انفعال با  سنسور ربات و فعال کننده دارد.این منو تنها موقعی که روبات فعال است انتخاب شود.

The Motion Editor این منو ویرایشگر حرکتی را باز می کند .ویرایشگر حرکتی یک ابزاری است که برای رباتهای بند بند بخشهای حرکتی را طراحی می کند.این بخشها می توانند ذخیره شوند در motionfile  سپس در کنترل گر کد دوباره اجرا شوند.

The Upload to e-puck robot… این منو به شما اجازه می دهد تا یک ارتباط بلوتوثی را انتخاب کنید و به یک ربات E-puck ،Upload  نمایید.

The Preferences این منو یک پنجره را با دو بخش نمایان میکند:

-The General Tab :

The language :این بخش اجازه می دهد به شما تا زبانی را که کاربر Webot به آن نیاز دارد انتخاب کند .

 

The Startup Mode اجازه می دهد به شما تا بخشی از شبیه سازی را هنگامی که webot  شروع می شود انتخاب نمایید ( Stop,Run,Fast به منوی Simulation  مراجعه نمایید ).

The Editor font این منو در معین کردن فونتهایی که در ویرایش متن Webot نیاز است مورد استفاده قرار می گیرد .این پیشنهادی است در جهت انتخاب فونت با پهنای ثابت برای بهتر نمایش دادن کدهای اصلی .ارزش ساختاری این برنامه بصورت نمادین در ساختار آنجا دارد .بعد از تغییر فونت ،برای تغییر و تاثیر پذیری ، شما بایستی ویرایشگر کد اصلی را ببندین یا دوباره باز کنید .

 The Java command استفاده از فرمان Java که Java Virtual Mashin   را فعال می کند  برای مدیریت کنترل گر Java تعریف می شود .نوعا، درجهت java تحت لینوکس وسیستم عامل مکینتاش و  javaw.exe تحت ویندوز باید Set شود.این شاید سودمند واقع شود در جهت تغییر  به java.exe تحت ویندوز که نمایش بدهد consol Dos, را، در این هم ممکن پیغام JVM چاپ شود .همچنین اضافه کردن خط فرمان خروجی به فرمان Java  ممکن است مفید باشد ،شبیه java-Xms6144k .لطفا توجه کنید که Classpath به صورت خودکار عمل می کند ،که تحت فرمان java شناسایی شده و برای پیدا کردن همه کتابخانه های مورد نیاز برای مدیریت کنترل گر Webot است .اگر شما نیاز به اضافه کردن مراتب اضافی در Classpath دارید آنها را قرار دهید در محیط متغیر  Global Classpath خودتان و Webot  آنها را در مشخصات Classpath  خود ضمیمه می کند .

The Rendering  این دکمه درپنجره شبیه سازی، کنترل انتقال بعضی جنبه ها را به فضای سه بعدی انجام می دهد :

Display Global Coordinate System سیستم را برای نمایش در سیستم مختصات (دکمه راست گوشه پنجره ) بررسی می نماید.پیکانهایی به رنگ قرمز ،سبز و آبی به ترتیب محورهای X,Y,Z را نشان می دهند.

Display Sensor rays پرتوهای حساسی که رباتهای انتخاب نشده را نشان می دهند را بررسی می کند .رباتهای انتخاب شده همیشه توسط پرتوها نشان داده می شوند .شعاعهای گیرنده فاصله، به خط قرمز کشیده می شود (پس از برخورد با موقعیت سبز می شوند) و گیرنده نور که به رنگ زرد نشان داده می شود .

Display Device axes نمایش Servo و محورهای مختصات را بررسی می کند .محورهای Servo به صورت خط سیاه کشیده شده اند زمانی که محورهای مختصات به رنگ سبز و آبی کشیده شده اند محورهای Z,Y را نشان می دهند و خط سیاه ، منو بندی عوامل ذخیره شده را نشان می دهد.

Display Camera Frustums نمایش Open Gl Culling Frustum برای هر دوربین ، در صحنه با استفاده از یک سیم روپوش دار مغناطیسی بررسی می شود.The Open Gl Culling Frustum یک هرم بی سر شده است با زمینه نمای یک دوربین مطابقت می نماید .برای اطلاعات بیشتر در باره این مفهوم ضمیمه Open Gl  قابل دسترسی است .

Display Lights نشان دادن نودهای Point Lights که در چند خط زرد جالب نمایش داده شده اند را بررسی میکند.

The Coordinate System Size برای کنترل اندازه های زمینه گره های توپری را در مرکز محور مختصات نشان می دهد (وقتی آنها انتخاب شده اند) .برای هر گره تو پر دو مرکز نمایان می شود ،مرکز هندسی ( تعریف شده بوسیله زمینه های translition  و rotation ) و یک مرکز فیزیکی ( تعریف شده در Physics Nod ).

The Axes Size محدوده کنترل اندازه برای نمایش محورهای servo که به رنگ سیاه کشیده شده اند می باشد .

7. 3. 2

 منوی Wizard

The Wizard با استفاده از این منو پروژه های جدید و کنترل گرهای جدید، آسانتر ساخته می شوند .

The New Project Directory… ابتدا شما را به انتخاب یک فایل سیستمی موجود وادار می کند و سپس یک پروژه را مستقیما می سازد .یک شاخه پروژه شامل چند زیر شاخه است که معمولا فایلهای مربوطه شامل فایلهای متنی ،فایلهای کنترلگر ،فایلهای اطلاعاتی و فایلهای مربوطه  در پروژه تخصصی webot ذخیره شده اند . webot پروژههای شاخه جاری را یادآوری می کند و هر نوع فایل از زیر شاخه های مربوطه از شاخه پروژه را، باز و نگهداری می کند.

The New Robot Controller… این منو اجازه می دهد تا یک برنامه کنترلی جدید را طراحی نمایید .شما در ابتدا به انتخاب زبان برنامه کنترلی از میان C,C++,Java یا Pithon مجبورید .webot از شما درخواست ورود نام کنترل گر را می کند و سرانجام تمام فایلهای مورد نیاز را شامل : فایل الگوی منبا کدها از میان شاخه جاری پروژه شما طراحی خواهد کرد.

8. 3. 2

منوی Help

Help در این منو ،باز می شود آیتم About… که در این پنجره اطلاعات مجوز نمایش داده می شود .

The Webots Guided Tour.. این منو با یک گروه راهنما شروع می شود که توانایی های webot را با ذکر مثالها شرح می دهد .

The Rigester… به شما ID کامپیوترتان را نشان می دهد و صفحه رجیستر webot را بالا می آورد.

The OpenGl Information… اطلاعاتی در مورد OpenGl جاری شما ،نرم افزار و درایور می دهد و می تواند برای تشخیص مشکلات Render استفاده شود .

The Remaining این منو اطلاعات مختلفی را بالا می آورد که در آن HTML,Pages,PDF,Documents  و غیره واقع شده است .

9. 3. 2

Speedometr and Virtual Time (سرعت سنج و زمان مجازی)

یک سرعت سنج (شکل 2. 2)اجازه می دهد به شما تا سرعت شبیه سازی خود را در کامپیوترتان مشاهده نمایید . با دکمه سمت راست از پنجره اصلی نمایش داده می شود  و مقایسه زمان سرعت شبیه سازی با زمان واقعی را انجام می دهد . به عبارت دیگر سرعت زمان واقعی را نشان می دهد .اگر مقدار اجرای سرعت سنج 2 باشد دلالت دارد بر اینکه سرعت شبیه سازی در کامپیوتر شما دوبرابر سریعتر از سرعت روبات واقعی است .این اطلاعات در دو بخش Run  و Fast  معتبر است .

 

 

Figure 2.2: Speedometer

در سمت چپ سرعت سنج زمان مجازی نشان داده شده است که به این فرمت نشان داده می شود :H:MM:SS:MMM

H عدد ساعت را نشان می دهد ، MM دقیقه ها ،SS ثانیه ها ،MMM عدد میلی ثانیه ها است .

اگر سرعت سنج بیشتر از یک باشد زمان مجازی اجرا سریعتر از زمان واقعی است .زمان پایه برای شبیه سازی در محدوده basicTimeStep از نود WorldInfo در پنجره Scence Tree می تواند انجام گیرد .در زمان مجازی، میلی ثانیه ها بیان شده است مقدار این زمان، طول بخش زمان طی شده اجرایی را در Step mod تعریف می کند.این مرحله حاصلضرب محدوده DisplayRefresh از گره  WorldInfo  ،که کیفیت تکرار نمایش Refreshed را تعریف می کند.

10. 3. 2

Selecting an Object (انتخاب یک شی)

یک کلیک ساده موس اجازه می دهد یک شی یکسان را انتخاب کنید .انتخاب یک روبات  در منوی Tools با Robot view و Motion Editor  امکان پذیر می شود .با دوبار کلیک روی شی یکسان  Scence Tree یا پنجره روبات را باز می شود.

11. 3. 2

Navigation in The Scene

با کشیدن و فشار دکمه موس دوربین در صفحه سه بعدی حرکت می کند .

Camera Rotation : در پنجره سه بعدی با فشار دکمه سمت چپ و کشیدن موس یک شی یکسان انتخاب و دوربین متمرکز روی آن می چرخد ،اگر چیزی انتخاب نشده باشد دوربین روی سیستم مرتبا می چرخد.

Zooming / Camera Rotation  در پنجره سه بعدی فشار هر  دو دکمه راست وچپ موس  (یا فقط دکمه وسط موس ) و کشیدن موس بصورت افقی برای Zoom کردن به داخل و خارج می باشد .کشیدن موس بصورت عمودی دوربین را روی نماهای متقاطع خواهد چرخاند .متناوبا موس می چرخدو به  تنهایی برای زوم کردن استفاده می شود .

 

12. 3. 2

Moving aSolid Object (جابجایی یکسان شی)

برای حرکت یک شی دکمه شیفت را پاییم نگه داشته سپس شی را انتخاب کنید و موس را بکشید .

Translation :برای حرکت موازی یک شی در زمینه دکمه شیفت را پایین نگه دارید و بفشارید دکمه سمت چپ موس را و بکشید .

Rotation :برای چرخاندن یک شی با فشار شیفت و فشار دکمه سمت راست موس و کشیدن آن انجام میگیرد .چرخش یک شی در مختصات (X.Y,Z) می تواند با آزاد کردن و دوبار فشار دادن شیفت تغییر کند.

Lift :برای بالا آوردن و پایین بردن یک شی شیفت را بگیرید و فشار دهید دکمه راست و چپ موس و بکشید. متناوبا با چرخش موس و ترکیب آن با شیفت میتواند مورد استفاده قرار گیرد .

  1. 2

Scence Tree Window

همانگونه در قبل مشاهده نمودید برای آوردن صفحه Scence Tree می توانید در منویTools  ، Scence Tree  را و یا از موس با دوبار کلیک کردن روی شی انتخاب نمایید .صفحه Scence Tree شامل اطلاعاتی است که صفحه شبیه سازی شده را شرح می دهد که شامل روباتها و محیط و گرافیک های بوجود آمده ،ساختمان Scence Tree شبیه فایل VRML97 می باشد .که از یک سری نودها که هر کدام شامل یک فایل هست ساخته شده است.زمینه ها می تواند شامل چیزهای ارزشمند باشد (متن ها ،شماره های ارزشی) یا بقیه نودها  (گره) .

این بخش شرح داده می شود آنچه را که کاربر در پنجره Scence Tree با آن مواجه است و یک نظر کلی از گره VRML97 و گره ها ی Webot می دهد.

 

 

  1. 4. 2

     Buttons Of the Scence Tree Window  (دکمه های این پنجره)

گره ها می توانند با دوبار کلیک وسعت داده شوند .هنگامیکه یک میدان انتخاب شد،اندازه آن می تواند در انتهای Scence Tree ویرایش شود .تمام تغییرات در پنچره سه بعدی منعکس می شود .دکمه های زیر قابلیت ویرایش صفحه را دارند :

Cut  :گره انتخاب شده را قطع می کند .

  Copy : کپی داده  از میدان انتخابی یا گره  را انجام می دهد .

  Past  : چسباندن داده به محدوده انتخابی یا گره را انجام می دهد .

  Past after :چسباندن یک گره به گره انتخابی جاری را انجام می دهد .

توجه اولین گره سه تایی از Scence Tree(WorldInfo,Viewpoint and Background) نمی توند قطع و یا کپی یا چسبانده شود.یک نمونه مجرد از هر یک از این نودها باید در هر صفحه Webot  موجود باشد و این دستورالعملی درست می باشد.

  DELET :پاک کردن نودهای انتخابی و یا محدوده (از لیست فایلهای چند گانه).

  Reset to default :یک میدان را به مقدار پیش فرض باز می گرداند .

  Transform :اجازه تغییر نوعی از نودها را می دهد.

  Insert after :بعد از انتخاب یک نود ،می توان آرا در راست قرار داد .این متن سه گوش به شما اجازه می دهد یک نود از لیست انتخاب کنید .نود جدید ساخته شده است ،بصورت بنیادین و می تواند بعدا تعریف شود .شما می توانید آن را در جای مناسب در میدان مربوطه قرار دهید .

  New Node : یک نود جدید به میدان نودها اضافه می کند . این زاویه به شما اجازه خواهد داد تا انتخاب کنید یک نود را از لیست و فقط می توانید آن را در زمینه مربوطه قرار دهید .

  Exportr :یک نود را از داخل فایل .ascii خارج می کند .خروج نودها از سایر صفحاتی که نودها را در آن وارد کرده اید می تواند انجام گیرد.

  Import :ورود یک نود خارج شده به داخل Scence Tree

 Help  :ضمیمه کمکی برای انتخاب نودهای جاری

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

  1. 2 Source Code Editor 

ویرایشگر کدهای اصلی Webot هستند یک ویرایشگر متنی چند دکمه ای مخصوص متعادل سازی برای توسعه کنترلگرهای Webot  می باشد .ترکیب خصوصیاتهای ویرایشگر، پررنگ شده است برای پشتیبانی از زبانهای Webot (C,C++,Java,YRBI and Python) و برای Webot C APIبصورت خودکار کامل می شوند.

 

Figure 2.4: Webots Text Editor

 

1. 5. 2   Compiling With the Source Code Editor

The Source Cod Editor می تواندبرای کامپایل کردن C,C++ یا فایلهای اصلی Java درون فایلهای باینری استفاده شود که می تواند  در هنگام شبیه سازی اجرا بشوند .برای Campile کدهای اصلی لازم لست که ابزار پیشرفته اختصاصی نصب شود برای ساختن از همه زبانهای C,C++, وJava فرمان Make لازم است .برای C و C++ کامپایلر Jcc نیز لازم است .در ویندوز این ابزار قبلا نصب شده اند در توزیع گر Webot بنابراین هیچ نصب خارجی لازم نیست.در مکینتاش شما به ابزار Apple’s X code برای نصب نیاز دارید .برای Java فرمان Javac لازم است .بنابراین جاوای توسعه یافته Kit (JDK) باید نصب شود .

The Compile  این دکمه اقدام به کامپایل کردن فایلهای انتخاب شده اصلی می نماید.تنها فایلهای جاری را کامپایل می نماید و نه پروژه های متصل به آن را.Webots تکیه می کند به گستردگی نام فایلهای منبع برای انتخاب آنچه که مورد نیاز است،Jcc,J++or Javac .

The Build  این دکمه کامپایل و پروژه را به فایل اجرایی (C.C++ یا بایت کد Java ) متصل می کند .C,C++ به فایل منبع وابسته خواهند بود و به صورت خودکار موقع لزوم بوجود می آیند .

  The Clean فایلهای واسطه را از فایلهای اصلی پاک می کند .فایلهای منبع برای پاک کردن غیر قابل لمس هستند .

 The Cross-Compile این دکمه اجازه می دهد تا متنهای ویرایشی Cross-compile شوند .توجه اینکه یک فایل ساخته شده خاص در کنترل گر اصلی برای شکل دادن این عملیات برای یک روبات e-puck مورد نیاز است. ساخت این فایل باید  Makefile.e-puck نامیده شود.

   The Cross compilation clean این منو اجازه می دهد تا فایلهای Cross-compile را پاک کنید .توجه اینکه یک فایل شناخته شده باید در کنترلگر اصلی برای ساخت این عملیات باشد . ساخت این فایل باید  Makefile.e-puck نامیده شود.

2. 5. 2 Project with Multiple Source Files

Webot پروژه ها را با منابع چندگانه پشتیبانی می کند .در C,C++ نام فایلهای منبع باید در فایل ساخته شده پروژه عنوان شده باشد .برای مثال اگر پروژه شما چند فایل منبع مانند .cpp  یا .cc دارد باید یکی از این خطها را به فایل ساخته شده پروژهتان اضافه نمایید :

CPP_SOURCES = my_first_file.cpp my_second_file.cpp my_last_file.cpp

...

CC_SOURCES = my_first_file.cc my_second_file.cc my_last_file.cc

در java  این کار لازم نیست زیرا java به صورت خودکار فایل متعلق به پروژه را پیدا می کند . ضمنا ویرایشگر اشکال زدایی را پشتیبانی کند .در حقیقت برای اشکالزدایی C,C++ کنترل گر از jdb امکان استفاده را دارد .لطفا به بخش 5 برای تفهیم این موضوع مراجعه کنید .

3. 5. 2 Not using Webots Source Code Editor

اگر شما از ویرایشگر شخصی استفاده می کنید به یک ترمینال برای کامپایل کد منبع خود نیاز دارید .در اینصورت شما به تعریف محیط وسیع Webots-Home و ساخت آن برای نصب مستقیم Webot نیاز دارید .فرمان  Make مورد استفاده Webots-Home برای جایگاه کتابخانه های Webot  و فایلهای سرپرست قرار می گیرد .

قراردادن یک محیط وسیع وابسته به platform  و shell شما می باشد .در حقیقت چند مثال هستند که این مثالها شرح می دهند webot بصورت بنیادین در لینوکس نصب شده است ، این را تایپ کنید :

$ export WEBOTS_HOME=/usr/local/webots

or add this line to your _/.bash profile file. On Mac OS X, type this:

$ export WEBOTS_HOME=/Applications/Webots

or add this line to your _/.profile file.

 

Webots-home یکباره تعریف شده است. شما باید توانایی ساخت یک ترمینال را داشته باشید با فرمان Make شبیه دکمه ویرایش که ساخت تمام یک پروژه را و یا یک فایل ساده باینری امکان پذیر می کند و غیره.

$ make

$ make clean

$ make my_robot.class

$ make my_robot.o

  1. 2 Motion Editor

1. 6. 2 مقدمه

ویرایشگر حرکتی برای طراحی حرکتهای رباتهای مفصلی مثل انسان نما و غیره استفاده می شود .حرکتها در فایلهایی با پسوند .motion می توانند ذخیر وشوند که بعدا در طی شبیه سازی توسط کنترل گر دوباره نمایش داده شوند .ویرایشگر حرکتی برای روباتهایی که چرخ دارند و در DifferentialWheele طراحی شده اند نمی تواند مورد استفاده قرار گیرد .ویرایشکر حرکتی مستقیما با موتور شبیه سازی ارتباط دارد که این باعث چند امتیاز می شود :اول -  طراحی فیزیکی حرکات انعطافی را به راحتی مرتبط می سازد .دوم –طراحی حرکتهایی که فاصله با محیط را دارند ،ممکن می کند بطور مثال اگر بخواهید دستی را که حرکت چنگی دارد طراحی کنید می توانید به راحتی با اضافه کردن یک شی مورد نیاز که باید چنگ زده شود ،در محیط فایل انجام دهید .

2. 6. 2 Using the Dialog

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

 

 

Figure 2.5: Webots Motion Editor

زمان با استفاده از این فرمت min:sec:millis نشان  داده می شود .

نامهای موقعیتها در طی تکرار نمایش حذف می شوند اما می توانند برای برچسب گذاری موقعیت ها مورد استفاده قرار  گیرند و ذخیره شده اند .در فایلهای حرکتی دکمه های Add,Remove,up and Down  برای اضافه کردن ،حذف کردن یا حرکت بالا و پایین مورد استفاده قرار می گیرند .

The Fixed Step بررسی جعبه های شناسایی شده را انجام می دهد و زمان فاصله بین موقعیتهایی که باید پایدار باشند .اگر این بررسی انجام شود ، ویرایشگر حرکتی زمان مرحله را بصورت خودکار مدیریت می کند .به عبارت دیگر باید به صورت دستی وارد شوند .عدد زیر شناسه ها در سمت راست میدان زمان مراحل را به میلی ثانیه نشان می دهد .اگر این اندازه عوض شود بصورت خودکار در هر موقعیتی منعکس خواهد شد.این را از برگرداندن تمام نمایش سرعت یک حرکت آسانتر است .

The Play این دکمه یک حرکت را نمایش می دهد . این درخواست به یک روبات در حال ساخت شبیه سازی است فرستاده می شود که تماس با عملکردWb-servo-set-position() است.توجه :ربات باید در حالت Run باشد به عبارت دیگر موتورها حرکتی نخواهند داشت .

The Loop جعبه های شناسایی شده را بررسی می کند اگر حرکت به صورت  خودکار تکرار شود و یا وقتی که به پایان برسد .

The Reserve بررسی حرکتهای قبلی و بعدی را در جعبه های تعریف شده انجام می دهد.

The Physics بررسی کلیدهای ارتباطی بین شبیه سازی فیزیکی یا جنبشی یک روبات را انجام می دهد .قاب راست از ویرایشگر حرکتی ویرایش واکنش بر روی موقعیتی جاری که انتخاب شده است و قاب چپ به اضافه کردن یا انتخاب یک ترکیب اجازه می دهد و یک موقعیت برای آن ترکیب برمی گزیند.توجه:علامت * شامل این است که ترکیب موقعیت برای position انتخابی تعریف نشده است.

شما چگونگی اطلاعات باز نمایش را با پسوند.motion  در بخش “Motion Function” که پیوست به راهنما است پیدا خواهید کرد.

7. 2 Citing Webot

اگر شما یک مقاله علمی نوشته اید و یا پروژه درگیرتان را در webot در یک صفحه Web شرح داده اید ما حقیقتا تشکر و قدردانی می کنیم اگر شما آن را به مرجع webot اضافه نمایید .برای مثال بوسیله وبسایت explicity mintionning cyberbotics و یا ضمیمه یک مجله که webot را شرح می دهد .برای آگاهی بیشتر در اینجا بعضی مقاله های تهیه شده را نقل کرده ایم شامل Bibtex که شما می توانید در مطالب خود استفاده نمایید.

1. 7. 2 Citing Cyberbotic’s Website

This project uses Webots2, a commercial mobile robot simulation software developed by Cyberbotics Ltd.

This project uses Webots (http://www.cyberbotics.com), a commercial mobile robot simulation software

developed by Cyberbotics Ltd.

 

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

@MISC{Webots,

AUTHOR = {Webots},

TITLE = {http://www.cyberbotics.com},

NOTE = {Commercial Mobile Robot Simulation Software},

EDITOR = {Cyberbotics Ltd.},

URL = {http://www.cyberbotics.com}

}

با یکبار کامپال شدن با LaTeX بایستی به فرم زیر نمایان شود :

References

[1] Webots. http://www.cyberbotics.com. Commercial Mobile Robot Simulation Software.

 

2. 7. 2 Citing a Refrence Jurnal paper about Webot

یک مقاله علمی که قبلا در مجله بین المللی از سیستم روباتها پیشرفته  چاپ  شده بود  اینجا در BibTex موجود است :

@ARTICLE{Webots04,

AUTHOR = {Michel, O.},

TITLE = {Webots: Professional Mobile Robot Simulation},

JOURNAL = {Journal of Advanced Robotics Systems},

YEAR = {2004},

VOLUME = {1},

NUMBER = {1},

PAGES = {39--42},

URL = {http://www.ars-journal.com/International-Journal-of-

Advanced-Robotic-Systems/Volume-1/39-42.pdf}

}

 

بخش 3

Tutorial: modeling and simulitionyour robot

در این بخش مثالهایی در مورد رباتها ،Worlds و کنترل گرها تهیه شده است .

اول: The world بسیار ساده است ،آن ساختمان پایه هر رباتی را معرفی می کند و چگونگی برنامه یک کنترل گر را توضیح می دهد .دوم :با مثال چگونگی استفاده از دوربین و شرح گگکونکی ساخت را بر روی این ربات ساده توضیح می دهد .سوم: :وارد کردن و اضافه نمودن فیزیک بر روی World  و ربات بنابراین شما می توانید بازی کردن با توپ را توسط یک ربات مشاهده نمایید.چهارم :مثلا می توانید ساخت یک ربات مجازی Pioneer 2 را از ActiveMedia Robotics یادبگیرید .

1. 3 My First world:mybot.wbt

به عنوان اولین راهنمایی ،ما قصد داریم یک ربات ساده را شبیه سازی کنیم که شامل یک استوانه ،دو چرخ و دو گیرنده مادون قرمز است (عکس 1. 4 ).این ربات توسط برنامه ساخته شده Braitenberg’s algoritm کنترل می شود (با محدودیت و مانع).آن در یک محیط ساده حرکت می کند که شامل بعضی موانع برای پرهیز از برخورد است و با یک دیوار محصور شده است.

 

1. 1. 3 Setup

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

برای انجام دادن عملیات ،یک پروژه را طراحی کنید که My Webots نامیده می شود و در محل شاخه شما که با همکاری و استفاده از Wizard  است قرار دارد (بوسیله انتخاب Wizwrd-New project Directory…menu Item ) . این عملیات یک شاخه را طراحی می کند که My webots  نامیده می شود و دارای دو زیر شاخه به نامهای Worlds و Controlers است .اولین شاخه شامل دنیا شبیه سازی شما خواهد بود که طراحی می کند و دومین شاخه شامل برنامه کنترلی شما برای شبیه سازی ربات است .برای شروع این بخش آموزشی تخصصی ،بسادگی  یک کپی از  The my bot.wbt که داخل شاخه webot   projects/sample/mybot/worlds که در محل شاخه worlds قرار دارد بگیرید . شما همچنین بایستی یک کپی از زیرشاخه mybot_simple که شامل تصویر mybot.png می باشد بگیرید .نهایتا ،کپی از شاخه mybot_simple که داخل شاخه mybot/controllers  که در محل شاخه controllers قرار دارد بگیرید.

 

 

2. 1. 3 Environment

این اولین دنیای شبیه سازی شده ،بسیار ساده تر از آن است که ممکن باشد.آن شامل یک کف ،چهار مانع و یک دیوار که دور آن است و از خروج ربات جلوگیری می کند .در طرح این دیوار از نود Extrusion استفاده شده است .مختصات دیوار در عکس 2. 4 نشان داده شده است.در ابتدا webots را فعال نمایید و شبیه سازی در حال اجرا را توسط دکمه Stop متوقف نمایید .به منوی File بروید ،در منوی New Word یک فضای جدید طراحی نمایید این را مستقیما با دکمه New می شود  در پنجره  سه بعدی انجام داد .با میان بر کیبورد که منوی فایل را دارد .سپس پنجره Scence Tree را باز نمایید آیتم Scence Tree در منوی Tools قرار دارد .همچنین می توان با دو بار کلیک در 3D world آنرا انجام داد .بیایید با تغییر نور صحنه آغاز کنیم .

  1. نود point Light را انتخاب نمایید ،روی + کلیک نمایید که در جلوی آن قرار دارد اکنون می توانید میدان مختلفی از نود PointLight را مشاهده نمایید.ambientIntensity را انتخاب نمایید . درجه 0.6 را وارد نمایید سپس intensity  را انتخاب کنید و عدد 0.3 را  وارد نمایید .در انتها location  را انتخاب کنید و این مقادیر را [0.75  0.5  0.5] وارد نمایید .
  2. نود Point Light را انتخاب نمایید ،با استفاده از دکمه بالای Scence Tree کپی و paste نمایید .این نود Pointlight  جدید را باز کنید و مقادیر [-0.5  0.5  0.35] در میدان Location قرار دهید .
  3. این عملیات را دوباره تکرار نمایید با [0.45  0.5  -0.5] در زمینه location از سومین نود pointlight و [-0.5  0.5  -0.35] در زمینه location که از چهارمین و آخرین نود pointlight است .
  4. صحنه اکنون روشن تر است.باز کنید preferences… از منوی Tools (لینوکس و ویندوز) و یا از منوی webots در مکینتاش ،دکمه Rendering  را انتخاب نمایید و عملکرد display lights  را بررسی نمایید .ok را برای خروج از preferences ونور صفحه را بررسی نمایید که اکنون قابل تشخیص در صحنه است . با دکمه های مختلف موس تلاش کنید ،شامل گرداندن موس به هر جهتی و موس را در صحنه بکشید برای راندن و جذب کردن موقعیتی که منبع نور است.اگر شما به توضیحات بیشتری درباره راندن سه بعدی در World نیاز دارید به منوی help  مراجعه کنید و how do I navigate in 3D? را انتخاب کنید .

 

 

 

 

مرحله دوم،بیایید با ما برای طراحی یک دیوار

  1. آخرین نود Solide را انتخاب کنید در پنجره  Scence Tree (که در کف است) و روی دکمه Insert after کلیک نمایید .
  2. یک نود Solide  انتخاب نمایید .
  3. این نود جدید بوجود آمده را باز کنید از علامت + و کلمه “Wall” در فایلی به نام خودش را تایپ کنید.
  4. میدان children را انتخاب نمایید و Insert after یک نود Shape
  5. این Shape   را باز کنید یک میدان appearance را انتخاب کنید و یک نود Appearance را بسازید با دکمه New Node .از همین تکنیک برای طراحی و ساخت یک نود Material استفاده کنید در میدان Material  از نود Appearance .میدان diffuse color را انتخاب کنید از نودmaterial یک رنگ برای شناسایی دیوار انتخاب نمایید.بیایید آن را قهوه ای روشن کنیم تغییر رنگ شی ساخته شما به روشن تر شدن ، بستگی دارد به میدان specular color .این میدان را انتخاب کنید از نود material  و یک رنگ روشن تر از دیوار است انتخاب کنید بیایید از قهوه ای روشن برای انعکاس و تاثیر نور استفاده کنید.
  6. متشابها همچنین برای شناسایی رنگ زمینه ممکن است برای انجام شما باید دو میدان color و آخرین نود Transform را بشناسید (میدان color  با زمینه همکاری می کند )که واقع شده اند در children/shape/geometric/colornode .در مثال ما آن رابه سیاه وسفید تغییر داده ایم .
  7. اکنون یک نود extrusion را در میدان geometric از shape بسازید.  
  8. محدوده فایل Convex را False قرار دهید .سپس زوایای داوار را در محدوده  crossSection  مرتب و منظم نمایید همنانطور که در شکل .2. 4 می بینید .شما مجبور به وارد کردن دوباره اولین نقطه 0 در آخرین وضعیت 10 خواهید شد تا آخرین صورت را قبل از خارج شدن کامل نمایید .
  9. در محدوده spine اندازه دیوار بین 0 و 0.1 بطول محور Y  بنویسید(بجای ارزش واقعی 0 و 1 ).
  10. همچنان که ما می خ.اهیم از عبور روباتمان از دیوار جلوگیری نمائیم ما باید به میدان boundingObject دیوار را بشناسانیم.Bounding Object برای چیزهای هندسی پیچیده نمی تواند مورد استفاده قرار بگیرد .آنها به جعبه ،سیلندر ، کره و چیزهای مسطح شده اولیه محدودند.از این رو ما باید چهار جعبه (بجای دیوار) برای شناساندن boundingObject از دیوار محاط کننده بسازیم . میدان bounding Object را از The Wall انتخاب کنیدو یک نود Group بسازید .که شامل چهار دیوار باشد . در این Group یک نود Transform از میدان Children  قرار دهید .یک shape به دو بخش children از transform اضافه نمایید .در نود Appearance یک material بسازیدو هر دوی diffusecolor و specularcolor را سفید قرار دهید .این برای این برای بعدا که روبات نیاز به حفاظت دارد مفید واقع می شود .زیرا بر اساس آن رنگ گیرنده تشخیص می دهد .اکنون یک Box از  یک geometry برای نود shape  بسازید .جعبه را با اندازه [0.01  ,  0.11] بسازید تا با اندازه دیوار هماهنگ باشد .یک میدان Translation  از نود Transform  به اندازه [0.495  0.05  0] قرار دهید که با موقعیت اولین دیوار ، مناسب باشد .
  11. اینک این Transform  را ببندید و به لیست children کپی و بچسبانید .بجای ساختن یک shape  جدید برای این موضوع ، از Shape  که خودتان ساخته اید برای اولین با در BoundingObject دوباره استفاده کنیدبرای انجام دادن سپس به نود transform  برگردید پیشین object .نود Children  را باز کنید روی نود Shape کلیک کنید اکنون در سمت راستتان از پنجره ای که می بینید نام DEF را وارد نمایید Wall-xhape  را مانند DEF بنویسید و به Children برگردید از دومین Boundingobject .ابتدا DELET  کنید Shape را که شامل آن و یک New NOD را بسازید کنار آن در حقیقت در قطر Add a nod ،شما توانایی استفاده از Shape  Wall را که شناسانده اید دارید . این حالت را انتخاب کنید و ok  کنید .میدان Translation را از New nod قرار دهید به [-0.495  0.5  0] ،سپس آن برابر با دیوار مخالف می شود .تکرار این عملیات با دو دیوار باقی مانده و قرار دادن انها در میدان Rotation به اندازه [0  1  0  1.75] پس آنها همانند میشوند در جهت وصل کردن دیوارها .شما همچنین از میدان Translation را بخوبی برای ویرایش دارید بنابرای آنها ترکیب می شوند با موقعیت دیوارهای بهم چسبیده.
  12. ویرایشگر 3 راببندید .فایل خود را با نام “my_mybot,wbt’ ذخیره نمایید .و نتایج را ببینید .

دیوار در ویرایشگر 3 و نتایج ویرایشگر World در عکس 4.3  قابل دیدن هستند .حالا بیایید موانعی طراحی و بسازیم :

  1. آخرین نود Solkid را انتخاب کنید و ردرصفحه Scence Tree (که در آن دیوار هست) روی دکمه insert after کلیک نمائید .
  2. یک نود Silide انتخاب نمائید .
  3. این نود جدید solid را بازکنید در علامت + و  “green box” را تایپ کنیدو این نام محدوده می باشد .
  4. استفاده کنید از همان تکنیک که برای دیوار انجام دادید و ابتدا یک shape  اضافه نمایید .سپس برای یک Appereance و  material  .برای رنگ بیایید از رنگ سبز روشن با سبز روشن نورانی استفاده کنیم .
  5. در میدان geometry  یک نود box می سازیم. در shape  قرار می دهیم سایز را [0.23  0.1  0.1] و نام DEF از این geometry به Box0 قرار خواهد گرفت .

6.از این شی یک boundingobject می سازیم .یک نود Shape بسازید و از DEF استفاده کنید برای Geometry .همچنین یک نود Appereance و یک نود Material ایجاد کنید و هر دوی را سفید نمایید .شبیه آنچه قبلا برای دیوار انجام دادیم .

  1. سرانجام میدان Translation را ایجاد نمایید  با  [0.05  0.05  -0.25] ،  ام آنها را در Rotation با پیش فرض خودشان قرار دهید .
  2. اکنون این مراحل را برای سه مانع یاقی مانده تکرار کنید.ابتدا نام یکی از  “blue box” با همان geometry (نامیده شده بود box0) به اندازه [0.1  0.1  0.1] بسازید .یک translation [0.2  0.5  0.27] و یک Rotition  [0  1  0  0.31]  سپس آن را yellow box  بنامید با همان Geometry (نامیده شده box3) از [0.15  0.1  0.08] یک Translation  [0.42  0.05  -0.1] و با پیش فرض Rotition .برای تمام object ها رنگشان را با نامشان یکی قرار دهید .

 

3. 1. 3  Robot

این زیر بخش توضیح می دهد چگونگی حالت روبات Mybot  رادر نود DiffrentionWheels که شامل چندین Chidren میباشد :یک نود Transform  برای بدن دو نود Solid برای چرخها ، دو نود Distancesensor برای گیرنده مادون قرمز و یک نود shape برای تعیین بافت برای “face” .

محورهای اصلی از سیستم مختصات و مختصات روبات و اجزا بنیادینش در شکل 4. 4 نشان داده شده است .

 

 

بای حالت بدن روبات :

  1. پنجره Scence Tree را باز کنید
  2. آخرین نود Solidvh  را انتخاب کنید .
  3. نود Diffrention را  insert after قرار دهید با نام Mybot .
  4. در زمینه children ابتدا یک نود Transform  ایجاد کنید که شامل یک Shape با یک سیلندر در زمینه children New ،Insertafter  یک نود Shape ،یک رنگ زمینه انتخاب کنید همچنانکه قبلا شرح دادیم .در زمینه Geometry  یک نود shape  بگذارید .اندازه ارتفاع سیلندر را  0.08 و شعاع قاعده را 0.45 بگیرید .نام DEF را قرار دهید در Gemetryبه BODY .بنابراین ما اکنون می خواهیم از آن بعدا استفاده کنیم . اکنون اندازه  Translation  را [0  0.45  0] در نود  Translation  قرار می دهیم .

حالت ساخت چرخ چپ روبات :

  1. یک نود  translation انتخاب نمایید .مرتبط با بدن روبات ، و یک نود Solid در ، Insert after  که می خواهد حالت چرخ چپ شود .Left wheel  را تایپ نمایید در فیلد Name حالا نود  Solid  آن را بشناسید و مانند چرخ چپ روبات ،خواهد چرخید  حول محور موتور.
  2. محور چرخشی چرخ ،چرخ X است .چرخ ساخته شده حول محور سیلندر می چرخد بوسیله pi/2 وتر اطراف محور Z .برای شرح آمادگی و چرخش چرخ، شما باید این دو حرکت را اشتباه نکنید .طبق اشاره قبلی شما باید یک نود Transform به Children  از نود Solid اضافه نمایید .
  3. بعد از افزودن نود Transfprm ،به  داخل یک shape  با یک سیلندر   در حوزه geometry خودش معرفی می کند .فراموش نکنید که طریقه پیدایش به همان شکلی که قبلا توضیح داده شده است انجام می گیرد .ابعاد سیلندر برای ارتفاع 0.01 و برای Radivs 0.25 باید باشد .Rotation  را [0 0 1 1.75] قرار دهید .توجه داشته باشید به علامت rotation ، اگر اشتباه باشد، چرخ در یک حالت اشتباه خواهد چرخید.
  4. در نود Solid ،Translation در اندازه [-0.045  0.025  0] برای موقعیت چرخ چپ قرار دهید و Rotation را برای چرخ حول محور X به اندازه [1 0 0 0] قرار دهید .
  5. یک نام DEF در Translation  خودتان :Wheel ; توجه کنید که چرخ انتقالی در بخش نود Solid شناسانده شود .سپس شما می توانید از WheelTransform  دوباره برای چرخ راست استفاده نمایید .

 

برا ی مدل دادن به چرخ راست یک روبات :

  1. نود Solid  چرخ چپ را انتخاب نمایید  و insertafter یک نود Solid دیگر را .لغت “Rightwheel” در طمینه نام تایپ کنید . Translation  را در اندازه [0.045  0.025  0] قرار دهید .و Rotation  را به اندازه [1 0 0 0] قرار دهید .
  2. در Chidren، Inserafter را به اندازه [1 0 0 0] قرار دهید .
  3. سه پنجره را ببندید و فایل را ذخیره نمایید .شما می توانید روبات  خود را در ویرایشگر World آزمایش نمایید آن را حرکت دهید و روی آن Zoom  نمایید .روبا و 2 چرخ آن در عکس 6. 4 نشان داده شده است .

 

دو گیرنده مادون قرمز برای دو سیلندر که در جلوی بدن روبات هستند ،شناخته شده هستند. قطر آنها 0.016 m و ارتفاع آنها 0.004 m است .شما باید  این گیرنده ها ار در جای مناسب قرار دهید  یعنی نقطه قرار دادن سنسور در سمت راست در جلوی روبات است.

  1. در children از نود Diffrential Wheels ،Insert after  یک نود Distance sensor
  2. نام “iro”  را تایپ نمایید .آن توسط برنامه کنترل گر استفاده می شود .
  3. یک شکل سیلندر به این گیرنده ضمیمه کنید .در Children لیست از نود Distance sensor ،Insert after  یک نود Transform . یک DFE نام به او بدهید :Insert after همچنین می توانید تکرار کنید این را برای دومین بار در Sensor IR .
  4. در Chidren از Transform  نود ،Insertafter  یک نود Shape  .شناسایی می کند یک نماد را و Insert  یک Children در زمینه geometry . برای ارتفاع 0.004 ,  و برای شعاع 0.005 را تایپ نمایید .
  5. در نود Distancesensor ،Transform به اندازه [ 0 0 1  1.75] تایپ دهید .
  6. در نود Distancesensor ،Translation برای موقعیت گیرنده و اشعه آن اندازه [-0.02  0.063  -0.042] .در قطر Prefernces در دکمه Redering جعبه Display Sensor Rangs را بررسی کنید .برای اینکه اشعه به سمت جلوی روبات نظارت داشته باشد باید در Rotation را در اندازه [0  1  0  2.07] قرار دهید .
  7. در نود Distance Sensor شما باید بعضی مقیاس های فاصله برای گیرنده ها را وارد نمایید . در زمینه LookupTable اشاره شده در عکس 7. 4 .

این اندازه ها عبارتند از :

  1. برای مدل و ساخت دومین گیرنده IR یک DistanceSensor  نود را انتخاب کنید .Insert aftervیک نود Distancesensor جدید .شبیه یک نام “irl” را تایپ کنید .Translation را در اندازه [0.02  0.063  -0.042] قرار دهید و Rotation   را در اندازه [0  1  0  1.07] . در Children  ، Insertafter          UseInfrared . در محدوده lookTable  همان اندازه های نشان داده در بالا را تایپ کنید .
  2. برای بهتر جلوگیری کردن از برخورد با موانع ما از اشعه Distancesensor استفاده می کنیم .برای انجام هر دو  نود  Distance Sensor را باز می کنیم به اندازه Number Of Ray را قرار می دهیم عدد 2 و محدوده aperture برای هر کدام عدد 1 قرار می دهیم .

توجه :یک Texture  فقط در IndexedFaceset می تواند نقشه ریزی شود ،باشد.

The TexCoordIndex و texCoord باید در محدوده وارد شوند .تصاویری که استفاده می شوند بایست با این بافت باشند .png و سایزشان بایستی

 (2n)* (2n) pixels (for example 8x8, 16x16, 32x32, 64x64, 128x128 or 256x256 pixels).

در ضمن PNG عکسها می باید در 24 یا 32 بایت در پیکسل استفاده شوند (کمتر از bpp یا بخشهای خاکستری قبول نمی شوند ).

از این محدودیتها که بر روی بافت عکسها در 3D گرافیکی شما اعمال نفوذ می شود .آگاه باشید  بعضی از بوردهای گرافیک 3D به بافت عکسی 256*256 محدود شده اند .یعنی از قدرت بیشتری برخوردارند و می توانند بافت عکسی 2048*2048 را قبول کنند.

چسباندن یک بافت بر روی صورت روبات :

1-                              آخرین نود Distancesensor را انتخاب کنید و Insertafter یک نود Shape

2-      یک نود Appearance در محدوده Appearance بسازید .یک نود Imagetexture در محدوده TEXTURE از این نود بسازید ،با جمله url:”Textures/mybot.png” .این مسیر URL برای ارتباط با شاخه Worlds است .

3-      در محدوده Geometry یک نود Indexed Face Set بسازید با یک نود Coordinate در محدوده Coord . مختصات نقاط را در محدوده point  تایپ کنید :

 

 

Figure 4.8: The DistanceSensor nodes of the MyBot robot

 

[ 0.015 0.038 -0.041,

0.015 0.023 -0.041,

0 0.023 -0.0455,

-0.015 0.023 -0.041,

-0.015 0.038 -0.041,

0 0.038 -0.0455 ]

و در محدوده CoordIndex ،Insertafter اندازه های بعدی را :  0,1,2,5,-1,5,2,3,4,-1 .عدد -1 برای نشان انتهای چهره است این برای هنگامی که چند چهره را شناسایی می شوند بهتر است در نود Indexfaceset .

4- در محدوده Texcoord یک نود Texurecoordinate را طراحی کنید .در محدوده point مختصات زیر را وارد کنید :

[ 0 0

0.5 0

1 0

1 1

0.5 1

0 1 ]

در  محدوده TexcoordIndex این اعداد را تایپ کنید :5,0,1,4,-1,4,1,2,3,-1 .

این روش استاندارد VRML97 برای توضیح چگونگی بافت یک شی برای شکل گیری است .

5- در مثال ما ،باید تعریفی از اندازه creaseAngle  از IndexFaceSet داشته باشیم. این محدوده ها روش ساختن تغییر چهره از بین چهره های مختلف را که باید انجام شوند ،از IndexFaceSet تعریف کرده اند .در مثال ما قرار خواهیم داد اندازه 0.9  را ، بنابراین روش ساخت تغییر چهره از بین دو چهره مسطح است .

 

 

 

برای پایان با نود DiffrentialWheels ،شما باید یک مقدار بیشتر محدوده ها را پر کنید :

  1. در محدوده کنترلر mybot-simple” “ را انتخاب کنید، وقتی که شما دکمه انتخاب فایل را فشار دهید لیست کنترلگر popup ظاهر می شود.آن تصمیم می گیرد که کدام برنامه کنترلی ربات را کنترل نماید.
  2. محدوده BoundingObject می تواند شامل یک نود Transform با یک cylinder باشد ،هنگامی که یک Cylinder  متصل می شود به چیزی برای بررسی برخورد برای این روبات این اتصال تقریبا کافی است.یک نود Transform  بسازید در محدوده BoundingObject با قرار دادن اندازه های [0  0.0415  0] در Transform ،استفاده دوباره از نود BODY که قبلا تعریف شده است و اضافه کردن آن به Children از Transform .
  3. در محدوده axleLeng ،درازای محور بین دو چرخ را وارد کنید :0.09 در عکس 4. 4 نشان داده شده است .
  4. در محدوده WheelRadius ،شعاع چرخ را وارد کنید :0.025
  5. اندازه سایر محدوده ها و اتمام روبات در دنیای خودش در عکس 10. 4 نشان داده شده است .

 

 

 

فایل mybot.wbt در توزیع webot در شاخه worlds شامل شده است .

 

4. 1. 3  Principles of  collision  detection

موتور ردیابی برخورد ،توانایی ردیابی برخورد بین هر نودSolid را دارد بوسیله نود Solid در خودش.و این شامل ,DifferentialWheels Robot,Servo و همه نودهای مشتق شده در آن واقع شده می شود .هدف ردیابی برخورد ،جلوگیری از هر نفوذکردن بین دو شی متصل شده است.این دست یافتنی است بوسیله تولید نیروی برخورد که solid های شرکت کننده را فشار خواهد داد .موتور ردیابی برخورد بخش داخل بین BoundingObjects در این نودهای Solid برآورد می کند .شی متصل شده در محدوده BoundingObject در این نودها شناسایی می شود.یک شی متصل شده از یک شکل هندسی یا یک گروه شکلهای هندشس که در Solid تعریف شده اند می توانند ساخته شوند .اگرBoundingObject  ،NULL باشد پس هیچ ردیابی برخورد در نود شرکت کننده شکل نخواهد گرفت و بنابراین از عبور آن میان سایر Solid  ها جلوگیری نخواهد شد .یک نود Solid ممکن است در لیست خودش شامل سایر نودهای Solid از زمینه Children باشد .هر کدام آنها یک شی متصل شده خودش را در خودشان دارند .بنابراین ممکن است تعریف کامل سلسله مراتب نودهای Solid که می توانند در ساخت یک ربات مفصلی مورد استفاده قرار بگیرند .

 

5. 1. 3  A Simple controller

این اولین کنترل گر بسیار ساده است ،ترجیحا به طور اختصاصی mybot-simple نامیده می شود.برنامه کنترلگر به سادگی تعداد گیرنده ها را می خواند و دو موتور سرعتی قرار می دهند مثل یک راه که mybot موانع را آشکار می کند.

منابع کد زیر برای کنترل گر mybot-simple است :

#include <webots/robot.h>

#include <webots/differential_wheels.h>

#include <webots/distance_sensor.h>

#define SPEED 60

#define TIME_STEP 64

int main()

{

wb_robot_init(); /* necessary to initialize webots stuff */

/* Get and enable the distance sensors. */

WbDeviceTag ir0 = wb_robot_get_device("ir0");

WbDeviceTag ir1 = wb_robot_get_device("ir1");

wb_distance_sensor_enable(ir0, TIME_STEP);

wb_distance_sensor_enable(ir1, TIME_STEP);

while(wb_robot_step(TIME_STEP)!=-1) {

/* Get distance sensor values */

double ir0_value = wb_distance_sensor_get_value(ir0);

double ir1_value = wb_distance_sensor_get_value(ir1);

/* Compute the motor speeds */

double left_speed, right_speed;

if (ir1_value > 500) {

/*

* If both distance sensors are detecting something, this means that

* we are facing a wall. In this case we need to move backwards.

*/

if (ir0_value > 500) {

left_speed = -SPEED;

right_speed = -SPEED / 2;

} else {

/*

* We turn proportionnaly to the sensors value because the

* closer we are from the wall, the more we need to turn.

*/

left_speed = -ir1_value / 10;

right_speed = (ir0_value / 10) + 5;

}

} else if (ir0_value > 500) {

left_speed = (ir1_value / 10) + 5;

right_speed = -ir0_value / 10;

} else {

/*

* If nothing has been detected we can move forward at maximal speed.

*/

left_speed = SPEED;

right_speed = SPEED;

}

/* Set the motor speeds. */

wb_differential_wheels_set_speed(left_speed, right_speed);

}

return 0;

}

 

این کنترل گر در زیر شاخه mybot-simple  از زیر شاخه Controllers (در شاخهProject/samples/mybot از webot ) قرار دارد .

 

2. 3 Adding a camera to Mybot Robot

این بخش می تواند مانند یک تمرین به بررسی ها رسیدگی نماید اگر شما قوانین افزودن مشتقات یک روبات را می دانستید .اگرشما می خواهید از این قسمت به سرعت بگذرید به دلیل اینکه احساس می کنید توانایی کامل و کافی را با webot دارید و به دوربینها علاقه ندارید ،ممکن است مستقیما به بخش بعدی بروید که نشان می دهند Physic و لازم نیست که mybot مجهز به یک دوربین باشد .دوربین می تواند یک 2D رنگی با Image 80 پیکسل در پهنا و 60 پیکسل در طول و یک زمینه از نمای 60 درجه (1.047 رادیان ) باشد.ما میتوانیم شکل یک دوربین را به شکل یک سیلندر در بالای ربات mybot در قسمت جلو بسازیم.مختصات سیلندر برای ارتفاع 0.03 و برای شعاع قاعده 0.01 است.

 

برای شکل دادن به این دوربین سعی کنید.فایل mybot-camera.wbt در توزیع webots در شاخه worlds قرار دارد در این مورد شما نیاز به کمک دارید .یک برنامه کنترلی برای این روبات به نام mybot-camera وجود ارد .همچنین در پروژه های mybot  در شاخه Controllers ضمیمه شده است .ابن برنامه دوربین برای گرفتن عکس نیست تا موقعی که فقط یک برنامه نمایشی است ،اما شما می توانید به سادگی برای گرفتن عکس آن را توسعه دهید .

برای مثال یک روبات می تواند یاد بگیرد چیزهای مختلف را از صحنه تشخیص دهد و به سمتشان حرکت کند و یا از آنها دور شود و به آنچه که شی دسته بندی شده است مثل “Good” یا “Bad” وابسته است .

 

3. 3  Adding Physics to the Mybot simulation

1. 3. 3  Overview

مدلی که ما برای روبات mybot تعریف نموده ایم شامل هیچ ساخت فیزیکی نمی باشد . همانگونه که ما هیچ جرمی را نمی توانیم معین کنیم .در عوض یک مدل حرکتی ساده می تواند در هر حال برای روباتهای متحرک شبیه سازی شده آزمایشی در جایی که اصطکاک وسکون می تواند مورد چشم پوشی قرار گیرد ،استفاده شود .برای مثال برای شبیه سازی نور پیش زمینه روباتها مثل روبات khepera یا Hemisson  مناسب است .به اضافه شبیه سازیها بدون فیزیک سریع تر انجام می شوند.در حقیقت قبلا از آنکه همه چیز بیشتر پیچیده شود ،شما به معرفی کردن فیزیک به مدلتان نیاز مندید .برای مثال ،اگر ربات شما سنگین است ،نمی توانید از سکون موثر برآن در مسیر غفلت کنید .اگر شما بخواهید یک شی قابل حرکت را اضافه نمایید شبیه جعبه یا توپ،فیزیک شبیه سازی لازم است .در انتها اگر شما می خواهید یک ربات مفصلی قابل توجه و متفاوت از مدلهای گوناگون چرخ دار طراحی کنید شبیه یک ربات omni-directional ،یک ربات رونده ،یک ربات شناگر پس شما به بسیاری پارامترهای فیزیکی برای قرار دادن ،نیاز دارید .این بخش یک فیزیک شبیه سازی شده ساده از mybot world معرفی می کند به ربات تا برای با توپ بازی کردن اجازه یابد.برای شبیه سازیهای فیزیکی پیچیده که می تواند در webot اجرا شود ،وارد کردن برای مثال الگوهای حرکتی ،با تکیه بر Robot ونود های Servo  اجازه می دهد به شما برای ساخت رباتهای چرخ دار و رونده .سایر امکانات برای پریدن و شنا کردن روباتها مدلهای هیدرودینامیک لازم هستند .این ساخته ها در این آموزش نشان داده نمی شوند .در عوض توصیه می شود که شما مثالهای موجود در مورد رباتهای رونده و پرنده که ضمیمه اند در توزیع گر webot و ترجیحا در مقدمات روبات و نودهای Servo را مطالعه نمایید .از تماس با ما غفلت نکنید اگر در شبیه سازی خود نیاز به پشتیبانی برای تکمیل فیزیک پیچیده دارید .

2. 3. 3 Preparing the Floor for a Physics Simulation 

نود The Floor را از اولین نود Transform که در Scene Tree درست بعد نودهای Point light قرار دارد، انتخاب کنید .با استفاده از دکمه Transform  آن Transform را به داخل یک نود Solid بگردانید .اکنون بری The Floor شناخت یک bounding Object امکان پذیر است .یک نود Transform شامل یک Box به مانند یک شی متصل شده  بسازید .محدوده  The Size برای The Box به مختصات [1  0.02  1] و محدوده Translation از Transform را به اندازه [0.05  -0.01  0.05] قرار دهید .ان شی متصل که شما  تعریف نموده اید از افتادن ربات بر اثر جاذبه بر روی کف جلوگیری خواهد نمود .

3. 3. 3 Adding physcs to the mybot robot

همیشه یک شی متصل شده، تعریف شده در ربات mybot همواره وجود دارد .همچنانکه آن حرکت خواهد داشت ، همچنین به پارامترهای فیزیکی تعریف شده در محدوده physics خودش در یک نود physics، نیاز خواهد داشت .یک نود بسازید و توصیه می شود از حجم بجای چگالی استفاده بشود ،Density را -1 و mass را 0.5 قرار دهید .چگالی در کیلوگرم بر متر مکعب بیان می شود ،و جرم به کیلوگرم بیان می شود .وقتی چگالی تعریف شده است از جرم صرف نطر می شود .چرخهای ربات به بعضی از مشخصه های فیزیکی برای شناسایی اصطکاک با زمین،نیاز دارند .اما اول آنها به یک شی متصل نیاز دارند .نود Wheel را که تعریف شده است همانند Boundingobject  برای هر چرخ Solid قرار دهید .سپس یک نود physics به اولین چرخ اضافه کنید ،و WHEEL-PHYSICS را مثل یک  DEF نام وارد کنید .در انتها The Density  را -1  و mass را 0.05 ،cuolombFriction را 1  ،و forceDependantSlip را 0 قرار دهید .  همین عملیات WHEEL-PHYSICS را برای چرخ دوم استفاده کنید .

ما اکنون انجام داده ایم !The world را در my_mybot_physics.wbt ذخیره نمایید ،آن را با استفاده از دکمه Revert  دومرتبه Load نمایید و شبیه سازی را اجرا کنید .شما مشاهده خواهید نمود که این ربات نمی تواند خیلی پی در پی حرکت کند(بخصوص اگر شما مشاهده کنید به آنچه که دوربین های رباتیک می بینند ).

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

4. 3. 3  Adding aBall to the mybot world

حالا بیاییم یک توپ به رباتمان تقدیم کنیم .بجای ساختن توپ بیاییم آن را از یک دنیای دیگر ،جایی که هر چیزی همیشه وجود دارد ،قرض کنیم .دنیای Supervisor.wbt را باز کنید .روی یک توپ فوتبال دوبار کلیک نمایید .با این کار پنجرهTree  Sceneباز میشود و یک توپ انتخاب می شود .با استفاده از دکمه Copy به سادگی از یک کپی بگیرید ،سپس دوباره  دنیای mybot_physics.wbt خودتان را باز کنید .پنجره  Scene Tree را باز کنید ،آخرین شی SceneTree را انتخاب کنید و روی Paste after  کلیک نمایید .آیا میتوانید توپ فوتبال را ببینید ؟. How do I Move and Object? از منوی Help بخوانید و توپ را در جلوی روبات قرار دهید .این world ذخیره کنید و شبیه سازی را اجرا کنید .روبات mybot باید قادر باشد ضربه بزند به توپ آن را بغلتاند و به دیوار بزند .

 

  1. 3 Modellinf an existing robot :pioner2.wbt 

ما  قصد داریم یک مدل روبات تجاری از Active Media Robatic را شبیه سازی نماییم :pioneer2 DX ،همچنانکه نشان داده شده در وبسات Active media :Http://www.activerobots.com.اول شما باید محیط ربات را بسازید.سپس شما می توانید ربات Pioneer2 را با 16 Sonar و شبیه سازی آن با یک کنترل گر بسازید.برای The world و جزئیات کنترل گرها لطفا به این آدرسworldpioneer2.wbt و فایلهای controllers/pioneer2 مراجعه نمایید .آنها در شاخه projects/robots/pioneer2 از webot  واقع شده اند.

  1. 4. 3 Environment

محیط تشکیل شده است از :

. یک صفحه شطرنجی :یک نود Solid از یک نود ElevationGrid

. یک دیوار اطراف صفحه شطرنجی : نود Solid با یک نود Extrusion

 

 

2. 4. 3  Robot Whit 16 Sonars

روبات (یک نود DifferntialWheels ) از 6 بخش اصلی ساخته شده است .

1. the body: an Extrusion node.

2. a top plate: an Extrusion node.

3. two main wheels: two Cylinder nodes.

4. a rear wheel: a Cylinder node.

5. front and rear sensor supports: two Extrusion nodes.

6. sixteen sonars: sixteen DistanceSensor nodes.

 

 

ویرایش گر 3 را باز کنید و نود DifferntialWheels را اضافه کنید .Insert  در محدوده Children :

  1. برای بدن :یک نودShape  با یک GeometryExtrusion.عکس 14. 4  برای مختصات این Extrusion  است .
  2. برای TOP Plat  : یک نودShape  با یک GeometryExtrusion.عکس 15. 4  برای مختصات این Extrusion  است .
  3. برای دو چرخ اصلی: دو نود Solid  .هر نود Solid از لیست Children شامل یک نود  Transform  است ، که هر کدامشان خودشان یک نود Shape با یک GeometryCylinder د ارند .هر نود Solid یک نام دارد :”right Wheel” و “left Wheel” .عکس 16. 4 برای اندازه چرخهاست .
  4. برای چرخهای عقب : یک نود Transform شامل نود Shape با یک محدوده Geometry سیلندها را قرار می دهد ،در عکس 17 .4 نشان داده شده .
  5. برای پشتیبانی Sonar : دو نود Shape  با یک Geometry Extrusion  .عکس 18. 4 را برای مختصات Extrusion مشاهده کنید .
  6. برای   16 Sonar  : 16 نود DistanceSensor .هر نود شامل یک نود Transform .هر نود Transform  دارای یک نود Shaoe  که شامل GeometryCylinder  است .عکس 19. 4 و متن زیر آن برای توضیحات بیشتر است .

 

ساخت Sonars  :

قانون آن مانند روبات mybot است .اینSonars سیلندرهایی با ارتفاع 0.002 و شعاع قاعده شان 0.0175 هستند .آنها 16  Sonars هستند ،8 تا در جلو ی روبات و 8 تا در عقب روبات هستند (عکس 19 .4 ).زاویه بین Sonars و موقعیت اصلی از DEFSONARTransform نشان داده شده اند در عکی 20 .4 .

 

 

یک DEFSONARTransform شامل یک نود Cylinder در یک نود Shape با چرخش حول محور Z .این DEFSONARTransform باید بچرخد و نصب شود تا سنسورهای ds0,ds1,.. بیایند.

هر Sonar از یک نود DistanSensor ساخته  شده است در هر کدام میشود چرخش به اطراف محور Y  ،یک Translation  ، یک USEsonartransform  و نامهایی که برای کنترل گرها( ds-,ds1,… ) استفاده می شوند ،پیدا کرد.

برای پایان ساخت روبات pioneer2 ،شما باید محدوده ها باقی مانده از نود  DiffrentialWheels را پر کنید .در عکس 21. 4 نشان داده شده اسنت .

 

 

 

3. 4. 3 Controller

کنترل گر ربات pioneer2 کامل است .او کنترلگر Bratinberg را برای آشکار شدن موانع هنگامی که سنسورها استفاده می شود ،اجرا می کند.یک فعال ساز ماتریکس توسط محاسبات آزمایش و خطا ،فرمانهای موتور برای سنجش سنسورها فعال می کند.بنابراین ،نظر به اینکه ساختار pioneer2 مدور نیست ،تعدادی از فوت و فن استفاده می شود ،همانند عقب راه رفتن ربات در مرحله چرخش ایمن ،موقعی که با مانعی برخورد می کند .مثلا کدهای اصلی برای این کنترل گرها توسط برنامه نویسان ماهر  انجام شده اند.

 

 

 

بخش 4

Programming Controlers and Plugins

1. 4Overview

در webot یک Controllers یک برنامه است ،معمولا با C,C++,Java یا Python نوشته شده است، که برای کنترل یک روبات استفاده می شود .یک کنترل گر Supervisor یک کنترل گر تخصصی است که می تواند در بعضی از مناظر شبیه سازی از یک روبات و ضمائم آن مورد استفاده قرار گیرد .بعلاوه برنامه های کنترلی در عملکرد webot می تواند با اتصلات برنامه های تخصص یافته ،گسترش یابد .شما اطلاعات بیشتری در نود Suprvisor و اتصال برنامه در راهنمای ضمیمه webot  میتوانید پیدا نمایید.

 

2. 4 Setting Up a Development Environment

1. 2. 4 Under Windows

استفاده از ویرایش گر متنی Built-in

استفاده از ویرایش گر built-in برای توسعه کد کنترل گر در پنجره های مسطح توصیه می شود .ویرایش گر متنی built-in دکمه های Make… و Make clean… را آماده می کند که باعث گردآوری پیشرفته می شود  .در پنجره های مسطح ، webot  محیط MinGW را برای گردآوری کردن دروناً طلب می کند .MinGw یک gcc سازگار است که منبع محیط توسعه یافته برای پنجره ها باز میکند.

 

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

 

این ممکن است در حقیقت کمتر به استفاده از ویرایش گر منبع کد خودتان به جای ویراشگر Built-in  در  webot  ،توصیه شده است .اگر شما این بخش را برگزینید،شما به نصب MSYS برای فعالیت کنترل گرها نیاز خواهید داشت .MSYS یک Unix شبیه ترمینالی که می تواند فرمانهای MinGW را احضار کند .وقتی کنترل گر ها با MSYS ساخته شده اند لازم است که محیط متغیر Webots-Home تعریف شده باشد و به شاخه نصب Webot توجه کند . این تنوع بوسیله فایلهای سازنده پروژه در شکل دادن به کامپایلر از موقعیت کتابخانه ها و فایلهای هدایتی webot ،استفاده شده است.شما همچنین به افزودن شاخه bin از MinGW به PATH محیط متغیر خود نیاز خواهید داشت.MinGW در زیر شاخه mingw از توزیع گر webot  واقع شده است .وقتی درست قرار می گیرد محیط متغیر باید شبیه این باشد :

WEBOTS_HOME = C:\Program Files\Webots

PATH = C:\program Files\Webots\mingw\bin;C:\...

یکباره MSYS نصب شده است و محیط متغیرها تعریف شده اند .شما باید کنترل گرها را بوسیله احضار Make (mingw32-make ) در ترمینال MSYS فعال کنید همینگونه برای پاک کردن یک شاخه  با احضار Make Clean (یا mingw32-make clean  )ممکن است .

 

استفاده از Visual C++

Visual C++ یک مجموعه محیط توسعه یافته برای C,C++ که توسط Microsoft تهیه شده است .آن شامل یک کامپایلر C,C++ و ویریشگر منبع کد است .مثالهای پروژه C++ در شاخه های کنترل گر Controllers/braiten,controllers/khepera و Controllers/tcpip تهیه گردیده اند .نوعا ،یک پروژه visual C++ برای webot   باید کاملا تعریف شده باشد  شامل Path به Webot شاخه Include و باید فایل اجرایی با فایل Controller.lib تشکیل شده در شاخه webotlib متصل گردد .مواظب باشید تهیه یک فابل اجرایی در شاخه کنترل گر باید شناخته شده باشد و نه در یک Debug یا زیر شاخه Release همچنان که اساساً به وسیله Virtual C++ تهیه شده است.برای مثال برنامه Khepera.exe باید توسط شاخه Khepera از شاخه Controller شما ساخته شده باشد لطفا توجه نمایید که نتیجه دادن فایلهای قابل اجرا ازVirtual C++ نمی تواند اجرا شود  آنها باید توسط Webot  فعال شوند و در فایل world ضمیمه شوند .اینجا عملکرد کامل قرار دادن پروژه کنترل گر webot  تخت Virtual C++ 6.0 قرار دارد :

1-                              فعال کردن Virtual C++ و رفتن به منوی Fole->New… .

2-  ساخت یک پروژه “Win32 Consol Application” (یا “Win32 Application” اگر شما به یک Consol برای اشکال زدایی نیاز ندارید ).Project Name  را قرار دهید :به Controllers و قرار دهید Location  :به محل شاخه Controllers webot خودتان و ساخت یک پروژه خالی را انتخاب کنید (نوعا Win32 application “Hello World” ).

3-  اگر شما یک پروژه خالی را برگزیدید ، به منوی Files->New… بروید و یک C++ Source file جدید که نامیده می شود my_controller.c در شاخه my_controller  خودتان بسازید .

4-  به Projects->Settings بروید و دکمه C/C++ را انتخاب کنید .گروه Preprocessor را انتخاب کنید و C:\Programfiles\webots\includ را تایپ نمایید و در Aditional Include Directories وارد نمایید .سپس به دکمه Link  بروید در  General و در Output file name:Release/my_controller.exe با my_controllers.exe  جایگزین کنید.سپس Controller.lib  را در لیست Object/library/modules جایگزین نمایید .در نهایت در گروه Input ،تایپ کنید C:\ProgramFiles\ Webots\lib as an Additional library path.

5-  اکنون منبع کد کنترل گر خود را در فایل my-controller.c تایپ نمایید .(می توانید از کنترل گر mybot-simple.c که تهیه شده در شاخه نمونه کنترل گرهای webot ،C:\programfiles\webots\projects\sample\mybot\ شبیه مثال استفاده کنید .

6-  اکنون در خواست شما از منوی Build->Buildmy-controller.exe ساخته شده است (یا کلید F7 ).آن باید یک فایل my-controller.exe در شاخه my-controller شما را بسازد.درحقبقت این فایل باینری نمی تواند مستقیما نمی تواند از Virtual C++ فعال شود . با برگزیدن آن فایل  آن در World  webot فعال شده است .اگر شما یک درخواستی از گزینه “Hello World” ساخته اید شاید جایگزینی عملیات thet Get message() با PeecMessage را بخواهید .به عبارت دیگر برای تماس عملیات wb_robot_step() وقتی که هیچ پیغامهای GUI نیامده اند .

7-  اگر شما می خواهید برای اشکال زدایی برنامه کنترل گرتان از اشکال زدای Virtul C++ استفاده کنید ،شما باید آن را در مد “Debug” کامپایل کنید و خط بعدی  در برنامه کنترلی شما در هارد به شکل Breakpoint  قرار می گیرد :

__asm int 3 ;

در زمان اجرا ،این به شما اجازه ورود به اشکال زدای Virtul C++ را می دهد و در این نکته یک فرصت جا دادن Breakpoint های بیشتر و مقادبر متغیرات شیار و ... را خواهید داشت.

 

  1. 2. 4  Under Linux

در لینوکس شما به نصب ابزار پیشرفته نیاز ندارید زیرا آنها اغلب در توزیع گر webot  از پیش پاکت شده اند .webot به حضور کامپایلر gcc C/C++ و the make کاربردی نیاز دارد.اگر این ابزارها در سیستم شما نصب نشده اند ،لطفا به اسناد لینوکس تان برای نصب آنها مراجعه نمایید . ما به شما استفاده از ویرایشگر منبع کر Built-in webot  را برای کامپایل و ویرایش  منبع کد  C,C++ و Java  و Python  خودتان پیشنهاد می دهیم .

 

3. 2. 4  Under Mac OS X

در سیستم عامل مکینتاش شما فقط به نصب ابزار پیشرفته تهیه شده توسط سیستم عامل مکینتاش نیاز خواهید داشت ، به عبارت دیگر برنامه کنترل گرتان در C,C++,Java,Python خواهد بود .ابزار پیشرفته اپل برای سیستم عامل مکینتاش شامل کامپایلر C,C++,gcc فرمان Make  ،Java compiler و فرمان Python می شود . ما به شما استفاده از ویرایشگر منبع کر Built-in webot  را برای کامپایل و ویرایش  منبع کد  C,C++ و Java  و Python  خودتان پیشنهاد می دهیم .

 

 

3. 4  Setting up a New Controller

شما باید از منوی Wizard  استفاده کنید و New robot Controller… را انتخاب کنید این تمام فایلهای مورد نیاز در شاخه controllers  پروژه های شما را درست خواهد ساخت .توجه آنکه کاربرهای ویندوز می توانند از پروژه های Virtual C++ مایکروسافت به جای ساخت فایل استفاده کنند .شما با فشردن دکمه  the Make  در پنجره ویرایش گر متنی می توانید برنامه هایتان را تحت ویندوز کامپایل نمایید .اگر شما از Make استفاده می کنید و مایلید برنامه کنترل گرتان با کنسول DOS باز شود با نمایش پیغام های Printf ،خط زیر به فایلهای ساخته خود اضافه کنید :

Dos_Console=1

 

4. 4  Webot Execution Scheme

1. 4. 4  From the controller’s point of view

هر برنامه کنترلی ربات با همان شیوه ساخته شده است یک تماس ابتدایی به عملیات wb-robot-init() قبل از شروع کردن یک روبات لازم است .سپس شما توانا خواهید بود اسباب های روبات را (عکس 5. 5 )تشخیص هویت دهید و آنها را فعال سازید . راه متعارف دیگر این است یک گره نامحدود ایجاد نمایید  که در تکرار هر تابع wb-robot-step() ،تماس برقرار می کند .این مبحث تابع اعداد میلی ثانیه در مراحل درست را تعیین می کند.نوعا یک تکرار از گره اصلی تشکیل شده است از : باز یافتن گیرنده اطلاعات و مرحله بندی آن  ،موتورهای حرکتی ،محاسبه کردن،فرستادن فرمانهای راه اندازی و تماس با تابع wb-robot-step() بوجود می آیند .

توجه : وقتی که کنترل گر با واقعه خارجی تسخیر شده باشد تابع wb-robot-step() ،-1 می شود آن می تواند برای آزمایش این درجه برای داشتن زمان ذخیره اطلاعات

 مفید باشد .

 

2. 4. 4  From the point of view of webots

Startup

برای هر ربات ، webot در شاخه Project’s controllers ،  برای یک فایل کنترلی مطابق نام شناخته شده برای همان کنترل گر ربات جستجو می کند.برای مثال اگر کنترل گر شناخته شده Simple نامیده شود،Webot اول سعی می کند یک فایل را که نامیده شده Simple (در لینوکس یا مکینتاش) یا Simple.exe(در ویندوز) واقع شده در زیر شاخه Sample از شاخه Project’s controllers را اجرا کند.اگر مثلا یک فایل موجود نبود، سپس آن برای یک فایل به نام Simple.class در همان شاخه جستجو خواهد کرد و آن را مثل یک کنترل گر Java روانه می کند .اگر Simple.class موجود نبود ،پس آن برای یک فایل به نام Simple.jar در همان شاخه جستجو خواهد کرد ،و simple.class را از آن روانه می کند.اگر simple.class و فایل .jar موجود نبود ،پس سعی خواهد کرد یک فایل به نام simple.py اجرا کند .در انتها اگر simple.py موجود نبود روانه سازی کنترل گرهای شناخته شده webot اشتباه بوده است و باید از کنترل گر void به جای آن استفاده شود .در یک قالب از یک کنترل گر Java ،همه فایلهای jar در شاخه کنترل گر تعریف شده واقع شده اند و به javaclasspath اضافه خواهد شد .تنها استثنا برای این قانون ایناست که اگر یک فایلjar همان نام را داشته باشد مثل فایل Class در همان شاخه ،پس این فایل Jar حذف  خواهد شد این بدان معناست که اگر شما دو فایل simple.jar و فایل simple.class در همان شاخه داشته باشید ،پس فایل simple.jar به  classpath اضافه  نخواهد شد و آن فایل jar دیگر در شاخه ممکن است به classpath اضافه شود .

 

Simulition Loop

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

 

3. 4. 4  Synchronous versus Asynchronous controllers

هر نوع رباتی (Diffrential Wheels.Robot or Supervisor ) شاید هم زمان یا ناهمزمان باشد .webots برای درخواست های هم زمانی رباتها قبل از پیش رفت کردن زمان شبیه سازی آن منتظر می ماند ؛آن برای نا هم زمانی دیگران منتظر نمی ماند .از این رو یک ربات نا هم زمان شاید تاخیر داشته باشد(اگر کنترلر گران باشد ،یا روی یک کامپیوتر متحرک با سرعت شبکه ارتباطی پایین اجرا شده باشد ).در این صورت فرمان فعال کننده دیرتر از انتظار ،رخ می دهد .اگر کنترلر خیلی تاخیر نماید، همچنین شاید سنسور سنجش دیرتر از انتظار اتفاق بیفتد.در حقیقت این تاخیر می تواند به وسیله کنترل گر روبات با خواندن بازگشت مقدار تابع wb-robot-step تصدیق شود (به ضمیمه راهنما برای جزئیات بیشتر مراجعه کنید) .از این راه یک کنترل گر می تواند خودش را با رفتار سازگار کند و جبران کند.کنترل گرهای هم زمان برای کنترلهای قوی توصیه می شوند ،در حالیکه کنترل های نا هم زمان برای اجرا کردن مسابقات رباتی  جایی که کامپیوترهای ابتکاری محدود شده اند ،یا برای شبیه سازی های شبکه شده درگیرِ، چند روبات توزیع شده بر روی یک شبکه کامپیوتری با یک تاخیر غیر قابل پیش بینی (همانند اینترنت) توصیه می شوند.

5. 4  Reading Sensor Information

 

برای بدست آوردن اطلاعات سنسور ،سنسور می بایست:

1- identified :این توسط تابع wb-robot-get-device ()  آماده شده است،که برای یک شیوه مبتنی بر محدوده Name خودش جستجو می کند ،و کاربرد آن را بر می گرداند .اینها فقط یکبار لازم است، قبل از حلقه اصلی انجام شوند.ربات خودش یک شیوه دارد،اما لازم نیست شناخته شده باشد ،زیرا این یک شیوه بنیادین در آن هست (آن همیشه موجود است و آنجا فقط یک شیوه در هر ربات وجود دارد).

2- enabled :این توسط تابع اختصاصی wb-*-enable() آماده می شود ، مخصوص هر سنسور برای مثال (نگاه کنید wb-distance-sensor-enable() ) آن یکبار می تواند قبل از حلقه اصلی انجام شود یا چند وقت داخل حلقه اگر شما به فعال کردن یا غیر فعال کردن سنسورها از زمانی به زمانی برای ذخیره محاسبات زمانی تصمیم دارید.

3- run :این توسط تابع wb-robot-step()در داخل حلقه اصلی آماده می شود .

4- read :در انتها شما می توانید مقدار سنسور استفاده شده یک سنسور تخصصی تابع Call را داخل حلقه اصلی بخوانید شبیه wb-distance-sensor-get-value().

 

6. 4 Controlling Actuators

فعال کننده ها راحت تر از سنسورها برای تنظیم هستند  ،آنها نیازی برای آماده شدن ندارند ،برای کنترل فعال کننده،آن می بایست:

1. indentified : این توسط تابع wb-robot-get-device ()  آماده شده است، که برای یک شیوه مبتنی بر محدوده Name خودش جستجو می کند ،و کاربرد آن را بر می گرداند .اینها فقط یکبار نیاز است که قبل از حلقه اصلی انجام شوند،چنانکه با سنسورها،تنها استثنا در این قانون مربوط به شیوه اساسی یک روبات می شود .

2. set  :این با تابع اختصاصی wb-*-set-*() مخصوص هر فعال کننده آماده میشود (یک مثال از یک تابع wb-diffrential-wheels-set-speed() هست).آن معمولا در حلقه اصلی با محاسبات مختلف مقادیر در هر مرحله ارتباط برقرار می کند.

3. run :آن انجام می شود بعد از تابع Run() بر می گرداند( در طی robot-step()).

 

7. 4  Going further with the Supervisor Controller

سوپروایز می تواند شبیه یک ربات برتر ببیند .آن می تواند هر کاری را که یک روبات می تواند انجام دهد ، و بیشتر انجام دهد .این خصیصه مخصوصا برای فرستاندن پیام ها و دریافت پیام ها از رباتها مفید است ،با استفاده کردن از نودهای Receiver  و Emitter .بعلاوه آن می تواند خیلی بیشتر چیزهای جالب انجام دهد .یک سوپروایزر صفحه Scene Tree را در طی شبیه سازی می تواند تنظیم کند .بنابراین آن می تواند برای مثال بچرخاند هر شی را در صحنه حرکت بدهد یا ضمیمه کردن viewpoint ،تعویض رنگ اشیا ، و روشن کردن نور و خاموش کردن آن.پس آن می تواند همچنین برنامه را بخش نماید،یک سوپروایزر می تواند این اطلاعات را در یک فایل بنویسد.در انتها یک سوپروایزر می تواند همچنین یک عکس فوری از صحنه جاری بگیرد و آن را در یک jpeg یا عکس PNG ذخیره نماید یا فیلم بسازد.

 

8. 5 How to Debug a Controller?

1. 8. 4 controller processes

در محیط webot ، درخواست webot و هر ربات کنترل گر C/C++ در هدایت متمایز مراحل سیستم، اجرا شده هستند .برای مثال وقتی که soccer.wbt اجرا می شود ،آنجا یک مجموعه 8 مرحله ای در حافظه می باشد،یکی برای webot ،6 تا برای 6 ربات بازیکن و یکی برای سوپروایزر.متشابه کنترل گر Java ، در ماشین مجازی java  (JVM ) اجرا شده هستند که آنها همچنین از مراحل webot جدا شده اند.در حقیقت اشکال زدایی از کنترل گرهای java در اینجا مورد بحث نیست .

وقتی که مراحل یک کنترل گر غیر مجاز از دستورالعمل شکل میگیرد ،آن توسط سیستم هدایت کننده پایان داده می شود تا زمانی که مراحل webot وسایر مراحل کنترل گرها فعال باقی بمانند .اگر چه webot  هنوز فعال است ،شبیه سازی غبر فعال می شود زیرا منتظر  اطلاعات از کنترل گر پایان یافته است،بنابراین اگر شما بیایید در میان یک شبیه سازی جایی که  شبیه سازی شما غیر قابل انتظار متوقف شده است اماGUI webot هنوز مسئول است ،این معمولا بر از بین رفتن یک کنترل گر  دلالت دارد.آن می تواند به سادگی تثبیت شود با لیست کردن مراحل فعال در این لحظه :برای مثال در لینوکس تایپ کنید :

$ ps -e

...

12751 pts/1 00:00:16 webots

13294 pts/1 00:00:00 soccer_player

13296 pts/1 00:00:00 soccer_player

13297 pts/1 00:00:00 soccer_player

13298 pts/1 00:00:00 soccer_player

13299 pts/1 00:00:00 soccer_player

13300 pts/1 00:00:00 soccer_player

13301 pts/1 00:00:00 soccer_supervis <defunct>

...

 

در سیستم عامل مکینتاش بهتر است از ps-x استفاده شود و در ویندوز برای این از Task manager استفاده شود .اگر یکی از رباتهای کنترل گر در لیست فراموش شده است (یا ظاهر شده به شکل <defunct> ) این اثبات می کند که آن هنوز آسیب دارد و ترجیحا شبیه سازی متوقف شده است.در این مثال Soccer-supervisor آسیب دارد . توجه این آسیب از یک کنترل گر اغلب حتما دلیل خطا در یک کد کنترل گر بوده است ،زیرا یک خطا در webots دلیل بر آسیب webot خواهد بود .مطمئنا اشکال زدای GNU (gdb ) می تواند معمولا به پایان دادن این آسیب کمک کند .مثال بعدی نشان می دهد که یک مشکل با soccer-supervisor کنترلگر وجود دارد و شامل چگونگی مراحل اشکال زدایی می باشد.

 

  1. 8. 5  Using the GNU debbuger with a controller

اولین مرحله recompile کد کنترل گر با یک پرچم –g است ، اضافه کردن اطلاعات اشکال زدایی به فایل اجرایی.این می تواند دست یابی شود با اضافه کردن این خط به makefile کنترل گر :CFLAGS=-g

سپس شما باید کنترل گر  را recompile نمایید همچنین با استفاده از منوی makeclean و Make از ویرایشگر متنی webot یا مستقیما در یک ترمینال :

$ make clean

$ make

توجه  اینکه پرچم –g باید اکنون در خط فعالیت ظاهر شود .یکباره شما کنترلگرتان را  recompile دارید.دکمه های Start و Revert   را بزنید .این  شبیه سازی را متوقف می کند  و نسخه های جدیدا فعال شده را از کنترل گرها دوباره فعال می کند.اکنون با استفاده کردن از ps-e(linux) یا ps-x (mac) یا استفاده کردن از the Task manager (windows )مرحله ID(PID)  از مرحله soocer-supervisor را پیدا کنید .PID  در ستون Left-most است از خروجی از ps همچنانکه در بالا نشان داده شد .سپس یک ترمینال باز کنید و اشکال زدا را شروع کنید با تایپ :

$ gdb

...

(gdb) attach PID

...

(gdb) cont

Continuing.

 

جایی که PID منتظر است برای PID از مرحلهsoccer-supervisor.فرمان Attach ضمیمه می کند اشکال زدا را به مرحله soccer-supervisor و در داخل آن اجرا می شود . سپس فرمان cont اشکال زدا را به  پایه اجرایی از مرحله راهنمایی می کند(در ویندوز شما به نصب فایل جداکننده gdb.exe  و استفاده از کنسول MSYS برای دست یافتن به این نیاز خواهید داشت).

سپس دکمه Run را بزنید برای شروع شبیه سازی و اجازه بدهید اجرای آنرا تا وقتیکه کنترل گرها دوباره آسیب ببینند.کنترل گر اجرایی در تمام مدت (Ctrl-C ) به عبارت دیگر ساختار متغیرات ،نصب نقاط آسیب دیده و غیره را قرار بدهد .وقتی که آسیب جدی است ،gdb یک پیام تشخیصی شبیه این چاپ می کند :

Program received signal SIGSEGV, Segmentation fault.

[Switching to Thread -1208314144 (LWP 16448)]

0x00cd6dd5 in _IO_str_overflow_internal () from /lib/tls/libc.so.6

این بر مکان مشکل دلالت می کند .شما می توانید با استفاده از فرمان Wheer از gdb ارتباط پشته را با دقت بیشتری آزمایش کنید .برای مثال تایپ کنید :

(gdb) where

#0 0x00cd6dd5 in _IO_str_overflow_internal() from /lib/tls/libc.so.6

#1 0x00cd596f in _IO_default_xsputn_internal() from /lib/tls/libc.so.6

#2 0x00cca9c1 in _IO_padn_internal() from /lib/tls/libc.so.6

#3 0x00cb17ea in vfprintf() from /lib/tls/libc.so.6

#4 0x00ccb9cb in vsprintf() from /lib/tls/libc.so.6

#5 0x00cb8d4b in sprintf() from /lib/tls/libc.so.6

#6 0x08048972 in run(ms=0) at soccer_supervisor.c:106

#7 0x08048b0a in main() at soccer_supervisor.c:140

 

با آزمایش دقیق تماس پشته، شما میتوانید مکان منبع خطا را مشخص نمایید .در این مثال ما تابعsprintf() را به دست خواهیم آورد که OK است،زیرا آن در سیستم کتابخانه است.ترجیحا این طور به نظر می رسد که مشکل علتی است که بوسیله استفاده غیر مجاز از تابع printf() در تابع() Run بوجود آمده است .خط 106  فایل منبع soccer-supervisor.c باید آزمایشی بسته شود .تا زمانی که کنترلر هنوز در حافظه است شما می توانید جستار ارزشی بعضی از متغیرات را به عبارت دیگر بفهمید چه اتفاقی افتاده است.شما می توانید از Frame و فرمان print استفاده نمایید :

(gdb) frame 6

#6 0x08048953 in run (ms=0) at soccer_supervisor.c:106

106 sprintf(time_string, "%02d:%02d", (int) (time / 60),

(int) time % 60);

(gdb) print time_string

$1 = 0x0

فرمان frame اشکال زدا را برای تشخیص دادن ساختار پشته راهنمایی می کند، و فرمان print مقدار جاری یک بیان راچاپ می کند .در این مثال ساده ما به طور شفاف می بینیم که دلیل مشکل بوسیله یک NULL(0x0) time-string که در موردش بحث شده بود در تابع sprintf() ،بوجود می آید .گامهای بعدی :حل مشکل،recompile کنترل گر و برگشتن به شبیه سازی برای یک تلاش دیگر.یکباره به صورت صحیح کار می کند شما می توانید پرچم –g را از makefile حذف کنید.

 

9. 4  Transfer to your Own Robot

در شبیه سازی ربات متحرک اغلب انتقال نتایج بر روی یک ربات واقعی روی می دهد . webot با  این توانایی انتقال در خورش طراحی شده است .شبیه سازی تا آنجاییکه ممکن است واقعی باشد و برنامه ریزی طوری باشد که بتواند به یک ربات واقعی و موجود انتقال یابد یا مواجه شود .webot همیشه شامل سیستم انتقال برای یک تعداد از رباتهای موجود شامل e-puck,khepera,hemisson,LEGO mindstorms,Aibo و غیره است .این بخش چگونگی توسعه انتقال سیستم شما بر روی ربات متحرک شما را توضیح می دهد .تا موقعی که شبیه سازی فقط یک حدودی از فیزیک یک ربات واقعی است ، موقع توسعه دادن یک مکانیزم انتقال برای یک ربات واقعی بعضی تنظیمات همیشه لازمند.

 

1. 9 . 4  Remot control

Overview

اغلب آسانترین راه برای انتقال برنامه کنترلی شما به یک ربات واقعی ای است که سیستم remot control  را توسعه دهید .در این مورد برنامه کنترلی شما بر روی کامپیوتر قرار می گیرد ،اما فرمان ها و خواندن اطلاعات سنسور از ربات شبیه سازی شده جابجا می شود ،آن فرمانها را به سنسور خواندن اطلاعات  از یک ربات واقعی می فرستد.توسعه دادن یک سیستم remot control میتواند از یک راه خیلی آسان بدست بیاید بوسیله نوشتن ابزارهایتان از تابعAPI  در webot که همانند یک کتابخانه کوچک است .برای  مثال شما شاید بخواهید داشته باشید یک ابزار  از تابع wb-diffrential-wheels-set-speed() که یک فرمان خاص را به  ربات واقعی با چرخهای سرعتی به شکل یک مبحث بفرستد.این فرمان می تواند فرستاده بشود به ربات واقعی از طریق پورت سریال از PC ،یا هر-robot PC دیگر که شما با آن مواجه هستید.شما شاید نیاز داشته باشید به ساختن بعضی واحد تبدیل ها،همچنین ربات شما شاید نتواند همان واحدهای سنجشی را که یکی دیگر از webot  استفاده کرده است را ، استفاده نماید .همان برای خواندن مقادیر سنسور از ربات واقعی بکار می رود.

 

Developing a custum library

وقتی که شما یک تعداد ابزار توابع C طراحی شده داشته باشید از توابع webot  ،شما به خروجی و ورودی غیر مستقیم برای ربات واقعی نیاز دارید.شما سپس توانا خواهید بود برای استفاده مجدد از کنترل گر webot خود بدون تعویض یک خط کد ،و حتی بدون recompiling آن :بجای پیوستن فایل شی با کتابخانه پویا Controllers Webot ،شما می توانید آن را با تابع C  خودتان پیوست خواهید داد.برای آسودگی شما ،شما شاید بخواهید بسازید یک کتابخانه پویا یا ثابت شامل آنچه که ربات شما با آن مواجه است.

 

Specail function

تابع wb-robot-live() باید اولین تابع صدازده شود آن کتابخانه اولیه کنترل گر را می سازد.

تابع wb-robot-step() باید مکرارا (نوعا در یک حلقه نامحدود ) صدا زده شود .آن درخواست می کند که شبیه ساز بسازد یک مرحله شبیه سازی از میلی ثانیه ها که شبیه سازی  بوسیله این مقدار از زمان پیشرفت کرده است.

تابع wb-robot-clean up() باید در انتهای برنامه صدا شود به عبارت دیگر برای ترک و پاک کردن کنترل گر.

 

Runnig your Real Robot

با یکبار پیوستن به کتابخانه شخصیتان ،کنترل گر شما می تواند یک درخواست را به تنهایی فعال کند و کنترل ربات واقعی شما را عهده دار شود.این مفید خواهد بود در کتابخانه شخصی شما یا در کنترل گر webot شما که بعضی نمایشات گرافیکی را با نشان دادن مقادیر سنسور ،فرمان های موتور یا یک دکمه توقف شامل شوند.همچنانکه یک سیستم remot control می تواند قرار گرفته باشد در C شبیه توضیحات اینجا ؛در حقیقت آن می تواند همچنین در Java با استفاده کردن از بعضی قوانین بوسیله جایگزینی Controller.jar فایلهای webot  بوسیله ربات مخصوص Controller.jar خودتان قرار بگیرد و استفاده کردن از این برای راندن ربات واقعی.

 

2. 9 .4  Cross-Compilation

Overview

توسعه دادن یک سیستم Cross-compilation به شما اجازه خواهد داد به recompile کنترل گر webot خودتان برای تمام کردن بازسازی ربات واقعی خودتان.از این رو ،منبع کد که شما نوشته بودید برای شبیه سازی webot خودش بر روی ربات واقعی اجرا خواهد شد.و اینجا احتیاجی نیست که یک ارتباط ثابت PC با روباتی که خود سیستم Remot control  را دارد،این فقط ممکن است اگر فعال کننده روی ربات شما بتواند مخصوصا در C,C++,Java ,python برنامه ریزی شده باشد  .این برای یک فعال کننده که برنامه ریزی شده فقط در assembler یا بقیه زبانهای تخصصی امکان ندارد.webot شامل منبع کدی همانند یک سیستم Cross-Compilation برای e-puck و ربات Hemisson می شود.نمونه ها در شاخه robot واقع گردیده اند.

 

Developing a custom library

شبیه سیستم remot control ،سیستم cross-compile تقدیم میکند که منبع کد کنترل گر webot شما، با استفاده از ابزارهای تخصصی cross-Compilation بر روی روبات خودتان recompiled شود .شما همچنین نیاز به بازنویسی Webot شامل فایلهای تعریف شده برای روبات خودتان خواهید داشت.این نمونه ساده ،شما فقط بازنویسی فایلهایی را که نیاز دارید شامل می شود،مانند مثال hemisson .در نمونه های پیچیده تر شما همچنین به نوشتن بعضی فایلهای منبع C که استفاده شده به شکل یک جابجا کننده برای Controller کتابخانه webot ،اما بر روی ربات واقعی اجرا شده هستند، نیاز خواهید داشت.شما سپس باید کنترل گر webot  خود را recompile کنید با سیستم Cross-compilation ربات خود و آن را با کتابخانه روبات خود پیوست دهید.نتیجه دادن فایل باید بر روی یک روبات واقعی برای موقعیت اجرا Upload شود.

 

Examples

Webot برای چندین ربات تبلیغاتی موجود پشتیبانی می کند Cross-complation.برای ربات e-puck ،این سیستم کاملا جمع آوری شده است درwebot GUI و به هیچ تغییری در کد نیازی نیست.برای ربات Hemisson این سیستم ساده است و مقدار کمی فایل را شامل می شود برای جابجایی فایلهای APIشامل شده در webot .برای khepera ،یک کتابخانه C  تعریف شده بعلاوه فایل های متشکل مخصوص استفاده می شود .برای ربات LEGOMINDSTORM ،یک کتابخانه Java استفاده می شود و کنترل گر های باینری و اجرایشان روی ربات واقعی با استفاده از Lejos ماشین مجازی Java نتیجه داده اند.

 

3. 9. 4  Interprated Language

در بعضی نمونه ها جایگزینی و ترجمه زبان سیستم شاید بهتر باشد.این مفید است اگر ربات واقعی شما همیشه از یک زبان ترجمه شده استفاده کند شبیهBasic  یا یک نمودار مبتنی کنترلی زبان.در این نمونه انتقال خیلی آسان است تا موقعی که شما مستقیما انتقال کدها را از برنامه خود می توانید، به ربات واقعی ترجمه خواهد شد .

مهمترین قسمت مشکل شاید توسعه یک زبان ترجمه گر باشد در C or Java استفاده شده به وسیله کنترل گر webot شما برای کنترل گر در ربات شبیه سازی شده .

همانند یک سیستم زبان ترجمه شده ی  توسعه یافته برای ربات Hemisson با سیستم Botstudio.

 

10. 4 Programmig webots Controllers with C++

1. 10. 5 Introduction to the C++ API

یک C++ API چیست؟

برای برنامه نویسی یک کنترل گر ربات C++ روش استاندارد استفاده ازC APL     webot می باشد مزیت آن است که تا آنجا که ممکن است نزدیک به منبع اصلی کد webot  باشید به عبارت دیگر خصیصه های  orinted-object از C++ قابل استفاده نیستند .چاره شرح داده شده در این جا افزودن یک لایه،C++ API ،که سازمان یافته شده اند C++ API در یک کلاس سلسله مراتبی.

 

How to run the Examples

شما مستقیما می تواند یکی از نمونه های C++ را فعال کنید .برای انجام دادن این، اجرا کنید webot world را که واقع شده است به صورت بنیادین  در زیر شاخه projects/pachages/cpp/worlds از شاخه webot شما .

 

How to use the C++ API

مراجعه به راهنمای ضمیمه (بخش 1و3 ) برای دانستن جزئیات بدست آمده کلاسها و توابع اصلی .

 

2. 10. 5  How to modify the C++ API

اگر شما به تعریف چیزی در C++ API نیاز دارید ،ابتدا یک نظر به منبع کد بیندازید و آن را recompile نمایید .چندین فایل بدست آمده اند .زیر شاخه projects/packages/cpp/src از شاخه webot شما منابع cpp را در بر دارد.زیر شاخه include/controllers/cpp/webots از شاخه webot شما سر فصل ها را در بر دارد.در انتها زیر شاخه projects/packages/cpp/makefile از شاخه webot شما برای فعال کردن API مورد استفاده قرار می گیرد (با اجرا کردن make در فرمان سریع مورد علاقه شما) .کتابخانه مشترک (Cpp Controller ) بوسیله فعال کردنی که واقع شده است در زیر شاخه lib  از شاخه  webot  شما تولید می شود.

 

 

11. 4  Programing Webots Controllers with Java

1. 11. 4  Introduction to Java

How to run the Examples

Java یکباره به صورت صحیح نصب شده است ،شما می توانید یکی از نمونه های Java  را که قرار گرفته است اساسا در زیر شاخه projects/packages/java/worlds از شاخه webot  شما فعال کنید.

 

How to use the Java API

The Java API نظیر یک C++ است .در واقع درجه سرپرستی ،درجه نام ها و نامهای تابع دقیقا مطابق هستند .برای استفاده از java API ،شما  فقط نیاز دارید به ورود بعضی درجات بسته ها که نامیده می شوند com.syberbotics.webots .controller مراجعه به ضمیمه راهنما برای بدست آوردن اطلاعات بیشتر توصیه می شود .

 

2. 11. 4 Java Installation

به عبارت دیگر توسعه و اجرای کنترل گرهای java برای webots، این لازم است که کیت  Java پیشرفته (JDK ) ،نسخه 5. 1 یا قبلی نصب شده بر روی سیستمتان داشته باشید.

 

Windows and linux Instruction

در ویندوز یا لینوکی کیت پیشرفته java می تواند به صورت رایگان از sun Developer Network دانلود شود.مطمئن شوید جدیدترین انتشار و ویرایش استاندارد در JDK را انتخاب نموده اید.سپس نصب دستورالعمل تهیه شده در بسته را دنبال کنید.پس از نصب شما نیاز خواهید داشت به قرار دادن یا عوض کردن Path محیط متغیرتان بدین جهت  webots توانایی دسترسی به فرمانهای java(javaw) و Javac دارد .فرمان Java هست در ماشین مجازی java (JVM )،آن برای اجرا کردن کنترل گرهای java در webots استفاده می شود.فرمان Javac هست کامپایلر Java، از آن برای فعال کردن کنترل گرهای Java  در ویرایشگر متنی webot استفاده می شود. 

در لینوکس شما می توانید قرار دهید PATH را بوسیله اضافه کردن این خط به خودتان ~/.bashrc یا معادل فایل .

export PATH=/usr/lib/jvm/java-XXXXXX/bin:$PATH

جایی که java-xxxxxx باید مرتبط باشد با نام واقعی از بسته JDK نصب شده .

در ویندوز PATH متغیر باید قرار گیرد با استفاده از Environment Variables :در ویندوز xp این پنجره باز می شود شبیه :انتخاب satart،setting ،controlpanel ،ودوبار کلیک بر روی System .انتخاب دکمه Advanced و سپس Environment Variables .در ویندوز ویستا پنجره می تواند شبیه این باز شود:انتخاب start،computer system propetice،Advanced system setting،و دکمه Advancedو سپس  Environment Variables .در پنجره ،در بخش User Vareiables for… ،جستجو کنید یک نام متغیر PATH.اضافه کنید راه bin از SDK نصب شده به انتهای راست از PATH متغیرات.

اگر PATH متغیر وجود ندارد شما باید آن را بسازید.یک نوع ارزش برای PATH این است :

C:\program files\java\jdk-xxxxxx\bin

جایی که jdkxxxxxx هست قرار می گیرد برای نام واقعی بسته jdk نصب شده .سپس شما احتیاج دارید به راه اندازی دوباره webot چون که اعتبار آن تغییر نموده است .

توجه اینکه PATH می تواند همچنین به صورت عمومی برای همه کاربرها قرار بگیرد.در لینوکس می تواند قابل دسترسی باشد یا اضافه کردن آن در /etc/profile file .در ویندوز این می تواند قابل دسترسی باد با افزودن ان به path  متغیر در بخشStstem Variables  از پنجره Environment Variables .

 

Mac OS X Instruction

سیستم عامل مکینتاش با  پیش نصب و پیش ترتیب JAVA اجرای زمانی محیط (JRE ) و کیت توسعه یافته Java می آید. بنابراین شما به دانلود یا نصب آن نیاز ندارید .درحقیقت شما به نصب ابزار پیشرفته Xcode نیاز دارید که با فرمان make  قابل دسترسی خواهد بود .شما همچنین به Xcode پیشرفته نیاز دارید اگر بخواهید کنترل گرهای CیاC++ را فعال کنید.ابزار Xcode می توانید در سی دی نصب سیستم عامل مکینتاش شما پیدا شود در هر صورت انها می توانند به صورت رایگان از Apple Developer Connection دانلود شوند.

 

Troubleshooting the Java installation

اگر یک کنترل گر Java خطا کند دراجرا یا فعال سازی ،آن Java  را برسی کنید به ترتیب فرمانهای Javac قابل دسترسی هستند.شما می توانید به سادگی اینها را به وسیله باز کردن یک ترمینال (لینوکس و مکینتاش ) یا یک فرمان سریع (ویندوز) و تایپ نمودن Java  یا Javac  باز بینی نمایید .اگر این فرمانها قابل دسترسی از تزمینال یا فرمان سریع نیستند انها قابل دسترسی به وسیله webot نخواهند بود در اینصورت JDK نصب شده را بررسی کنید  و PATH متغیر خودتان را که تعریف شده است ،به صورت توضیح داده شده دربالا درست کنید .

5.11.3  Java , C++ and SWIG

مقدمه

جاوای API به صورت خودکار اغلب بر روی C++ با استفاده SWIG تولید میشود.

 

Modification of the Java API

اگر شما نیاز به تغییر چیزی دارید در java API ،شما ابتدا نیاز به بدست آوردن SWIG (قابل دسترسی در SWIG official web site ) دارید .در زیر شاخه projects/packages/java/src از شاخه webot webot  خود controller.i با SWIG با آنچه که طرح های سرپرستی C++ با JAVA APL   مواجه است.فایل makefile بر تولید بسته java (با مدیریت make در فرمان سریع مورد نیاز شما )مورد استفاده قرار می گیرد .این فایلهای controller.jar و *javacontroller.* از شاخه lib را تولید می کند توجه اینکه این API نزدیکتر به یک C++ ارتباط دارد.در بیشتر موارد شما ابتدا به تعریف فعالیت C++ APL قبل از فعال کردن دیگری نیاز دارید.

 

12. 5 Programming Webots Controller with Python

1. 12. 5 Introduction to python

Python  چیست ؟

Pythonیک بخش بزرگ از زبان برنامه نویسی است این زبان در سال 1991 توسط Python software function توسعه یافته است .python  یک مترجم است بنابراین فاز فعال سازی وجود ندارد آن همچنین یک تابع Object-Orinted و زبان برنامه نویسی ضروری است شما می توانید اطلاعات بیشتری درباره آن از official website بدست آورید.python  بیشتر و بیشتر در روباتیک مورد استفاده قرار می گیرد برای نمونه آنجا چندین کتابخانه مانند pyro موجود هستند .pyro توزیع سریع با مشکلات رباتهای استاندارد را مانند یک کامپیوتر ، شبکه های وابسته یا الگوریتم پیشرفته تکاملی اجازه می دهد .به عبارت دیگر python به خوبی برای خط مشی ساخت رفتارهای ساده و سریع رباتی webot بدون نیاز توزیع کردن اجرای مراتب پایین  جزئیات ، مناسب است .

 

How to run the example

Python یکباره به صورت صحیح نصب شده است شما میتوانید یکی از نمونه های python  را مستقیما فعال کنید برای انجام آن اجرای webot world واقع شده اساسا در زیر شاخه projects/packages/python/worlds از شاخه webot  خودتان .

 

How to use the python API ,the controller module

Python API قابل مقایسه با C++ است درجه سرپرستی ،نامهای درجه و نامهای تابع همه یکسان هستند .اختلاف ها فقط در مدل اولیه بعضی توابع از بعضی چیزهای اضافی جدید است مراجعه به راهنمای ضمیمه برای دانستن بیشتر این جزئیات توصیه می شود .و برای استفاده از python API شما فقط به ورود محدوده ای که نامیده می شود controller توسط خط بعدی نیاز دارید:

From controller import *

 

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

 

2. 12. 4 Installation of python

How to check your python’s version

Webot از python در نسخه 2.5 خودش پشتیبانی می کند بنابراین نسخه های قدیمی می توانند مشکلاتی بوجود بیاورند. شما می توانید نسخه python را به وسیله اجرا کردن python- -version در فرمان سریع مورد نیاز خودتان بررسی کنید. این فرمان باید در نسخه python  نمایش داده شود اگر python نصب نیست (یا درست نصب نشده است)این فرمان باید نمایان شود که python پیدا نشده است .

 

For macintash or for User

اغلب توزیع گر لینوکس python را همیشه نصب شده دارد همان نمونه برای مکینتاش را در حقیقت ما توصیه می کنیم .شما نسخه python خود را بررسی نمایید اگر آن نسخه زیر 2.5 است آن را به روز برسانید .اطلاعات بیشتر در سایت python officail website است .

 

For windows uses

برای کاربرهای ویندوز شما نیاز به نصب python بر روی کامپیوتر خود دارید با بدست آوردن و اجرا کردن نصب کننده قانونی گرافیکال جایی که می تواند بدست بیاید در python official website است .بعد از نصب ،شما به قرار دادن یا تعویض PATH  محیط متغیر خود نیاز خواهید داشت.این در webot  با  فرمان python قابل دسترسی است.Path متغیر می باید قرار بگیرد با استفاده کردن از پنجره  Environment Variables :در ویندوز این پنجره می تواند باز شود شبیه این :انتخاب Start,settings,control panel  و  دابل کلیک system .انتخاب دکمه Advanced و سپس Environment Variable .

در ویندوز ویستا پنجره ای  می تواند باز شود شبیه : انتخاب Start,computer,System properties,Advanced System Setting  دکمه Advanced و سپس Environment Variables .

در پنجره ای در بخش user variables for … جستجو برای یک path نامیده شده متغیر ،اضافه کردن Path از انتهای راست Python  از Path متغیرات.اگر Path متغیرات موجود نبود شما باید آن را بسازید یک رتبه تایپی برای Path هست :

C:\Pythonxx\bin جای دو x باید نسخه python  را بنویسید .سپس شما نیاز به شروع دوباره webot  بخاطر تغییر اعتبار آن دارید .

 

3. 12. 5 Python,C++ and SWIG   

مقدمه

Python اغلب به صورت خودکار بر روی C++ API با استفاده از SWIG تولید می شود .

 

Modification of Python API

اگر شما نیاز به تغییر چیزی در python API دارید ، شما ابتدا باید SWIG را بدست بیاورید (قابل دسترسی در SWIG official Website ).در زیر شاخه projects/packages/Python/src از شاخه webot خود فایل controller .i که مطابقت دارد، SWIG در آنجا با نقشه های سرپرستی C++ در محدوده controller Python است .فایل Makefile برای تولید کردن واحد کنترل گر استفاده می شود (با اجرا کردن Make در فرمان سریع شما).و این فایلها را از شاخه lib/python (محدوده controller ) تولید می کند .توجه همچنین این API ارتباط نزدیکی با یک C++ دارد در اغلب نمونه هاد شما به تعریف و فعال کردن API C++ قبل از فعال سازی این یکی را دارید .

 

13. 4. Programming Webots Controllers with URBI

1. 13. 4 Introduction to URBI

URBI چیست ؟

URBI هست the universal Robotic Body Interface توسط GOSTAI توسعه یافته است .شما میتوانید اطلاعات بیشتر درباره URBI در community page پیدا کنید .URBI یک زبان متوسط و ساده هنوز قدرتمند که به صورت متن درآمده و به شکل مناسب در ربات واقعی قابل استفاده است .URBI طراحی شده است برای کار مثل یک client/server بند بند، ربات یک سرور می شود و کنترل گر فعال یک client میشود.در حقیقت ساختن یک client و قرار دادن آن در همان ماشین مثل یک سرور ممکن است ، قرار دادن URBI مستقیما بر بخش سرور بدون client مبتنی شده است.URBI طراحی نشده است برای نوشتن پیچیده یا محاسبات ارزشمند کنترل گرها ،اما برای تهیه مکانیزم کنترل زمان مفید است . بنابراین به کاربر برای آسان نوشتن ساده حلقه های فعال ،مستقیما در URBI  توسط جدا کردن و دور کردن درجه پایین جزئیات نرم افزاری اجازه می دهد.

 

URBI for Webots

URBI برای webot همان URBI  سرور برای webot می باشد .این بدان معنا است که هر در خواست ،اجرا مثل یک کنترل گر webot که واکنش می دهد مثل یک سرور URBI می باشد.جایی که برنامه ربات شبیه سازی شما را واقعا کنترل می کند .هم چنین یک متن و یک client  طراحی شده URBI دارید .اتصال از شبیه سازی به ربات واقعی با استفاده کردن از نام URBI Client یا برنامه آسان است.همچنانکه webot 6.11 ،URBI برای webot  است فقط برای ویندوز ،لینوکس اجرا شده است . نسخه های webot ،نسخه های مکینتاش از URBI برای webot جاری هست تحت توسعه و می خواهد در نسخه های آینده webot  جمع آوری شود.

در این آموزش ما می خواهیم فقط بر متن URBI متمرکز شویم .لطفا برای مطالب عمومی URBI مراجعه کنید تا آشنایی با URBI Clients بدست بیاورید .این عجیب است که نصیحت کنیم شما مطالعه نمایید زبان URBI مقدماتی و آموزشی دسترس در اینجا :http://www.gostai.com/doc.php

استفاده بنیادین از URBI در Webot متکی است به :

 

  • The URBI برای کنترل گر webot  نامیده می شود URBI-webots و در زیر شاخه projects/packages/urbi/controllers/urbi از webot ذخیره می شود.هر URBI برای webots World به این شکل اجرایی ،استفاده می شود.
  • An XML فایل پیکربندی که شامل اطاعات اختصاصی ربات شما است ؛در خصوص آن اینکه بخشهای قابل استفاده و پارامترها و نام های آنها  را اعلام می کند.
  • یک ارتباط تلفن شبکه client با port 54000 از ماشین اجرا کننده URBI برای webot ، فرمان های ساده از راهنما را می فرستد.شما می توانید همچنین برنامه ریزی ربات تخصصیتان را شبیه یک Aibo با فرمان تلفنی قابل دسترسی از here، استفاده نمایید.

 

Installation of URBI for Webots

نصب URBI برای webot روی کامپیوتر خودتان،شما باید برنامه ها جاری نصب شده را برای سیستم عامل خود شرح دهید .نصب یک گرافیکال برای ویندوز قابل دسترسی است .بسته های Debian و تاربالها قابل دسترسی برای لینوکس هستند. نصب کامل مراحل در URBI for webots manual  توضیح داده شده است.

 

2. 13. 5 Running the Examples

به سادگی نمونه Kiki-urbi.wbt در شاخه worlds باز می شود،و دکمه Play را کلیک نمایید.ربات Kiki باید در میان world نمایان شود ،دیوارهای محافظ:بسادگی متن URBI فهمیده و تعریف می شود و آن در واقع اجرا شده  است !

یکی دیگر از نمونه های پیچیده بیشتر در Aibo-ers7-urbi-dance.wbt تهیه شده است :این متن ،توسط Diego de Pardo نوشته شده است ،و در مسابقه رقص Sony بر روی ربات واقعی Aibo به نام deft-punk برنده شده است.در انتها یک نمونه دیگر در Aibo-ers7-urbi.dbt  world تهیه شده است و برای خدمت کردن اساسی برای شبیه سازی Aibo شما می باشد.

 

3. 13. 5  Kiki and URBI

برای یادگیری بیشتر در مورد URBIبرای webot ،ما باید یک نگاه نزدیک تری به ربات Kiki که توسط متن URBI برنامه نویسی شده است ،بیاندازیم.ابتدا world kiki-urbi.wbt در شاخه world URBI باز می کنیم (به صورت اساسی در زیر شاخه project/package/urbi/wprlds از شاخه webot شما واقع شده است ).

اکنون یک ارتباط شبکه تلفنی به localhost روی port 54000(پورت استاندارد URBI ) باز می کنیم و سپس تایپ می کنیم:

stopall; // kiki should stop.

circle: wheelL.val = 300 & wheelR.val = 250; // move in circle

آن سعی می کند و در زمان بعدی ربات به دیوار نزدیک می شود و به سادگی به آن برخورد خواهد کرد .اکنون stopcircle; را برای توقف آن تایپ کنید و سپس تایپ کنید :

wave: wheelL.val = 150 sin:3000 ampli:50 &

wave: wheelR.val = 150 sin:3000 ampli:50 phase:180,

اکنون stopwave را برای توقف همه حرکات تایپ کنید .

 

4. 13 . 5  Going further

توجه :همچنانکه شما با URBI برای webot آزمایش می کنید ،مواظب باشید که وقتی شما شبیه سازی webot  را Stop می کنید آن همچنان منتظر همکاری کنترل گرها می ماند،همچنین  آن منتظر server URBI می ماند ،بنابراین بخش شبکه تلفنی شما پاسخی نخواهد داد تا هنگامی که دکمه Play را بزنید و شبیه سازی دوباره شروع شود .برای داشتن یک نگاه نزدیکتر به چگونگی کار کردن URBI برای webots به شاخه data/kiki بروید و فایلهای بعدی را با متن ویرایشی مورد نظرتان باز کنید :

  • URBI.INI :این متن URBI در هر Start-up از سرور برای این شاخه فعال شده است. در این نمونه ،آن یک alias را شامل می شود ،اجازه می دهد به شما برای استفاده Wheels تا به هر دو چرخ مراجعه کنید ،و آن همچنین با متن نمایشی tutl.u بار می شود.
  • Tutl.u :این متن اصلی URBI برای کنترل کردن ربات kiki هست.

شما می توانید اکنون طراحی متنهای خودتان را شروع کنید و آنها را از فایلURBI.ini load  نمایید.

 

5. 13. 5  Creat your own URBI Based controller

برای تنظیم قرار دادن هر ربات با خصوصیات ویژه،webot  از قرار دادن روشهایی که کاملا پشتیبانی شده اند بوسیله URBI برای webots استفاده می کند.لطفا برای یادگیری بیشتر official URBI for Webots documential را مطالعه نمایید .شاد باشید با URBI !!

 

14. 5 Interfacing Webots to third party software with TCP/IP

1. 14. 5 Overview

اگر شما نمی خواهید کنترل گرهای ربات خود را با استفاده کردن از C,C++,Java یا Python توسعه دهید ،این ممکن هست webot با سومین بخش نرم افزار ،مثل MathLab,Lisp,Lab View,… متصل شود .

مانند یک واسطه می تواند انجام بدهد در میان یک پروتکل TCP/IP که شما می توانید برای خودتان آن را تعریف کنید .تلاش دیگر با MatLab ،برنامه نویسی های MatLab به عنوان واسطه استفاده شده است (بخش بعدی را ببینید).webot با یک نمونه مواجه است. در یک ربات Khepera شبیه سازی شده از راه TCP/IP هر برنامه بخش سوم قادر است با ارتباط یک TCP/IP بخواند و بنویسد.این نمونه worlds نامیده می شود Khepera-tcpip.wbt ،و می تواند در شاخه projects/robots/khepera/worlds از webot یافت شود.ربات khepera شبیه سازی شده بوسیله کنترل گر tcpip کنترل می شود که در شاخه Controllers از همان پروژه قرار دارد .این کنترل گر C کوچک با منبع کد کامل در tcpip.c می آید ،بنابراین شما می توانید تعریف کنید آن را در جایی که شما نیاز دارید .یک نمونه Client تهیه شده در client.c موجود است .این client شاید استفاده شود به عنوان نمونه ای برای نوشتن شبیه نمونه در سومین بخش نرم افزاری شما برای برنامه نویسی زبان استفاده شود.این همیشه در Lisp,MatLab توسط بسیاری از کاربران جای داده شده است .

 

2. 14. 5  Main advantages

در اینجا با چندین مزیت از استفاده کردن این مواجه می شویم .ابتدا شما می توانید چندین ربات شبیه سازی شده داشته باشید در همان world  که استفاده می شود برای چندین نمونه از همان کنترل گر tcpip  استفاده و یک پورت متفاوت TCP/IP دارد،در اینصورت سومین بسته نرم افزاری شما به کنترل چندین ربات از میان چندین ارتباط TCP/IP اجازه می یابد.برای اجازه مراحل ، tcpip یک پورت متفاوت باز می شود وابسته به ربات کنترل شده ،شما باید یک Name  متفاوت به هر ربات بدهید و از robot-get-name()در کنترل گر tcpip استفاده نمایید برای بازیافتن این نام و تصمیم بگیرید کدام پورت برای هر ربات باز شود .دومین مزیت این هست که شما می توانید همچنین یک Khepera واقعی را از سومین بسته نرم افزاری خود بدون نوشتن یک خط از کد از راه دور کنترل کنید.بسادگی اتصال به مد کنترل از راه دور در پنجره Khepera با ورود و خروج ربات واقعی از میان خط سریال اجرا خواهد شد.سومین مزیت ای است که شما می توانید برنامه کنترل گر خود را بر روی یک شبکه از کامپیوترها گسترده نمایید .این بخصوص مفید است اگر برنامه های کنترل گر بخواهد بر روی الگوریتم های پیچیده اجرا شود مانند الگوریتم های ژنتیکی یا سایر تکنیک های آموزشی .در انتها شما باید یک ربات کنترل شده را قرار بدهید برای مد هم زمانی یا ناهم زمانی وابسته به آنچه که شما نمی خواهید شبیه ساز webot برای فرمانهای کنترل گر شما منتظر بماند .در مد هم زمانی (با محدوده synchronaization از ربات معادل با TRUE )،شبیه ساز برای فرمانهای کنترل گر شما منتظر خواهد ماند .مرحله کنترل گر تعریف شده به وسیله پارامتر robot-step کنترل گر tcpip به آن مراجعه خواهد شد.در مد ناهمزمانی (با محدوده synchronaization از ربات قرار گرفته به FALSE )،شبیه ساز به سرعت ممکن بدون منتظر ماندن برای فرمانهای کنترل گر شما اجرا خواهد نمود .در نمونه بعدی ممکن شما بخواهید محدوده runrealtime از نود WorldInfo در پنجره Scene Tree را بررسی نمایید به عبارت دیگر زمان واقعی شبیه سازی را داشته باشید در هر رباتی که شبیه یک ربات حقیقی کنترل شده از میان یک ارتباط ناهم زمان باید داشته باشد.

 

3. 14 .5  Limitation

عقب گرد اصلی  TCP/IP از واسطه شدن این است که اگر ربات شما یک دستگاه دوربین داشته باشد می فرستد عکسهای کنترل گر را از راه TCP/IP ، که ممکن است شبکه متمرکز باشد در اینصورت توصیه می شود داشتن یک شبکه سرعت بالا یا استفاده کنید از دوربین با تجزیه کوچک عکسها ،یا عکسهای داده را قبل از فرستادن آن به کنترل گر فشرده کنید.مطالب بالا بی اهمیت است اگر شما از یک دوربین با تجزیه کم شبیه Khepera K213 استفاده نمایید.

 

4. 14. 5  MatLab TCP/IP toolbox

در نسخه استاندارد MatLab یک طرح واسطه ای TCP/IP تهیه نشده است .در حقیقت یک جعبه ابزار رایگان که TCP/UDP/IP جعبه ابزار 2.0.5 نامیده می شود توسط آقای piter red star  توسعه یافته است و قابل دسترسی است.این جعبه ابزار می تواند در سی دی رام webot (شاخه common/util )پیدا شود .به همان خوبی که در وبسایت MatLab است .آن برای اجرا روی ویندوز ، لینوکس و سایر سیستم های یونیکس شناخته شده است .آن می تواند اجازه استفاده برنامه های MatLab را با ارتباط با کنترل گر tcpip webot برای اجرا به webot بدهد .

 

5. 14 .  5  Gate:a MatLab C interface

یک واسطه MatLab TCP/IP جاوا برای webot ،gate نامیده می شود .و توسعه یافته شده است و با لطف Mr.Harm Aarts از دانشگاه تکنولوژی هلسینکی گردآوری شده است .این بسته توصیه می شود اگر شما با جاوا بهتر از C احساس راحتی می کنید .بسته شامل مطالب می تواند در سی دی رام webot در زیر شاخه util از شاخه common یافت شود .

 

15. 5   MatLab C interface

خصیصه دیگر با MatLab این است که با استفاده MatLab ،و واسطه شدن C ارتباط برقرار می کند با کنترل گر webot به موتور MatLab  .هر اطلاعاتی می توند عبور کند از MatLab شامل برای مثال عکس از یک دوربین webots  و فرمانهای MatLab می تواند دریافت بشود از داخل کنترل گر Webot برای استفاده اطلاعات. تبدیل کردن اطلاعات بین C و MatLab یک مشکل بالقوه هست این درخواست استفاده از تابع mxArray می کند.the MatLab guide توضیح می دهد این جزئیات را در بخشی با عنوان ”Calling MatLab from C and Fortran Programs”.

 

16. 5  Plugins Overview

عملا webot می تواند با اتصال به user-implemented وسیع شود.ضمنا  این جا سه نوع اتصال هستند:physics,Fast2D,sound

 

1. 16. 5 physics plugin

اتصال physics می دهد امکاناتی به افزودن دستورالعمل سنتی ODE که اساسا رفتارهای فیزیکی webot است.به عنوان مثال افزودن یا سنجش نیرو ممکن است.با اضافه کردن نیرو ممکن است در شبیه سازی انجام شده انواع جدیدی از محیط ها یا ابزارها .برای مثال یک باد می تواند مثل یک نیروی پایدار درخواست شده از هر شی در دنیایی با همان مشابهت در اندازه از شی شبیه سازی شود.موتور یک هواپیما می تواند با افزودن نیرویی با همان فشار ،... شبیه سازی شود.

 

2. 16. 5   Fast2D plugin

اتصال Fast2D یک روش بایپس استاندارد سه بعدی و مد شبیه سازی اساسا فیزیکی می دهد.با استفاده از این اتصال نوشتن ساده دو بعدی الگوریتم متحرک و کنترل دو بعدی حرکت یک ربات ممکن است.توزیع گر webot میدهد همیشه یک نسخه انجام شده از اتصال fast2D که”enki” نامیده می شود.اتصال enki سپس نامیده شده است enki2drobot شبیه ساز.لطفا برای اطلاعات بیشتر برای enki به اینجا مراجعه نمایید:http://home.gna.org/enki/ .

 

  1. 16. 5  Sound pluging

اتصال Sound یک برنامه واسطه ای برای ابزارگزاری صدای الگوریتم تبلیغاتی می دهد.صدای شبیه سازی بر صدای نمونه هایی که تبلیغاتی هستند از نودهای Speaker  به Micriphon پایه گذاری شده است.توزیع گر webot همیشه نسخه های انجام شده از صدای اتصالی به نام”swis2d” تهیه می کند.اتصال ”swis2d” با همکاری با گروه سیستم های Swarm-Intelligent در EPFL سوئیس توسعه یافته شده است.

برای اطلاعات بیشتر به اینجا بروید :http://swis.epfl.ch/.

توزیع گر webot  با بعضی ابزار گزاریهای انجام شده و کاربرد نمونه ها برای این اتصالات آمده است.شما اطلاعات بیشتر در این مورد را با مراجعه به راهنمای ضمیمه webot پیدا خواهید نمود.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

بخش 6

Using the e-puck robotUsing the e-puck robot

در این بخش شما چگونگی استفاده از webot را برای ربات e-puck آموزش خواهید گرفت (تصویر 6. 1 ).e-puck ربات مینیاتوری است که در EPFL اساسا برای اهداف آموزشی توسعه یافته است و بوسیله روبات KHepera موفق به طراحی شده است .

سخت افزار و نرم افزار در e-puck کاملا کد باز است .سطح کم دسترسی برای هر  قطعه اکترونیکی و از امکانات نامحدود وسیعی تهیه شده است.وب سایت رسمی  e-puck اغلب اطلاعاتی به روز شده درباره این ربات تهیه می کند  .e-puck همچنین قابل دسترسی برای خریداری از cyberbotic Ltd می باشد .

 

6. 1 مقدمه ای از این ربات

 

 

Figure 6.1: The e-puck robot at work

 

سیر کردن کامل  طراحی e-puck به شرح ذیل لازم است :

  • Elwgant design (طراحی زیبا ) :یک بخش ساده مکانیکی ،طراحی الکترونیک ها و نرم افزار برای e-puck یک نمونه از یک سیستم منظم و مدرن می باشد .
  • قابلیت انعطاف  :e-puck یک رشته وسیع از فعالیتهای آموزشی ،ارائه تعدادی امکانات با سنسورهای خودش، قدرت پردازش و گسترش را در بر می گیرد.
  • نرم افزار شبیه سازی :e-puck با نرم افزار شبیه سازی webot برای برنامه نویسی آسان،شبیه سازی و کنترل از را دور webot کامل گردیده است.
  • مساعد استفاده کردن :e-puck   کوچک وآسان برای نصب بر روی میز بلند بر روی یک کامپیوتر می باشد .به هیچ کابلی نیاز ندارد ،در اینصورت طرز کاری راحت دارد .
  • تنومند و تعمیر :e-puck برای  استفاده اهل تحقیق و تعمیر آسان ارتجاعی هست .
  • توانایی تهیه کردن :برچسب قیمت برای e-puck برای بودجه دانشگاهی مناسب است .ملزومات e-puck با یک گروه از بخش ها بصورت خلاصه در جدول زیر نشان داده شده است :

 

 

Description

Feature

about 7 cm in diameter

Size

about 3 hours with the provided 5Wh LiION rechargeable battery

Battery

Microchip dsPIC 30F6014A @ 60MHz (about 15 MIPS)

Processor

8 infra-red sensors measuring ambient light and proximity of obstacles in a 4

cm range

Motors

8 infra-red sensors measuring ambient light and proximity of obstacles in a 4

cm range

IR sensors

color camera with a maximum resolution of 640x480 (typical use: 52x39 or

640x1)

Camera

3 omni-directional microphones for sound localization

Microphones

3D accelerometer along the X, Y and Z axis

Accelerometer

8 red LEDs on the ring and one green LED on the body

LEDs

on-board speaker capable of playing WAV or tone sounds.

Speaker

16 position rotating switch

Switch

Bluetooth for robot-computer and robot-robot wireless communication

Bluetooth

infra-red LED for receiving standard remote control commands

Remote Control

expansion bus to add new possibilities to your robot

Expansion bus

C programming with the GNU GCC compiler system

Programming

Webots STD or EDU facilitates the programming of e-puck with a powerful

simulation, remote control and cross-compilation system.

Simulation

6. 2 مدل شبیه سازی

مدل e-puch در webot در عکس 6. 2 رسم شده است .این مدل پشتیبانی برای موتورهای چرخی (شامل شدن یک شبیه سازی از کد گزاریها) ،گیرنده های مادون قرمز برای نزدیکی و سنجش نور ،شتای سنج،دوربین و 8 موقعیت استقرار LED راشامل می شود.

 

 

Figure 6.2: The e-puck model in Webots

سایر بخشهای e-puck هنوز در یک مدل درست شبیه سازی نشده اند .مدل استاندارد e-puck در فایل پیکربندی EPuck.proto که در شاخه projects/default/protos/robots از توزیع webot   قرار دارند .تعدادی از نمونه ها در محل شاخه projects/robots/e-puck/worlds از توزیع webot هستند .

 

 

Figure 6.3: The e-puck control window for simulation

 

رزولوشن برای دوربین محدود به 39×52 پیکسل می شود .و به اینگونه حدااکثر عکس مستطیلی با نسبت 4:3 می باشد .که می تواند بواسطه ریموت کنترل از یک ربات واقعی دریافت شود .مدل دیگر در World  e-puck_line.wbt قرار گرفته است (عکس 4. 6)،که به پشتیبانی گیرنده های کف می افزاید .

گیرنده های کف می توانند به یک ربات حقیقی e-puck افزوده شوند و بوسیله یک کارت وسیع تخصصی با سه گیرنده درست زیر دوربین ربات قرار داده می شوند .که به روبات e-puck اجازه می دهد بخش رنگ زمینه را در 3 موقعیت در یک خط عبوری در جلوی خودش ببیند این بخصوص برای تکمیل کردن تعقیب رفتارهای خط، مفید هست.برنامه کنترل گر e-puck_line منابع کد برای یک سیستم ساده پیشرو را شامل می شود که شبیه یک تمرین نمی تواند گسترش یابد تا زمانیکه رفتار در e-puck_line_demo.wbt نشان داده شود .در هر ربات e-puck توانایی کشیدن خط پیشرو روی زمین دارد اما در مورد موانع و بازگشت به خط اولیه رفتاری بعدا روشن خواهیم نمود .این مدل توزیع شده است توسط Jean-Christophe Zuffery از EPFL کسی که یک سری از مهارت ها با ربات  e-puck را در webot گسترش داده است .

 

 

 

Figure 6.4: An e-puck extension for line following

 

 

3. 6 Control Interface

1. 3. 6 پنجره کنترل

وقتی یکworld را باز می کنید شامل یک روبات e-puck ،webot پنجره کنترل e-puck را نمایش می دهد (که ظاهر می شود همچنین هنگامیکه شما دوبار کلیک روی روبات e-puck نمایید) .این پنجره در عکس 5. 6 و 3. 6 رسم شده است .آن تجسم بخشهای یک رباط را اجازه می دهد .بخشهای فاصله به رنگ آبی نشان داده شده اند ،خارج از بدن روبات .بخشهای نوری جلوی بدن ربات به رنگ خاکستری نشان داده شده اند .10 LED هنگامیکه خاموشند به رنگ خاکستری و هنگام روشن به رنگ سبز یا قرمز می باشند .موتور سرعت به رنگ قرمز نمایش داده شده است ،موتور موقعیت به رنگ خاکستری درست زیر هر موتور سرعت نشان داده شده است .مقدار گیرنده کف (اگر باشند) در بالای بدن نشان داده می شوند. دوربین عکس (اگر باشد) در پنجره شبیه سازی نمایش داده می شود .این پنجره کنترل e-puck بدلیلModel از نود  DiffrentialWheel در فایل world ،که قرار گرفته در e-puck ظاهر می شود.تعویض این Modelبا رشته خالی این پنجره کنترل را غیر فعال می کند .

 

 

Figure 6.5: The e-puck control window for remote control

 

  1. 3. 6  BotStudio

BotStudio یک user interface برای برنامه نویسی گرافیکی e-puck هست آدم مکانیکی ظاهر محدود هست .حرکت کردن همانند تعقیب دیوار ،دوری کردن از برخورد یا تعقیب خط  می تواند با استفاده از  این Interface سریع اجرا شود.Botstudio نوعا برای محدوده آموزشی استفاده می شود .خصوصا برای شروع در رباتیک.

کیفیت یک آدم مکانیکی رابطه دارد با یک فعال کننده e-puck تا موقعی که این تغییر و تبدیل با شرایطی که روی این سنسور ارزش مقدار قرار دارد رابطه داشته باشد .یک تحول موقعی که تمام این شرایط کامل بشوند،بوجود می آیند (AND منطقی).یک OR منطقی می تواند توسط تعدادی تحول بین 2 حالت انجام شود .

محرک های LED ها و موتورها در BotStudio  در دسترس هستند .هر محرک دو لغزنده برای وضع ظاهری مقدار سرعت موتور دارد.توجه که این مقدارها می توانند بوسیله کلیک روی مکان نما از لحاظ لغزنده ثابت نشوند. هر حالت همچنین 10 دکمه چهار گوشی برای حالت ظاهری LEDs دارد.یک دکمه قرمز معنیش این است که LED  روشن است .یک مشکی این معنی را دارد ک که خاموش است و یک خاکستری این معنی را دارد که هیچ تغییر و تحولی رخ نداده است .

در Botstudio فاصله سنسورها و دوربین قابل دسترس هستند.علاوه بر این یک تایمر می تواند برای شرایط های وقت گذراندن توسط ابزار لغزنده استفاده شود.شرایط بر روی یک IR سنسور می تواند توسط کشیدن 8 لغزنده قرمز قرار بگیرد.توجه این هدایت در جهت شرایط می تواند توسط کلیک بر روی بخش خاکستری از لغزنده تعریف شود.در نهایت دوربین برای گرفتن سر نخ از محیط جلویی در e-puck مفید است .یک الگوریتم روی آخرین خط از دوربین پذیرفته می شود و یک رشته بین 0 تا 10 نشان می دهد  باز میگردد اگر یک خط سیاه مشاهده بشود بترتیب از چپ به راست  از محدوده e-puck برای بیننده .

روی این مقدار برای گرفتن یک حرکت خط تعقیبی یک شرایط میتواند قرار بگیرد.

BotStudio در تصویر 6. 6 نشان داده شده است .یک نمونه از BotStudio می توانید توسط باز کردن فایل projects/robots/e-puck/worlds/e-puck botstudio.wbt پیدا کنید.پنجره های BotStudio زمانی که کنترل گر e-puck روی یک فایل .bsg اشاره بشود ، ظاهر می شوند.

 

Figure 6.6: BotStudio

 

3. 3. 6 Bluetooth Remote control

e-puck یک blutooth داخلی دارد که اجازه ارتباط با webot را می دهد .این بلوتوث داخلی بایستی مطابق هدایتگر سیستم شما نصب شود. که پیروی از راهنمای e-puck می کند .

این آزمایش بر روی ویندوز،لینوکس،سیستم عامل مکینتاش موفقیت آمیز بوده است .اولین موقع که بلوتوث شما ارتباط با e-puck شما برقرار می کند باید در دومین منوی popup از پنجره کنترل بعد از راه اندازی دوباره webots شما ظاهر شود.اگر ظاهر نشود این معنی را دارد که کامپیوتر شما آمادگی پیکربندی در جهت داخل با ربات e-puck شما بواسطه بلوتوث را ندارد .لطفا به راهنمای داخل متن e-puck  مراجعه نمایید.

زمانی که یک ارتباط ویژه در منوی popup از پنجره کنترل انتخاب می کنید،webots سعی در ساختن یک ارتباط با ربات e-puck شما رادارد.اولین ارتباط ،نسخه از نرم افزار ارتباطی سریال e-puck در حالت bar از پنجره کنترل را نمایش می دهد(نمایش در تصویر 5. 6 ) و کنترل با ربات واقغی سوئیچ می خورد. این فرمانهای موتور و نمایش اطلاعات سنسور (مجاورت ،نور ،تصاویر دوربین و غیره) در جهت ربات واقعی را خواهد فرستاد . این انتقال شبیه سازی برای ربات ساده واقعی فراهم می کند. توجه اینکه در تعدادی منوی popup ،آیتم منوی Refresh COM port برای بروزرسانی پورتهای COM می تواند استفاده شود .

ریموت کنترل دو چیز لازم دارد  : بلوتوث درست نصب شده باشد (روی کامپیوتر) و e-puck بایستی با آخرین سخت افزار webots ،برنامه نویسی شود .برای تنظیمات بلوتوث لطفا به وب سایت e-puck  مراجعه نمایید.برای آپلود آخرین سخت افزار روی ربات شما، سوئیچ روی ربات شما،آیتم منویTools/Upload to e-puck robot… از پنجره اصلی webot شما ،انتخاب کنید (x.x.x بایست با نسخه سخت افزار جاری شما جایگزین شود ) .

 

4. 3. 6  Cross-Compilation

یک چاره در فصل رموت کنترل برای راه اندازی e-puck   واقعی Cross-compile کردن کد شما و آپلود کردن این روی e-puck می باشد  .

برای استفاده از این خصیصه ، کد شما مجبور است در C در جهت C webots API نوشته شود .شما نیاز به تعریف یک Makefile ویژه دارید که Makefile.e-puck در شاخه کنترلر نامیده می شود.این Makefile شامل موارد زیر می باشد :

include $(WEBOTS_HOME_PATH)/transfer/e-puck/libepuck/Makefile.include

 

 

توجه برای آنکه آیتم منوی Tools/Upload to e-puck robot… از پنجره اصلی اجازه به شما می دهد برای Upload یک فایل معمولی که توسط Cross-Compile با .hex برای ربات e-puck شما توسعه پیدا می کند .

برای نمونه از Cross-Compile می توانید در زیر شاخه Projects/robots/e-puck/controllers/e-puck_crosscompilation از شاخه webots شماپیدا کنید .

 

 

 



> php -S localhost:8000