PDA

View Full Version : کمک در رابطه با ساختن دست روبات در جاوا



yashar2012
سه شنبه 09 مرداد 1386, 21:30 عصر
سلام

من درس جاوا رو میخونم استاد ما از ماخواسته که دسته روباتی رو طراحی کنیم که 2 نوع حرکت داشته باشه

اول این که فضا 2 بعدی باید باشه

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

و بعدش گفت که دست روبات ما فقط 3 تا انگشت داشته باشه

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

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

yashar2012
چهارشنبه 10 مرداد 1386, 15:09 عصر
یعنی فردی نیست که بتونه به من کمک کنه

unhandled_event
پنج شنبه 11 مرداد 1386, 14:23 عصر
سلام

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

robot arm simulation java swing
و اما اصل مطلب :
خب اولین و شاید مهمترین قدم مدلسازی برنامه است. اگر کار به این شکل نباشه شاید هیچوقت به نتیجه نرسه. مدلسازی در اینجا یعنی دیدگاه و تصور objective و object orianted از هرآنچه که تو حیطه این برنامه به ذهنت میرسه. مثلا تو تدریس جاوا همیشه مثالهای کلاسیکی از جعبه ، حیوان یا میوه وجود میزنن.مدلسازی یعنی بدون اینکه تصوری از عینت یا تجلی ظاهری چیزی داشته باشیم بتوونیم اون رو تصور کنیم درکش کنیم و رو کاغذ بیاریم بهترین مثالش اینهمه مدل ریاضی برای پدیده های فیزیکه. مثلا من جعبه ای دارم که سه بعد x , y , z داره میتونم اینها رو مقدار بدم مثلا بگم جعبه ای دارم به ابعاد 10 و 5 و 20. خب دست روبات ( یا حالا بگیم دست انسان) میشه ترکیبی از ماهیچه ، مفصل ، عصب ، انگشت و ساعد و مچ و بافت. هرکدوم از اینها میشن یک کلاس که بعضی با بعضی مرتبط هستن مثلا یکی یه نوع از دیگری داخل خودش داره و یا میتونه متدی رو از یکی دیگه فراخوانی کنه. و هرکدوم همیشه در وضعیتی خاص هستن. طبیعتا وضعیت اولیه یا وضعیت صفری هم وجود داره. یعنی زمانیکه از همه کلاسها inscance ساخته میشه. هر کدوم مکنه ترکیبی باشن مثلا انگشت خودش شامل مفصل ، استخوان ، ماهیچه و بافته. یا مچ ترکیبی ازچندین مفصل با زاویه حرکتی مختلف پس ما یک سری کلاسهای پایه مثل ماهیچه داریم و یک سری کلاسهای ترکیبی مثل ساعد و یا انگشت و مچ. مفصلها کلاسهای جدایی هستن که مشخص میکنن چی به چی متصل شده و دامنه حرکتش چقدره. به ماهیچه ها اعصابی وصل شده که فرمان میگیره. ماهیچه میتونه انقباض و انبساط داشته باشه که نهایتا حرکت رو شبیه سازی کنه. در هر حرکت زاویه بین دو شی ء عوض میشه. مثلا حرکت انگشت زاویه بین دو قسمت انگشت تغییر میکنه. برای همه این روابط یک نمودار uml قشنگ هم درمیاد والسلام !
اگر برنامه ای بنویسی که فرمان حرکت بده به عصبهای دست و اونها هم طبق رفتار تعریف شده عکس العمل نشون بدن یعنی وضعیت عددیشون تغییر کنه فکر کنم تا همین جا دو سوم نمره رو گرفتی.
هنوز هیچ ذهنیتی نداریم که اینها چه شکلی دارن اما ویژگیها و رفتارشون رو مدل کردیم. در این مرحله نمیدونیم که قراره با swing کار کنیم و یا رفتار رو به شکل عدد و رقم شبیه سازی کنیم و در System.out نمایش بدیم.
خب این شد یه مدلسازی نصفه و نیمه و الکی اما قدرت خلاقیت یعنی مدلسازی قوی و اتمیک.
اگر برنامه قشنگ دربیاد حتی میشه برای دست واقعی روبات هم ازش استفاده کرد .
این مرحله که تموم شد میریم سراغ render شدن بوسیله swing.


http://java.sun.com/docs/books/tutorial/uiswing

میشه اسم کلاس نهایی مدل روبات رو گذاشت RobotArmModel
به ازای تمام کلاسهای مدل میشه در swing یک کلاس داشت برای render کردن اون بخش مثلا PointFingerRender که انگشت اشاره است و یک PointFingerModel از کلاس RobotArmModel بهش Bind یا مقید میشه.


PointFingerRender pfr = new PointFingerRender()
pfr.setModel(robotarmmodel.getPointFingerModel())


PointFingerRender شامل چند تا خط و مستطیل رنگیه ( بسته به سلیقه و هنر )
که با توجه به مقادیر PointFingerModel در جایی از صفحه نقاشی میشه.
یا مفصل یک دایره توپر و ماهیچه چند تا خط و انگشت یک استوانه. حتی به شکل texture های دو بعدی اینها دیگه کار گرافیکی میخواد فقط باید با هر بار تغییر کردن robotarmmodel قسمتهای معادل در render دوباره نقاشی بشن. :متفکر:

امیدوارم کمک کوچکی کرده باشم
موفق باشی

yashar2012
جمعه 12 مرداد 1386, 15:17 عصر
مرسی از بابت راهنمایی پیشرفته ات اما همان طور که گفتم دستی که من باید بسازم توی فضای دو بعدی هستش و 2 نوع حرکت هم بیشتر نداره و ظاهر دست هم زیاد سختگیرانه نیست که مثلا شکل واقعی دست رو داشته باشه و یا ما هیچه و غیره معلوم باشه

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