PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : دایره مشکی در ربات مسیر یاب



mona_rere
12-12-2013, 21:40
سلام دوستان.مدت 6و7 ماه دارم توی زمینه رباتیک کار میکنم.فعلا ربات مسیر یاب ساده ساختم.یه تیکه توی برنامه نویسی هست که بدجوری به مشکل خوردم توش...

رباتم تمام مسیر ها و لوپ ها رو میره،فقط یه دایره مشکی رو نمیره...یعنی قسمت تابع مشکی مشکل ایجاد میکنه...چیکارش باید بکنم....خیلی تلاش کردم ولی نشد...شکل مسیر و نوع چینش سنسور هارو واستون میزام...ممنون میشم اگه تکه کدی یا راهنمایی کوچیکی بهم بکنید واقعا یه دنیا ازتون ممنون میشم...You can see links before reply

یه نکته...اگه میشه با بسکام باشه...ممنون از همه

M3R
12-12-2013, 23:25
سلام.
شما کلا تو زمینهایی که شکلهایی مثل مثلث،دایره،مربع و ..... وجود داره اصلا نیازی به برنامه نویسی اضافه ندارید!
همین که شما شرطی رو برای این قسمتها تعریف نکنید ربات به شرط قبلی (مسیر مستقیم) عمل میکنه و از این شکلها عبور میکنه!
موفق باشی:wink:

mona_rere
12-12-2013, 23:34
سلام.ممنون از کمکتون. مشکل اینجاست که من یه شرط گذاشتم که اگه تعداد سنسور های 1 بیشتر از 4 شد یعنی زمینه مشکی و خط سفید در نتیجه وارد تابع مشکی میشه...

حالا وقتی فرضا 5 تا سنسور وارد دایره شدن میره تو حالت مشکی و چون سنسور های گوشه هنوز صفر هستن ربات دور خودش میچرخه.... یا دور میزنه بر میگرده :(

M3R
12-12-2013, 23:44
شما شرطها رو برای زمین مشکی درست ننوشتین!!
یکی از ساده ترین راه هاش اینه که تمام شرطها رو تو یه حقله بنویسید هم زمینه سفید و هم مشکی به صورت زیر:

if sens=&b0001000 then .....
if sens=&b0000100 then ....
if sens=&b1110111 then ....
if sens=&b01111111 then ....
هم برای زمینه سفید و هم مشکی
اگه متوجه نشدید بگید تا بیشتر توضیح بدم

mona_rere
12-12-2013, 23:49
ببینین این کد منه:

All = Pinb.0 + Pinb.1 : All = All + Pinb.2 : All = All + Pinb.3 : All = All + Pinb.4 : All = All + Pinb.5 : All = All + Pinb.5 : All = All + Pinb.6 : All = All + Pinb.7

If All > 3 Then
Goto Black
Else
Goto White
End If

If Pinb.0 = 0 Then
Pwm1a = 920
Pwm1b = 1023
Goto Mback1

End If

If Pinb.1 = 0 Then
Pwm1a = 400
Pwm1b = 1023
Goto Mstop1

End If

If Pinb.2 = 0 Then
Pwm1a = 600
Pwm1b = 1023
Goto Mgo
end if

برای زمینه سفید هم همینه فقط 0 -1 شده این یعنی اشتباهه؟ دوستم نوشته لامصب نمیدونم چیکار کرده...البته از کسی کمک گرفته...

من اگه بیام همینجوری با باینری هم بنویسم نهایت میشه 0111111 درسته؟ که توی یه همچین حالتی ربات به سمت چپ گردش میکنه یعنی یه ذره مونده که ربات وارد دایره بشه... همینه که کار من رو خراب میکنه لعنتی...

M3R
12-12-2013, 23:58
ببینید شما به راحتی میتونید از دستور select case استفاده کنید و اینکه اگر اعداد رو به صورت باینری بنویسید خودتون راحت تر هستید!
یه برنامه از قدیم تو سیستم مونده که مال یه ربات مسیر یاب 16 سنسوره هست!
فایل رو پیوست میکنم یه نگاهی بندازید اگه جایی متوجه نشدید بگید تا توضیح بدم.

mona_rere
13-12-2013, 00:04
ممنون حاج آقا فقط من چطوری بش بگم اگه حالت 01111111 و 11111110 پیش اومد تو دایره مشکی مستقیم برو ولی تو زمینه مشکی بپیچ؟

M3R
13-12-2013, 00:15
ممنون حاج آقا فقط من چطوری بش بگم اگه حالت 01111111 و 11111110 پیش اومد تو دایره مشکی مستقیم برو ولی تو زمینه مشکی بپیچ؟
اصلا نیازی نیست شما چنین شرطهایی رو تعریف کنید!
شما فرض کنید زمینه مشکی=0 زمینه سفید=1
ربات شما یه مسیری رو طی میکنه و میرسه به یه دایره و یا مربع که حالت سنسورها به صورت زیر میشه (فرض میکنیم ربات 7 سنسور داره):
1000001 و یا 1100011 و یا هر حالت دیگه!
اگر شما این شرطها رو برای ربات تعریف نکرده باشید ربات به شرط قبلی که همون مسیر مستقیم بوده ادامه میده!

M3R
13-12-2013, 09:15
ممنون حاج آقا فقط من چطوری بش بگم اگه حالت 01111111 و 11111110 پیش اومد تو دایره مشکی مستقیم برو ولی تو زمینه مشکی بپیچ؟

ببخشید من اشتباه بهتون گفتم :sa:
به این حالت که گفتید درست توجه نکردم!
اگه این حالت برای ربات شما پیش میاد شما یا باید ابعاد برد سنسور رو بزرگتر بگیرید که حالتی مثل 0011100 یا 0111110 پیش بیاد یا کوچیکتر بگیرید که کلا تمام سنسورهاتون برن روی دایره (به نظر من بزرگتر بگیرید بهتر هست)
شما ابعاد برد سنسورتون (فاصله اولین سنسور تا آخرین سنسور) چقدر هست؟
قطر دایره رو چقدر گذاشتید؟

mona_rere
13-12-2013, 12:36
این ابعاد خوبه چون ربات دوستم دقیقا مثل برد سنسور منه.فکر میکنم مشکل اینجاست که ربات من کج وارد دایره میشه احتمال میدم مشکل از یکی از چرخامه.... واقعا ازتون ممنونم دوست عزیز موفق باشید.

درباره lookup table chizi midonin?
یه ربات 24 سنسوره دارم میخوام براش برنامه خفن بنویسم جوری که روی تمام پیست ها حرکت کنه

M3R
13-12-2013, 13:18
درباره lookup table chizi midonin?
این کتاب رو بخونید مشکلی داشتید مطرح کنید.
دانلود ویرایش دوم کتاب اصول کار با میکرو کنترلر های avr و کامپایلر بسکام - ایـــــــــران میـــــــکرو ™ (You can see links before reply)

morteza_rk
13-12-2013, 18:32
فکر میکنم مشکل اینجاست که ربات من کج وارد دایره میشه

مشکل از همین جاست به احتمال زیاد. در وهله ی اول باید بگم که بهترین روش برای اون دایره ننوشتن شرط هست ، همونطوریکه دوستان اشاره کردن. حالا اگه لحظه ی وارد شدن ربات به دایره با یکی از کدهای دیگه اشتباه میشه شما باید بررسی کنید که علت چیه؟

معمولا علتش همین غیرمستقیم واردشدن به محیط جدید هست. برای رفع حالت زگزاکی ربات بهترین روش استفاده از PWM هست. لطفا به تاپیک زیر هم یه نگاهی بندازید :

You can see links before reply

modj.ir
13-12-2013, 18:46
برنامه ای که نوشتید مناسب تعریف حالتها زیاد نیست و به طور حتم اکثر شرایط مسابقات رو برآورده نمی کنه.

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

mona_rere
13-12-2013, 21:14
آخه ربات دوستم دقیقا مثل ربات منه ولی تمام حالت هارو به سادگی رد میکنه....

استادمون میگه برنامش خاص و ساده هست...

modj.ir
13-12-2013, 22:24
برنامه دوست شما خاص نیست، بلکه اساس برنامه نویسی شما باعث خطا میشه. برنامه رو برام بفرستید اگر فرضت شد با اصلاحات ساده ای اون رو آمده کنم

mona_rere
14-12-2013, 00:14
دست همه دوستان درد نکنه فعلا که پیست رو بردن امکان تست گیری نیست

modj.ir حتما برنامه رو میفرستم دستتون واقعا درد نکنه