سلام.
IR های 3 میل بهتره یا 5 میل؟
کاربرد هر کدومشون چیه؟
به نظر من 3 میل بهتره به دو علت !
یکی این که برد سنسورت میتونی نزدیک سطح زمین بزاری و به دو تا پلکسی که قطر آن 4 یا 5 میل هست برای برد سنسورت اسکی بزاری !
دوم من شنیدم سنسور 3 میل تقریبا نورش رو لیزری میفرسه که خودم باور نکردم و همچنین اگه برای برد سنسورت از 3میل استفاده کنی چرخ های کوچک تری ، نسبت به حالتی که با سنسور 5میل هست ، میتونی بزاری.
به هر حال معمولا از 3 میل استفاده میکنن که اونم بیشتر به علت این هست که میتونن گیری اسکی بزارن واسه برد سنسور!
« با هر دستی بدی , با همان دست پس خواهی گرفت »
این جمله رو فراموش نکن
سلام.
IR های 3 میل بهتره یا 5 میل؟
کاربرد هر کدومشون چیه؟
سلام
ir های 3 میل توان کمتری دارن و چون توی مسیریاب فاصله سنسور زیاد نیست از اونا استفاده میکنن
5 میل رو بیشتر برای سنجش فاصله استفاده میکنن اضافه شده در تاریخ :
اینم برای پل h :
http://www.eca.ir/forum2/index.php?topic=55843.15
1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.
تا اینجا شو بذارین با کد توضیح بدم :>
if(PINA.0==1)
{
count++;
sum += Errs[11];
}
// 24
if(PINC.7==1)
{
count--;
sum -= Errs[11];
}
Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.
// Returning Values
if (count == 0)return 0;
if (count < 0) count = (-1) * count;
return sum/count;
در این قسمت هم مقدار خطا برگردانده میشود.
در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
البته واستون گداشتم :
int LeftDark = 0;
int RightDark = 0;
با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!
فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!
(شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)
ابتکار عمل داشته باشید!!!
من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
اسمم را پدرم انتخواب کرد !
نام خوانوادگی ام را یکی از اجدادم !
دیگه بسه راهم را خودم انتخواب خواهم کرد !
اینم لینک من :
http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767
از دوستانی که به من خصوصی پیام میدن خواهش می کنم به ایمیل من rasadyan@gmail.com میل بفرستن چون
متاسفانه سرم شلوغه به خاطر کارای مقاله و ربات فوتبالیست و خصوصا هوش مصنوعی و ... در نهایت خارج رفتنمه !!!
من با کمال میل در خدمتتونم دوستان! چون خودم عاشق بحث علمی (هوش رباتا) هستم ولی درکم کنید!!!
البته اینو بخاطر خودتون میگم ! چون من دیر به دیر میامم اینجا !!! خلاصه دوستان همهگی ببخشین :redface:
نوشته اصلی توسط roboreza
توی عمل چطور جواب داد؟
راستش خوب بود !!! یعنی عالی بود!!! البته الان ربات دست من نیس و 1.5 ملیون فروختمش به یکی دیگه ! تا به عنوان پروژه دانشجوییش بده به استاد!!!
شما خودتون نظرتون در باره برنامه چیه ؟؟؟
اسمم را پدرم انتخواب کرد !
نام خوانوادگی ام را یکی از اجدادم !
دیگه بسه راهم را خودم انتخواب خواهم کرد !
اینم لینک من :
http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767
من دیده بودم زمان رو هم دخالت میدن!
میخوام بعد امتحانات روی pid کار کنم از مسیریاب شروع کنم فکر کنم خوب باشه
راستش زمان اینجا دخالت داده شده! ولی همچین مهم نیس! چون ضرایب به صورت تجربی تنظیم شده!
ولی اگه بخوای زمان و ضرایب رو دقیق حساب کنی و اعمال کنی در مورد جدول ضرایب نیکلز که واسه PID تنظیمش کردن مظالعه کن
اینم یه منبع خوب
http://en.wikipedia.org/wiki/PID_controller
برای شبیه سازی هم از برنامه متلب استفاده کن !!!
من یک مقاله دارم که یک حمله تو شبکه رئ با pid تشخیص میده !!!
اینم نمودار مقاله منه :
خط قرمز همون خروجی PID هستش ! همونطور که میبینی تو ثانیه 5 حمله تو شبکه شروع میشه ! و مقدار خط قرمز به شدت افزایش پیدا میکنه که باعث تشخیص حمله میشه !!!
اسمم را پدرم انتخواب کرد !
نام خوانوادگی ام را یکی از اجدادم !
دیگه بسه راهم را خودم انتخواب خواهم کرد !
اینم لینک من :
http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767
1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.
تا اینجا شو بذارین با کد توضیح بدم :>
if(PINA.0==1)
{
count++;
sum += Errs[11];
}
// 24
if(PINC.7==1)
{
count--;
sum -= Errs[11];
}
Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.
// Returning Values
if (count == 0)return 0;
if (count < 0) count = (-1) * count;
return sum/count;
در این قسمت هم مقدار خطا برگردانده میشود.
در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
البته واستون گداشتم :
int LeftDark = 0;
int RightDark = 0;
با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!
فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!
(شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)
ابتکار عمل داشته باشید!!!
من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
آقا توضیحاتتون کامل بود ، خیلی ممنون ، اما من زیاد در مورد pid نخوندم و نمیدونم !
با این کدی که شما نوشتین زاویه های 90 درجه رو ربات میتونست بزنه ؟ چون شنیده بودم pid برای زیاویه های زیر 90 درجه خوبه !
بعد شما جزوه ی فارسی در حد آشنایی با pid ندارین ؟
و سوم کلا شما پیشنهاد میکنید مکه دنبال pid برییم یا نریم ؟ :biggrin:
ممنون
« با هر دستی بدی , با همان دست پس خواهی گرفت »
این جمله رو فراموش نکن
آقا توضیحاتتون کامل بود ، خیلی ممنون ، اما من زیاد در مورد pid نخوندم و نمیدونم !
با این کدی که شما نوشتین زاویه های 90 درجه رو ربات میتونست بزنه ؟ چون شنیده بودم pid برای زیاویه های زیر 90 درجه خوبه !
بعد شما جزوه ی فارسی در حد آشنایی با pid ندارین ؟
و سوم کلا شما پیشنهاد میکنید مکه دنبال pid برییم یا نریم ؟ :biggrin:
ممنون
خواهش میکنم
سعی کن انگلیسی یاد بگیری دیگه !!! منبع فارسی متاسفانه ندارم !!! اگه بگردی تو سایت های فارسی زیاد توضیح دادن! ولی فهمش یکم واستون سخته! چون PID در اصل یه موضوع برای تحلیل توابع پیوسته هستش! ولی اینجا ما با برنامه نویسی واسه یه تابع گسسته پیاده سازیش میکنیم!!!
زاویه هم بستگی به اعدادی داره که به آرایه SenErr میدین !!!! ولی من زاویه 110 رو هم با این الگوریتم رد کردم !!!
PID خیلی عالیه ! واسه این ربات هم خوب جواب میده !!!
ولی بعد ساختن این ربات برین سراغ آینده روشن ترررررر.... !
اسمم را پدرم انتخواب کرد !
نام خوانوادگی ام را یکی از اجدادم !
دیگه بسه راهم را خودم انتخواب خواهم کرد !
اینم لینک من :
http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767
سعی کن انگلیسی یاد بگیری دیگه !!! منبع فارسی متاسفانه ندارم !!! اگه بگردی تو سایت های فارسی زیاد توضیح دادن! ولی فهمش یکم واستون سخته! چون PID در اصل یه موضوع برای تحلیل توابع پیوسته هستش! ولی اینجا ما با برنامه نویسی واسه یه تابع گسسته پیاده سازیش میکنیم!!!
زاویه هم بستگی به اعدادی داره که به آرایه SenErr میدین !!!! ولی من زاویه 110 رو هم با این الگوریتم رد کردم !!!
PID خیلی عالیه ! واسه این ربات هم خوب جواب میده !!!
ولی بعد ساختن این ربات برین سراغ آینده روشن ترررررر.... !
1)من Error واسه سنسور های وسط رو صفر در نظر گرفتم..
2) هربار که خط به یک طرف منحرف می شود مقدار خطای مختص اون سنسور به Error کلی اضافه میشه
به یاد داشته باشید که اگه وسط صفر باشه Error های یک طرف رو + و طرف دیگه رو - در نظر میگیریم تا مقدار انتگرال در PID تثبیت شود.
تا اینجا شو بذارین با کد توضیح بدم :>
if(PINA.0==1)
{
count++;
sum += Errs[11];
}
// 24
if(PINC.7==1)
{
count--;
sum -= Errs[11];
}
Sum مقدار کل خطا را پخیره میکند ! یعنی هر سنسوری که خط را دیده خطای خود را به آن اضافه میکند (یک طرف + و طرف دیگر -)
Count چون ممکن است چند سنسور به صورت همزمان خط را ببینند پس با تقسیم Sum/count یک مقدار متوسط از خطا را به عنوان Error به تابع PID برخواهیم گرداند.ولی جون برای سنسور های طرف دیگر Sum را با عدد منفی جمع میکنیم پس باید count را هم کم کنیم.
// Returning Values
if (count == 0)return 0;
if (count < 0) count = (-1) * count;
return sum/count;
در این قسمت هم مقدار خطا برگردانده میشود.
در ضمن باید بگم واسه این که ابتکار عمل رو از شما نگرفته باشم برنامه زمین سیاه با خط سفید رو حذف کردم !!!
البته واستون گداشتم :
int LeftDark = 0;
int RightDark = 0;
با استفاده از این دو متغیر بالا و اضافه کردن 1 خط کد به داخل بعضی از if ها و در نهایت یه if دیگه به آخر تابع زمینه سیاه با خط سفید رو هم شخیص دادم !!!
فقط یه نکته: همون طور که میدونید تو زمینه سیاه اکثر سنسورا سیاه میبینن به جز اونی که رو خطه!!!
ولی تو زمینه سفید اکثر سنسورا سفید میبینن به جز اونایی که رو خطند!!!
(شاید الان میگید که اینو خودمونم میدونستیم!!! پس اگه می دونید چرا از رمز موفقیتی که دارید استفاده نمی کنید؟!)
ابتکار عمل داشته باشید!!!
من روشم رو کامل نگفتم تا ذهن شما رو در داخل ذهن خودم زندانی نکنم !!! همیشه آزاد فکر کنید ... :nerd:
سلام دوباره ،نشستم تحلیل کردم کدی که دادین ، البته توضیحات شما بیشتر کمکم کرد . اون چیزایی که متوجه نشدم رو فهمیدم !
همون طور که گفتین یک طرف + و طرف دیگه - ، یعنی مثلا دو تا سنسور آخری که 1 و 24 اند یکی مثبته و یکی دیگه منفیه ، هیچ تفاوتی هم نداره که سنسور 1 و سنسور هایی که سمت سنسور 1 هستند مثبت باشن و سنسور 24 و سنسور هایی که سمت سنسور 24 هستند منفی باشد . درسته ؟ یعنی منظورم اینه که ما سنسور 1 رو چه از چپ فرض کنیم و سنسور های دیگه رو به همین ترتیب و چه از راست فرض کنیم و سنسور های دیگه رو به همین ترتیب ، مشکلی پیش نمیاد ؟؟
بعد از آرایه ی errs 13 و 15 استفاده نکردین ، چرا ؟ برای زمین سیاه با خط سفید هست ؟
ممنون
« با هر دستی بدی , با همان دست پس خواهی گرفت »
این جمله رو فراموش نکن
نه هیچ فرقی نداره امیر جان !!! فقط یادت باشه اگه دیدی ربات به جای اینکه به سمت خط بره ازش فرار میکنه توی تابع PID اون جایی که نوشته :
کد:
Drive(Top - Turn,Top + Turn);
اونو اینطوری عوضش کن :
کد:
Drive(Top + Turn,Top - Turn);
در ضمن من توی کد از 13 و 15 استفاده کردم !!! (برنامه نویسیتو قویتر کن )
Errs[11]=15
و
Errs[10]=11
Errs یک آرایه هستش که وقتی میگیم Errs[11] یعنی خانه 11 این آرایه ! تو خانه 11 این آرایه هم عدد 15 وجود داره نه خود 11 ! اضافه شده در تاریخ :
گفتم که این برنامه واسه زمین سفید با خط سیاه نوشته شده (حالت معمولی ) و برای اینکه ابتکار عمل شما زیر سوال نره من زمین سیاه با خط سفید رو تو این سورس کد ننوشتم !!! اینشو خودت حل کن دیگه :biggrin: !!!! (البته کمک می کنیم !) :nerd:
اسمم را پدرم انتخواب کرد !
نام خوانوادگی ام را یکی از اجدادم !
دیگه بسه راهم را خودم انتخواب خواهم کرد !
اینم لینک من :
http://www.eca.ir/forum2/index.php?topic=1721.msg585767#msg585767
دیدگاه